Magnolia Tech

いつもコードのことばかり考えている人のために。

『要求仕様の探検学―設計に先立つ品質の作り込み』……”要求されなかったことは決して実現されない”なんて話は30年前から言われていたことなんだ

いつ買ったのかも覚えていないし、確実に買ったまま読んでいなかった本を本棚から発見して読み始めた。

『要求仕様の探検学―設計に先立つ品質の作り込み』……もうこのタイトルの時点でたぶんこの2021年において色々な人が読まなければいけない本じゃないだろうか。

本書は、長年システム開発コンサルタントを勤めていたドナルド・C・ゴーズと、ジェラルド・M・ワインバーグによる所謂システム開発における”要件定義工程”のノウハウを解説した本だ。

原著は1989年に出版され、日本語訳が出たのも1993年と非常に古い本だ。タイトルだけ見るとウォーターフォール的な「最初の工程できっちり文書化することが大事」みたいなことが書かれている本と捉えてしまいがちだが、まったくそんなことはなく、現代でも通用することばかりが書かれている。というより、30年前から何も変わっていなくて、進化もしていないかもしれない。

もう冒頭から名言が連発。

  • ”何について語っているのかさえわからないようなら、そのことについて正確さうんぬんをしても意味がない” - ジョン・フォン・ノイマン
  • ”ソフトウェア・ビジネスは、製品開発に対する厳密な学という根拠のない幻想に悩まされていたのだ”
  • "有効性は常に効率性よりも先にくる”
  • ”するに値しないことは正しくするに値しない”
  • "発見には価値がない;発見すること(探求(探検)すること)がすべてだ”
  • "文書には価値がない;文書化することがすべてだ”

また、「I.コンセンサスの形成」には本書で最も大事なことが書かれている。

  • あなたの望んでいることを伝えれば、ほぼ確実にそれが手に入る。
  • あなたが望んでいることを伝えなければ、それはおそらく手に入らない。

当たり前のように思われるかもしれないが、ここでは一つの実験(4つのチームに、一つだけ要件を変えた仕様書を渡したときに何が実現されるか?)に基づき、説得力をもって解説されている。そう、本当に当たり前のことなのに、なぜこれが理解されないのか、解決するために努力されない事案がこんなにも多いのか。


その後続く設計の表記方法に関する論点も非常に興味深い。

もっと前に読んで色々な人に理解して欲しかったことが、全部ここに書かれていた。

そう、みんなオレオレ表記方法を「直感的でシンプルで理解し易い」と主張しすぎる。全然そんなことは無いのに……その表記方法が”表記しないこと”を理解することが一番大事なのに。そして実際の開発では常にその”画期的な表記方法”がサポートしないことをどうやって書き表していくか?ということを独自に工夫していった結果、「シンプルで直感的」とは程遠い成果物が出来上がっていってしまっているのに。

プログラミング言語や、設計方法論と同じで、「絶対に正しい解決策」なるものは存在しないし、そんなことを主張している人がいれば、まずは疑うところから始めるべきなのだ。


以降は、どうやってあいまいさを排除し、明確な要求・要件を特定していくか?という話がみっちり続く……が、個人的には以降は拾い読みでもいいかな、と思っている。割と会話調で続くとか、会議の良いやり方など、「この本でなくても……」とも言えるトピックも多いのだ。ただ、それがこの本に価値が無いか、というとそんなことはなく、冒頭の一貫したメッセージに基づいてプラクティスとしてまとめられているので、自分に必要と思える部分だけを拾えば良い。

それよりも、「あなたの望んでいることを伝える」ためにはこれだけの膨大な営みや注意点があるのだ、ということを理解することが大事なのです。

「なんかいい感じに提案してよ、プロなんだから」では絶対に良い成果は得られないんですよ。


ちなみに本書の最後に「読書案内」と称して関連書籍の紹介があるのだけど、その最初がクリストファー・アレグザンダーであり、まぁやっぱり良い思想・書籍は長い年月を経てもその価値は落ちないんだなって思った。


ワインバーグの文章読本

ワインバーグの文章読本