制約と選好を区別する; 要求仕様の探検学から

この記事は、ワインバーグさんにまつわるAdvent Advent Calendar 2025の13日目です。
昨日はid:o0hさんの投稿だったことでしょう。

adventar.org

今日は、以前に読んだ『要求仕様の探検学』をパラパラとめくりながら、心に残った話を1つ書いてみます。

ワインバーグといえば「本当の◯◯」

一般システム思考入門も「観察すること」の重要性を厚めに説いていましたが、結局のところ「真に客観的なものはなく、この世で生きている限りは相対的な思考と付き合っていくことになる」と理解することになります。
すなわち、他者間で「なにをみて、どう受け取り、どう判断し評価するか」が100%純粋に伝わるなんて不可能だぜ!と。

だからこそ、ライト、ついてますか 問題発見の人間学であったように「誰の問題なのか?」が重要になってくるし、また他の著作でも幾度となく繰り返されたように「同じ文章でも、"Mary Had a Little Lamb"のどの単語を強調して読むかによって、意味するところが変わる」ことになる訳です。

そんな風に、色々な場面で「本当の問題」「本当の要求」「本当の意図」と徹底的に向き合う、もしくは「どこまで言っても”本当の”ことなんて現れない、それを理解してどこまで今の思い込みを疑う」ように積極的に促している人物だな、と自分は思う訳です。

選好

『要求仕様の探検学』の17章には『選好』という章があります。

選好とは属性についての, 望ましいが, 選択可能(オプショナル)な条件である。あらゆる制約を満たす最終的な設計解はどれも許容可能な解だ。しかし, ある解は他の解よりも好ましいということがある。選好によって, 設計者は, 選択可能な解を比較し, よりよいほうを選択することができる。
(P207)

すなわち、要求の中にあって「どのように、どの程度、それを実現すべきか」の調整ができるものである、とでも言えるでしょうか。

例えばモバイルアプリを作っていて、「オープニング画面で目玉のキャラクターがアプリ上で表示可能であること」はもはや選択の余地のないもの、つまり「制約」になってきます。
一方で、「オープニング画面においてアニメーションが複数パターンあること」は、「何パターンあって、それぞれどのくらいの長さとなるか」と可変要件なのかも知れません。その場合、これは「選好」の域になります。

制約と選好を区別する

17章の3節は、『制約と選好を区別する』という見出しがついています。
これが、非常に大事だし油断すると溺れてしまうよな〜〜〜〜!!ってな気持ちになりました。

「額面通りに受け取る」と、往々にして、最初の時点で要求に含まれる大凡の要素は「制約」に見えてきがちです。要求とは本質的にそういうものでしょう。「こうあってほしい」を言語化したものになるのですから。
しかし、その文書に含まれる1つ1つを点検していった際には、「どれもが同じ熱量でそこに並んでいるわけでもない」と気づきます。

可能性の拡大は、曖昧さを運び込み、ソフトウェア設計を複雑なものにしますが、選択肢の柔軟さは設計者を手助けします。たどるべき「筋」が明確であれば、守るべきライン・捨てて良いものを組み立てやすくなりますが、その際に切れるカードの多さは「何をどこまでいじっていいか」次第になるのです。

なので、要求を受け取った際に、「なにが制約で、何が選好か」に注意するだけでも、ソフトウェアエンジニアとして効果的な働き方ができるようになるのではないか?なんて思いました。

要素を分解する、情報を重み付けする、それを通じて会話相手とのブレを減らす。
こうした取り組みが、必要なはずです。

もしくは、「選好」とは「まだ制約にまで昇華されきっていない、曖昧さを残した部分」とも捉えられるかも知れません。

選好に気づかせる

もう1点、この章で好きなのが次の一文。

選好はクライアントからくる, 設計者からではない。

これは忘れやすい。その理由は, 特に, 設計者がオプションを提示しない限り, クライアントは自分の選好に気づかないからだ。
(P209)

単純に言うと「つまり、こういうことですか?」とか「こういう感じにできればOKですかね?」と聞き返すことで、何が大事で何を満たしたいかの解像度を上げるような取り組みなのだと思います。
これを省こうとすれば、要求主の「想像しきれておらず、まだ暗黙裡に補完していたもの・思い込んでいたもの」が、そのまま残り続けることになります。よって、要求文書にとって最も忌避すべき「曖昧さ」が紛れ込んだまま!と。

とはいえ、「これは制約ですか?要求ですか?」と突き返しても、本当に良い対話や意思決定が生まれにくそうです。なので、「オプションを提示」してあげることで、実は隠れていた「本質的に必要なもの」の輪郭をくっきりさせること。
これは、テストの三角測量にも似たものかな〜とも個人的には思いました。「どこにありますか?」ではなく「AとBという2つの地点仮決めしてみましょう、この中間で、どっち側にどのくらい近いですか?」と聞いたら、本当の座標に近づける!みたいなイメージ。

まとめ: 要求仕様の探検学は良いぞ

例によって、この本も咀嚼しながら読んでいくと大変おもしろい1冊です。

ぜひ、色々な人に「スーパーチョークとは何だったのか」、その驚愕の結末に感激してほしいものですね!

ワインバーグさんにまつわるAdvent Advent Calendar 2025 - Adventar、day14となる明日は、何かの記事です。