
システム開発って必ず要件定義から始めますがなんだか面倒そうで…



確かに何もないところからのスタートだからスキルは必要ですね



そうなんです。なのでいきなり設計から始めたらダメなんでしょうか
はじめに
システム開発において、「要件定義を省略して早く開発を始めたい」という声をよく耳にします。しかし、これは非常に危険な考え方です。今回は、要件定義を飛ばしてはいけない理由について解説していきます。
そもそも要件定義とは?
まずは要件定義について簡単に説明します。要件定義とは、「システムで実現したいことを明確にする作業」です。
例えばお店の注文システムを作るとしたらこのようなことを決めています。
- どんな商品を扱うのか
- 商品のカテゴリー分類は?
- 在庫管理は必要か?
- 商品の写真や詳細情報をどこまで載せるか?
- 支払方法は何を用意するのか
- クレジットカード決済の場合、どの会社に対応するか?
- 電子マネーは導入するか?
- 支払い期限はいつまでか?
- 注文の締切時間は何時にするのか
- 土日祝日の対応はどうするか?
- 締切後のキャンセル対応は?
- 急ぎ注文の受付は可能か?



決めなければならないことって多いんですね
要件定義をとばしたらどうなる?
1. 手戻りが増える
「こんなはずじゃなかった」という状況が発生し、作り直しが必要になります。これは時間とコストの大きな無駄になります。



だいたいそれが発覚するのがすべて開発が終わりクライアントの受入テストのときっていうのが本当に多いんです。
2. コストが予想以上にかかる
開発が進んでから機能を追加したり変更したりすると、予想以上のコストがかかります。最初に要件をしっかり決めておけば、このような追加コストを抑えられます。
工程が先に進めば進むほど修正コストは膨らんでいきます。軽微な修正でなんとかなればいいのですが、最悪要件定義からやり直しというプロジェクトを見たことがありました。
3. スケジュールが大幅に遅れる
要件が明確でないまま開発を進めると、途中で方向性の修正が必要になり、完成までの時間が大幅に延びてしまいます。



確かにスキルは必要ですがそれでもやらなければならない工程なんですね。



はい。最近はアジャイルでの開発が増えてきたので前ほどではありませんが影響がないことはありません。



やらなければならないのなら少しでも要件定義を成功させるためにどうしたらいいでしょうか
要件定義のコツ
では、どうすれば良い要件定義ができるのでしょうか?以下のポイントを押さえましょう。
- システムを使う人(ユーザー)の立場で考える
- システムの利用者が実際にどのように使うのか、どんな課題や不便を感じているのか、どういう機能があれば業務が効率化されるのかなど、実際の利用シーンを具体的にイメージしながら要件を検討することが重要です。
ユーザーの視点を軽視すると、使いづらいシステムになってしまう可能性があります。挙句誰にも使われないシステムができあがってしまうのです。
- システムの利用者が実際にどのように使うのか、どんな課題や不便を感じているのか、どういう機能があれば業務が効率化されるのかなど、実際の利用シーンを具体的にイメージしながら要件を検討することが重要です。
- 「なぜそれが必要か」を常に確認する
- 新しい機能や要件を追加する際は、その必要性を十分に検討することが大切です。「こんな機能があったら便利かも」という漠然とした理由だけで要件を追加すると、開発の複雑化や保守コストの増加につながる可能性があります。とかく担当者にヒアリングをするとあれもこれもほしいという要望をいただきます。
ですが、よくよく聞いてみるとその人しか使わないような機能だったということが想像以上にあります。
クライアントの心理としては、せっかく作るのだから完璧なものを作りたいと考えるようです。
- 新しい機能や要件を追加する際は、その必要性を十分に検討することが大切です。「こんな機能があったら便利かも」という漠然とした理由だけで要件を追加すると、開発の複雑化や保守コストの増加につながる可能性があります。とかく担当者にヒアリングをするとあれもこれもほしいという要望をいただきます。
- できるだけ具体的に記述する
- 要件は曖昧な表現を避け、具体的な数値や条件を含めて記述することが重要です。例えば「処理を速くする」という曖昧な表現ではなく、「データ検索の応答時間を3秒以内にする」というように、明確な基準を設定しましょう。これにより、開発チームが目標を正確に理解し、適切な実装方法を選択できるようになります。
- 関係者全員で合意を取る
- システムの開発には、エンジニアだけでなく、経営者、現場の担当者、システム管理者など、様々な立場の人が関わります。要件定義の段階で全ての関係者から意見を聞き、合意を得ておくことで、後々のトラブルや認識の齟齬を防ぐことができます。特に重要な決定事項については、必ず文書化して関係者全員に共有しましょう。
プロジェクトマネジメントでもステークホルダー(プロジェクトに関わる全ての関係者や組織)を正確に把握することがまず行わなければならない作業です。ここを見誤ると進むものも進まなくなりますので、たとえ面倒でもこの合意形成は手を抜かずに行うことが大事です。
- システムの開発には、エンジニアだけでなく、経営者、現場の担当者、システム管理者など、様々な立場の人が関わります。要件定義の段階で全ての関係者から意見を聞き、合意を得ておくことで、後々のトラブルや認識の齟齬を防ぐことができます。特に重要な決定事項については、必ず文書化して関係者全員に共有しましょう。
要件定義は、システム開発の設計図のようなものです。家を建てる時に設計図なしで建築を始めないのと同じように、システム開発でも要件定義は必要不可欠なステップなのです。
時間がかかるように見えても、要件定義をしっかり行うことで、最終的には開発時間の短縮とコスト削減につながります。新人エンジニアの皆さんは、この重要性をぜひ覚えておいてください。