社会人のメモ帳

忘れたくないことアレコレ

【エンジニアの独り言】要件とか要求とか分かんない

要件とか要求とか分かんない

開発現場で働くにあたって、新人が最初にぶち当たる問題である。要件とか、要求とか、仕様とか、先輩が色々言っているけれど、それぞれ何を指しているのか。それらがどのように自分たちに関わってくるのか。自分が行っている業務とどのようにかかわってくるのか、その繋がりが分からない限り、この問題は解決しない。

英単語の意味ばかり覚えても使えないのと同じように、「要件」という言葉の意味を覚えただけでは使えないのである。他の要求や仕様との繋がりや、エンジニアとの関係性まで踏み込まなければならないのだ。

ちなみに「要件」の辞書的な意味としては下記の通り。

  1. 大切な用事。「—のみ記す」
  2. 必要な条件。「教育者としての—を満たす」

要件(ようけん)とは? 意味・読み方・使い方をわかりやすく解説 - goo国語辞書

ふむ……まぁ、やっぱり分からん。ちなみに「要求」は下記の通り。

  1. 必要または当然なこととして相手に強く求めること。「待遇改善を—する」「—を飲む」
  2. 必要とすること。「からだが水分を—している」「時代の—」

要求(ようきゅう)とは? 意味・読み方・使い方をわかりやすく解説 - goo国語辞書

同じじゃないんか? という疑問すら沸いてくる。しかし、開発現場で使われる「要求」と「要件」は明確に使い分けられる。もしかしたら現場によって意味が変わってくるかもしれないが、おそらく、どの現場も同じかと思われる。

要件と要求の違い

結論から言うと、要求と要件はそれぞれシステムを見る「視点」が違う。

  • 要求……ユーザー視点
  • 要件……開発者視点

開発はまず、要求を整理するとことから始まる。これはつまり、ユーザーが解決したい課題を洗い出し、しっかりと言語化する作業だ。この課題の言語化には、最初は曖昧だった心配や不安、不満といった感情を詳らかにし、解決できる課題として列挙できる状態にまで落とし込む。これこそが要求を整理するというプロセスである。

次の段階でやることは、最初にまとめた解決すべき要求をシステムで解決できるように落とし込んだ要件を整理することである。つまりシステムのインタフェースをどうするか、データへの落とし込みや保存・管理方法といったものを言語化するのだ。

ここで大事なのは要件通りに作れば要求が解決できるということだ。

要求で言語化された課題と、それを解決してくれている要件とが一対一で対応していることが求められる。また要件を作っている内に、ユーザーと擦り合わせるべき課題が出てくることもある。そうすればまた要求を整理する作業へと戻り、また要件を整理する。

この要件が完璧にできていれば、あとは丸投げするだけで開発できてしまうのがシステムというものだ。だからこそこれらは上流工程と呼ばれている。下流工程にいるエンジニアにとって、この上流工程の成果物が絶対なのである。

自分と要件と要求

エンジニアとしての自分は、システムが完成するまでのプロセスのどこにいるのか。

全体像を知らなければ、その立ち位置というものが分からない。「自分は関わらないから」と要求や要件といった用語の意味を知らないままでいることは怠慢であろう。自分が作ろうとしているシステムは、どんな課題を解決することができるのかを知らないまま作っていないだろうか?