ソフトウェアアーキテクチャの世界には、「銀の弾丸はない(No Silver Bullet)」と「コンウェイの法則(Conway’s Law)」という二つの有名な概念がある。どちらも、長年の開発経験を通じて得られた洞察を表すものだが、よく考えてみると、これらは単なる設計理論ではなく、「エジプトはナイルの賜物」的な視点に近いのではないか。
「銀の弾丸はない」── 設計理論を超えた経験則
「銀の弾丸はない」は、1986年にフレデリック・ブルックスが提唱した言葉であり、「ソフトウェア開発には本質的な困難があり、それを劇的に解決する魔法の技術など存在しない」という主張だ。
これは「エジプトはナイルの賜物」のような考え方に近い。つまり、「開発の進化は、ある特定の技術革新によって一気に解決するものではなく、環境や歴史の積み重ねによって形成されていくものだ」という視点だ。
「アジャイルが登場すればすべての問題が解決する?」「マイクロサービスを導入すれば全てうまくいく?」── そんな甘い話はない。どんな技術や設計手法も、環境によって適用可能性が異なるし、時にはデメリットの方が勝ることさえある。
この考え方は、どちらかというと帰納的(inductive)な思考に基づいている。つまり、数多くの開発プロジェクトを観察し、そこから「単一の技術では根本的な問題を解決できない」という結論が導かれたわけだ。いわば、現場のリアリティに基づいた経験則であり、トップダウンの設計理論ではない。
「コンウェイの法則」もまた「銀の弾丸はない」型の思考
では、「コンウェイの法則」はどうか。これは「組織の構造が、そのままソフトウェアの構造に反映される」という経験則である。縦割りの組織は縦割りのシステムを生み、分散型の組織は分散型のアーキテクチャを生みやすい── これは、開発の歴史を振り返れば、確かに何度も見てきた現象だ。
「コンウェイの法則」も、根本的には「銀の弾丸はない」型の思考に基づいている。なぜなら、これは**「組織の影響を考慮しない限り、どんなに理想的な設計をしても意味がない」**という話だからだ。クリーンアーキテクチャや依存性注入を導入しても、組織がそれに適応できなければ、結局形骸化する。
「理想的な設計をすれば解決する」という演繹的(deductive)な考え方ではなく、「どんなに設計を頑張っても、組織の構造によって決まってしまう」という帰納的な視点である点が、「銀の弾丸はない」と共通している。
「クリーンアーキテクチャ」は演繹的な設計理論
対照的に、「クリーンアーキテクチャ」は、ソフトウェア設計を演繹的(deductive)に整理した枠組みだ。
- 依存関係を明確に整理し、システムの変更容易性を高める
- ビジネスロジックをインフラやUIから分離し、長期的なメンテナンス性を確保する
といった設計原則が厳格に定義されている。
これは、「こう設計すれば、より良いシステムになる」という積極的な提案であり、ソフトウェアの進化を「意図的に制御しようとする発想」だ。これは、「銀の弾丸はない」や「コンウェイの法則」のような経験則とは根本的に異なり、「正しい設計を適用すれば、システムの質を向上させられる」という信念が前提にある。
この違いは、**「エジプトはナイルの賜物」型(帰納的)と「クリーンアーキテクチャ」型(演繹的)**の思考の違いといえる。
逆コンウェイ戦略── クリーンアーキテクチャとの橋渡し
では、これらは完全に対立するのだろうか? 実はそうでもない。
コンウェイの法則が提唱された後、「逆コンウェイ戦略(Inverse Conway Maneuver)」という考え方が生まれた。これは、「望ましいアーキテクチャを実現するために、組織構造を変える」という発想である。
つまり、「組織がソフトウェアを決める」のではなく、「望むソフトウェア設計に適した組織を作る」という戦略だ。
- マイクロサービスを導入するなら、小規模な自律チームを編成する
- モジュール化を促進するために、チームごとに独立した開発プロセスを持たせる
これは、「クリーンアーキテクチャ」のような演繹的設計と、「コンウェイの法則」の帰納的観察を結びつける試みと言える。つまり、「銀の弾丸はない」という前提を受け入れつつ、そこから最適な構造を導き出そうとするアプローチだ。
結論── どちらが正しいのか?
「銀の弾丸はない」と「クリーンアーキテクチャ」は、どちらもソフトウェア設計の重要な側面を表している。しかし、そのアプローチは対照的だ。
- 「銀の弾丸はない」や「コンウェイの法則」は、帰納的な経験則
- 「状況次第で最適解は変わる」
- 「組織の制約を無視しても良い設計にはならない」
- 「クリーンアーキテクチャ」は、演繹的な設計理論
- 「適切な原則を適用すれば、ソフトウェアの質は向上する」
- 「意図的に制御すれば、理想的な設計を実現できる」
どちらが正解というわけではない。実務では、「銀の弾丸はない」ことを理解しつつ、「クリーンアーキテクチャ」を参考にし、時には「逆コンウェイ戦略」のような橋渡しをすることが求められる。
設計は理論だけではなく、現実の環境や制約と向き合うことで成り立つ。
結局のところ、「エジプトはナイルの賜物」なのか、それとも「クリーンアーキテクチャ」なのか── それは、私たちの状況次第なのだろう。