コンソメの重要性
著者: イーベン・ヒューイットコンソメは、午肉のブイヨンからアクをとことん取り除いた繊細なスープとして食卓に並びます。できのよいコンソメは、完壁に澄んでいます。ブイヨンの濁りの原因となっている脂肪その他の固形物を取り除き、スープで必要とされる完全な透明感を得るためには、目の細かい布で単純に繰り返し濾すしかありません。これは、時間のかかる大変な仕事です。ろ過を繰り返し、気を使いすぎるほど純度を高めていくことによって、豊かで濃厚な香りが得られるのです。コンソメを味わうことは、まるで食べ物のエッセンスを味わうようなことです。実際、コンソメのポイントは、このエッセンスということにあります。
アメリカの料理学校では、学生シェフにコンソメを作らせた上で、簡単なテストを行います。教師が珠玉白色のブイヨンに10セント硬貨を落とすのです。ボウルの底に落ちている10セント硬貨の製造年が読めれば合格、そうでなければ不合格です。
ソフトウェア・アーキテクトは、システム1つ1つの要件のエッセンスをつかむまで、思考を磨き、アイデアをろ過することを繰り返していかなければなりません。ヨリックの骸骨を抱えたハムレットのように、これは何だ? どんな特性を持っているんだ? どんな関係があるんだ? と考えを詰めていきます。私たちは自分のコンセプトを研ぎ澄ませていき、アーキテクチャー内の関係を正しいと証明できるものにして、内部一貫性を確保します。
ソフトウェアのバグや実装し忘れた要件の多くは、暖昧で意味が漠然としている言葉に端を発しています。顧客、デベロッパー、アナリスト、ユーザーに、彼らが退屈して眠くなるくらい同じことを繰り返し質問しましょう。アリバイのほころびを探す検察官のように、質問のしかたを変えて、新しい事実、相違点、矛盾などを引っ張り出しましょう。繰り返しろ過するのです。
アーキテクチャーに含まれているコンセプトから取り除けるものがどれかを考え、コンセプトを表す名詞を探し、アーキテクチャーのエッセンスを見極めていきます。要件に含まれている言葉の精度を上げ、暖昧さ、抽象的な表現、確認できない前提条件、余分な言い回しを取り除きます。この作業は、コンセプトを豊かでしっかりとしたものにしていきます。繰り返し圧縮していくのです。
人々が言うことに対しては、「『いつも』、『永遠に』、『どのような状況でも』といっ た言葉を追加しでも同じことをおっしゃいますか?」とたずねて、その内容をテストしましょう。人はこのような絶対性を保証するのをいやがりますので、こうすると彼らの言葉を磨いていくことができます。コンセプトの表現に言葉のふるいをかけて、コンセプトを明確にしなければなりません。システムのエッセンスを示す単純で正しいことが証明できる言葉だけになるまで、これを繰り返しましょう。
この作業を繰り返していくと、アーキテクチャーが完成したときがわかります。アーキテクチャーの底に沈んだ10セント硬貨の製造年が読めるようになったときです。