要件定義初心者の自分が、要件定義を日々行っていく中で、大事だなと感じたことを記事にしていこうと思います。
要件定義の話に入る前に、以下のような例を出しておきます。
要件定義はRPG
ドラ○エやファイナル○ァンタジーのようなRPGを思い浮かべてください。
RPGの主な流れとして、
勇者
が魔王
を倒して、世界平和にする
このような構成になっていると思います。
これを目的
・目標
・手段
に当てはめてみます。(様々な当てはめかたがあると思いますが)
目的
:世界を平和にする
目標
:魔王を倒す
手段
:勇者のレベルを上げる
以上を踏まえて本題に入っていきます。
要件定義
まず初めに、用語を定義しておきます。
クライアント
: ここでは、営業さん、webディレクターさん等、エンジニアに要求
を持ってくる人達のことを指すとします。
そもそも要件定義とはクライアントの要求
に対して、クライアント
とエンジニア
で認識合わせを行い、どう対応するのかを決めていくものです。
ここで、クライアントの要求
に関して言及すると、多くの場合クライアントの要求
は上のRPGの話でいうところの目標
である場合がほとんどです。
例を挙げて説明すると
競合他社には掲載されている情報を自社サイトにも掲載してほしい
という要求がクライアントから来たとします。これは目標
に該当しています。
この要求
の裏には、
他社サイトにある情報をしっかりと自社サイトでも提供し、他社サイトに流れてしまうのを防ぐ
という目的
があります。
この目的
を飛ばして、目標
の部分がエンジニアに要求
として降ってくる場合が多いです。
重要なのは、なんのためにそのタスクを行うのか・そのタスクを達成するとどんなメリットがあるのかという目的
の部分をしっかりと聞き出す事です。
ただ言われた目標
の部分を遂行しているだけでは、根本的な問題解決にはならないしエンジニアのリソースの無駄遣いになりかねません。
目標
の裏にある、目的
のヒアリングを行う。
これが要件定義の第一段階です。
エンジニアは手段の提案のプロ
目的
のヒアリングを行いお互いに認識を合わせた後は、その目的
に即した目標
を達成するための手段
をどうするか決めていきます。
システム関連では、エンジニアは手段の提案のプロであるため、クライアントの要求
に対して最適な手段
を提案できなければなりません。
最適な手段
を提案するためには、様々な技術に精通しておかなければならず、そのためには日々新しい技術に触れ続け、自分の引き出しを可能な限り広げておくことが必要です。
自分もまだプログラミング初心者で要件定義の際、この技術の引き出しの少なさに悩んでいます。
しかしこればかりはもう、地道に積み重ねていくしかないと思います。
## まとめ
というわけで、要件定義をする上で需要なことをまとめると
相手の要求の裏にある目的
の部分をしっかりと聞き出し、その対応策を考える。
最適な対応策を提案するために日々自分の技術に磨きをかけ、
自分の提案できる手段
の引き出しを広げていく。
だと思います。
以上でこちらの記事を締めくくります。
ご閲覧ありがとうございました。