- ブラウザURL入力
- DNS名前→IP
- ルータ経路選択
- ロードバランサ振り分け
- Nginx受け口
- アプリ処理今ここ
- DB保存
ここまで、どう分けるか・どう約束するかを扱いました。今回はその手前の問い、なぜその場所で分かれるのかを見ます。
まず結論
設計に残る境界は、設計書に引いた線ではなく、作る人たちが実際に話せる範囲に沿って出ます。線を越えて合意を取る費用が高いほど、そこが切れ目になります。
よく「設計は組織図を写す」と言われますが、1968年の原典が一般則として立てているのは communication structure(話せる構造)の写し取りです。組織図が写るのは、指揮系統に沿ってしか話せない組織に限った帰結です。
1968年の原典は、設計に写し取られるものを何だと述べているでしょうか。
当てることが目的ではありません。外した予測ほど記憶に残るので、直感で選んでください。
境界は、決めた場所ではなく合意が高くつく場所に出る
設計の境界は、設計書に線を引けばそこに決まる、というものではありません。実際に残る境界は、その線を越えて合意を取るのがどれだけ高くつくかで決まります。
細部を何度も往復しなければ決まらない設計は、往復が安い相手同士でしか選べません。往復に何日もかかるなら、少ない取り決めで済む粗い口を置いて互いに中を見ない形へ寄せるしかない。そして一度そう作られたものは残ります。設計図に現れる線は、この費用の地図の写しです。
1968年に Datamation 誌に載った Melvin E. Conway の記事 How Do Committees Invent? が、結論節でこう書いています。
The basic thesis of this article is that organizations which design systems (in the broad sense used here) are constrained to produce designs which are copies of the communication structures of these organizations.
写し取られるのは communication structure — 誰と誰が実際にやり取りできるかの構造です。
原典が出している例と、原典が自分の主張を呼ぶ語
原典の例の一つ。ある研究組織が8人で COBOL と ALGOL のコンパイラを作ることになり、5人が COBOL に、3人が ALGOL に割り当てられました。 できあがった COBOL コンパイラは 5つのフェーズ、ALGOL コンパイラは 3つのフェーズで動きました。人数の割り当てという設計外の決定が、そのままフェーズ数として出ています。
呼び名も一言。日本語では「コンウェイの法則」と呼びますが、原典が自分の主張に使う語は thesis と homomorphism で、law ではありません(原文の law は法律とパーキンソンの法則の言及だけ)。
8人を5人と3人に割ったら5フェーズと3フェーズのコンパイラができた、という原典の例。因果として妥当な読み方はどれですか。
組織図が写るのは、一般則ではなく条件つきの帰結
ここが通説と原典の最もずれる箇所です。**原典で組織図(organization chart)が出るのは2箇所で、どちらも一般則ではありません。**1つは Examples 節の実例です。
Two military services were directed by their Commander-in-Chief to develop a common weapon system to meet their respective needs. After great effort they produced a copy of their organization chart. (See Fig. 3a.)
もう1つは結論の直前、軍隊型組織に限った説明です。
Common management practice places certain numerical constraints on the complexity of the linear graph which represents the administrative structure of a military-style organization. ... To the extent that organizational protocol restricts communication along lines of command, the communication structure of an organization will resemble its administrative structure. This is one reason why military-style organizations design systems which look like their organization charts.
順序を追ってください。一般則はあくまで話せる構造が写ることです。組織上の約束事が指揮系統に沿ってしか会話させない限りにおいて、話せる構造が管理構造(=組織図)に似てくる。似てくるからこそ、組織図に似た設計が出る。組織図は最後に来る、条件つきの見え方です。
だから、組織図の上で同じ部の下にいても、擦り合わせる場が無ければ話せる構造としては遠いまま。納得する前に、実際に合意が成立した回数を数える方が当たります。
原典は観察で終わっていません。結論節に処方があります。
Primarily, we have found a criterion for the structuring of design organizations: a design effort should be organized according to the need for communication. ... Therefore, flexibility of organization is important to effective design. Ways must be found to reward design managers for keeping their organizations lean and flexible.
should と must が使われています。「観察だけで組織については何も言っていない」という読み方は、原典に反します。
- ・組織図は出発点ではなく、話せる構造が管理構造と一致したときの見え方
- ・両者が食い違う組織では、設計は会話の方に従う
対比 — 同じ構造が、コードの中にも出る
同じことは、組織をまたがない場面でも起きます。口が太いと、片方を変えるたびにもう片方の事情を確かめに行くことになる。その確かめに行く費用が、同じリポジトリの中なら数分、別チームの別リポジトリなら依頼と返事待ちから始まります。同じ「確かめる」でも桁が違う。 だから技術的にはどこで切ってもよい設計でも、実際に残る切れ目は費用の低い側に寄ります。 これを「変更の線」と呼びます。
同じ会社でAとBが似た仕組みを二重に作ってしまいました。最初に確かめるべきことはどれですか。
人の側 — 誰と話せるか
作る人どうしが擦り合わせられる範囲に沿って、設計の切れ目が出ます。原典の例では、8人を5人と3人に割り当てた結果、5フェーズと3フェーズのコンパイラができました。
対象 割り当て人数 できあがったフェーズ数COBOL 5人 5フェーズALGOL 3人 3フェーズ
コードの側 — どこまで確かめに行けるか
モジュールをまたぐ変更を通す手間は、置かれている場所で桁が変わります。同じリポジトリなら自分で確かめて直せますが、別チームの別リポジトリなら依頼と待ちが挟まり、粗い口へ寄せることになります。
変更の相手 挟まるもの 寄せがちな口同じリポジトリ内 自分で読んで直す 細かく噛み合った形別チームの別リポジトリ 依頼・返事待ち・調整 少ない取り決めの粗い口
組織の割り当てと、コードのモジュール分割。境界の位置を決めている共通の要因は何でしょうか。
「境界を越えて何かを決めるとき、何が挟まるか」を比べてみてください。
この章のまとめ
- 境界は設計書の線ではなく、越えて合意を取る費用で決まる。
- 原典の一般則は communication structure の写し取り。「are constrained to produce designs which are copies of the communication structures of these organizations」。
- 組織図が写るのは軍隊型組織という限定つきの系。順序が通説と逆。
- 原典は観察で終わらず処方も書く。
a design effort should be organized according to the need for communication。 - 原典は自分の主張を law と呼ばない(thesis / homomorphism)。
will inevitably produceは42年後の非公式版で、本文はare constrained to produce。商業誌掲載であり査読論文ではない。 - 今回の線は変更の線で、仮想化編の責任の線とは別物。
自分の現場で確かめる
読んだだけでは身につきません。手元の環境で実際に見てみてください。
理解度チェック
読んだ直後は「分かった」と感じやすいものです。実際に解いて確かめてください。
原典(1968年)の結論節に書かれている内容として正しいものはどれですか。
用語集(4語)
- communication structure(話せる構造)
- 誰と誰が実際にやり取りできるかの関係。原典が設計に写るものとして挙げているのはこちらで、組織図とは一致しないことがある。
- homomorphism(準同型)
- 構造を保ったまま一方を他方へ対応づける数学の語。原典は自分の主張を law ではなく thesis とこの語で表す。
- 合意の費用(この教材での言い方)
- ある変更を通すために関係者と擦り合わせて決着させる手間と時間。高い相手との間には粗い口が置かれる。
- 変更の線
- 何かを変えるとき誰の合意が要るかで引かれる境界。誰が直すかを定める責任の線とは別物。