NEWS & EVENT
お知らせ・イベント情報
ブックレビュー:はじめよう!要件定義 ~ ビギナーからベテランまで
2022年07月25日
システム開発を行う場合、要件定義というワードがよく登場します。しかし、要件定義をどのように行うかか、どのように考えればいいのかちゃんと理解していない人もいるでしょう。
そこで今回は、要件定義についてわかりやすく解説した本を紹介します。取り上げるのは、羽生章宏氏の「始めよう!要件定義~ビギナーからベテランまで」です。
—
本書は2015年に出版され、当時から大変分かりやすいと評判になりました。要件定義の定番本として、今も多くの人がお薦めしています。
本書では、要件定義の進め方について丁寧に解説しています。開発プロジェクトを通して、最も大切になるクライアントやユーザーに対する価値提供を行うために、必要な要素にも言及しています。
著者の羽生章宏氏は、パンチャー・プログラマー・システムエンジニアを経てシステムコンサルタントになり、現在はシステムコンサルテーションサービスなどを手がける株式会社マジカジャパンを経営しながら、ストーリーデザイナー/経営設計コンサルタントとして活躍しています。
本書はどんな人に役立つのか
出版社の紹介ページでは「システム開発プロジェクトを成功させたいエンジニア全般、スタートアップ、中小ソフトハウスに在籍し、開発者として上流から下流まで携わる方」におすすめとしています。
実際に読んでみると、次の3パターンに合致する人に役立つと感じました。
- すでにシステム開発に携わっている人
- これから要件定義の役割を担う人
- 要件定義というものが全く何もわからない人
—
これまでにシステム開発の要件定義を行ったことがある人であれば自分のやり方を見直すきっかけにもなるでしょう。要件を定義する意味や考えるべき要素などにもふれているため、全く何も知らなかった人でも、要件定義に必要な項目をイメージできるようになります。
ネット上のブックレビューや感想などを見ていると、システム開発するエンジニア側だけでなく、システム開発を発注する側やシステム開発の営業担当などにも読んで欲しいという声がありました。要件定義によって、どのようなシステムを作るのか定義していくため、システム開発を発注する人もエンジニアとの間を取り持つ営業担当にも、要件定義についての知識が不可欠になるからです。
本書のポイント
ここからは、本書の内容をふまえて大切だと感じた部分を紹介していきます。
本書の目次は次のようになっています。大きく2部構成になっており、後半で、要件定義の具体的な手順を解説しています。
第1部 要件定義って何だろう?
Chapter-01 要件定義=要件を定義すること
Chapter-02 要件定義の基本的な流れ
Chapter-03 定義すべき要件の内訳
Chapter-04 3つの要素の定め方
第2部 要件定義の詳細
Chapter-05 要件定義,その前に
[準備編]
Chapter-06 企画を確認する
Chapter-07 全体像を描こう
Chapter-08 大まかに区分けしよう
Chapter-09 実装技術を決めよう
Chapter-10 実現したいことを整理整頓しよう
[助走編]
Chapter-11 利用者の行動シナリオを書こう
Chapter-12 概念データモデルを作る
[離陸編]
Chapter-13 UIを考えよう
Chapter-14 機能について考えよう
Chapter-15 データについて考えよう
Chapter-16 要件定義の仕上げ
Chapter-17 要件定義,その後に
要件定義の意味
では、要件定義とは何でしょうか?
本書では、要件定義を“簡単に言うと、作ってほしい人と作る人の間で「これを実現しましょう」と合意を定めること”と表現しています。
一般的に要件定義は、システムを作る側が実施する作業と考えられていますが、システム開発するエンジニアが一方的におこなう作業ではありません。作ってほしい人たちとその作業の結果として合意する必要があるからです。作ってほしい人たちも、一方的にリクエストを出すだけでなく、要件定義の結果を理解しなければなりません。でないと、リクエストした内容が実際に作られるのか判断できないからです。
要件定義は最終的なゴールを定めるための作業です。クライアントの要求や課題をクリアしつつ、実現できる項目・実現できない項目を明確にしなければなりません。そのため本書では、要件定義は「計画段階の作業の1つではあるものの、後工程に必要な要素も検討すべき」としています。
要件定義の流れと大切なポイント
要件定義の流れは次のようになっています。
まずは、作ってほしい人が要望を出します。しかし、要望を出せばそれだけで魔法のように実現できる訳ではありません。要望がぼんやり・ふんわりしていることもあるでしょうし、複数の人が出した要望が互いに矛盾していたり、そもそもシステムで解決できなかったりする場合もあるでしょう。最近のDX(デジタルトランスフォーメーション)という取り組みであれば、あらかじめ正解が分かっていない場合もあるでしょう。
そこで要望を具体的な形にしていくために、誰もが把握できる要求として整理して検討します。
次に、要求に対して、作る人の知見を加えて、実現できないことがあれば代替案を提案して合意に向かっていく、という流れになっています。
要件定義に必要な準備
本書では、要件定義に必要な準備作業も詳しく解説しています。例えば、ゴールが明確でなければ、そもそも細かい要件を定義することもできないため、誰が・何を・どうやって作るのかを表現した企画がプロジェクトには大切な要素だとしています。
また、技術を決める際の考え方についても言及しています。基本的なシステムアーキテクチャを決めたあとソフトウェアの仕様を決めていくのですが、ユーザーアクションも検討しつつ、プログラム言語からデータ変換の方法、データベースの仕様なども決定していく必要があります。
加えて、仕様を一通り決めたあとは、そのシステム・ソフトウェアで実現したいことを一覧としてドキュメント化すべきと述べています。これは、後付けで要望や目的を大きく変化させないための手段です。また後工程になってから、要件定義をしなおす手間を省くためには、発注側と請負側を分離するのではなくチームとして合意を得ていくことが大切だとしています。
要件定義と行動シナリオ
企画書から要件・要求を整理した後は、ユーザーの行動シナリオを検討していきます。厳密にいうと、行動シナリオは一般的なソフトウェア要件定義には含まれないかもしれません。しかし、ユーザーの行動を検討しなければ、ソフトウェアが有用性の高い道具としての役割を果たせないと結論付けています。
また、ユーザーシナリオからユーザーの行動や仕事を準備・行動・成果に分類するという考え方も学ぶことができます。行動するには準備が必要であり、準備も要求に応えられるよう条件を整える必要があります。必要なものを揃えることが準備として仕事の1つになることから、行動シナリオから考えられるシステムへの依頼も明確で品質を保つ必要があるといえるでしょう。
要件定義で決定しなければならないポイント
本書では、要件定義する内容を大きく分けて、UI・機能・データの3つだと語っています。中でもUIは大切な要素だといえます。機能が優れていてもUIが使いづらければ、有用性は高くないと評価されてしまうからです。有用なソフトウェアは、UI・機能・データを決めなければ生み出せないのです。データについても、詳細な説明や区分け、統合の方法にふれています。
さらに、本書では、要件定義の検証についても説明しています。与えられた要求に対して、必要な出力ができるのか、そもそも何か足りないものはないのか、といった考え方を前提に検証を実施していきます。
検証後は、クライアントからの質問に対して質問集を作るなど、システム開発エンジニアとしてスムーズな受け答えする準備も推奨していました。
本書の評価
本書は、エンジニア向けに要件定義について解説した入門書です。ユーザーからのシステムの見え方、システム開発者からの顧客視点やシステムの方向性などにもふれています。
また、それだけにとどまらず、要件定義について体系的な考え方を一般の人にもわかりやすく解説した本になっています。そのため、現在IT系でシステム開発を行っている方だけでなく、今から要件定義をしてもらう可能性がある方にも適しています。
例えば、ユーザーの行動を「仕事」と定義した場合、ユーザー活動の前段階として材料・道具・手順といった要素があることと、本書ならではの表現でわかりやすく説明しています。要件が定義されていないプログラムを作っても、そもそも評価されず成果にもつながらないという考え方は、システム開発だけでなく、他のクリエーションでも同様です。
業務の内容とシステム開発の考え方の関連性も解説している点は、本書のポイントだと感じました。例えば、ユーザーの行動シナリオからシステムに必要な機能が変わってくる点では、次のようなポイントが大切だと述べています。
- ユーザーの行動はあくまでもデータの受け渡しの一部
- データの受け渡しフローの数を無理に減少させようとしない
- あくまでも行動シナリオからシステム開発を行う
—
目次をみれば、著者が利用者側の視点とシステム開発側の視点を上手く織り込んでいることが把握できるでしょう。作業の補助やスムーズな開発のために必要な企画書の作り方、行動シナリオの考え方などは本書を読めば解決できます。
まとめ
ここまで羽生章宏氏の「始めよう!要件定義~ビギナーからベテランまで」を紹介してきました。システムを開発するとき、何をどう作ればいいか整理するのに不可欠な考え方を学ぶことができ、要件定義について解説する定番本として、さすがの内容だと感じました。
大規模なシステム開発プロセスの体系立った要件定義手法をまとめた本ではありませんが、具体的な進め方や考え方を中心にしており、とても実用的な内容になっています。システム開発の中で要件定義にかかわる人は、本書にふれることで、しっかりと取り組めるようになるでしょう。
なお本書は、「はじめよう!プロセス設計 ~ 要件定義のその前に」「はじめよう!システム設計 ~ 要件定義のその後に」という続編が出ていて、上流工程三部作と呼ばれています。残りの2冊についてもブックレビューする予定です。