コードの考古学 ── 設計思想に宿る哲学の源流
プラトン・カント・ゲーデルからDDDまで。CS概念の「なぜこの形か」を哲学・歴史から解き明かす短編集。全10話+エピローグ。
コードの考古学 ── 設計思想に宿る哲学の源流
シリーズ構成(全10話+エピローグ)
第1話 テセウスの船 / 第2話 言語ゲーム / 第3話 ヴェネツィアの帳簿 / 第4話 集合の亀裂 / 第5話 証明できない真実 / 第6話 否定の神学 / 第7話 洞窟の影 / 第8話 同じ川に二度 / 第9話 剃刀 / 第10話 コペルニクスの転回 / エピローグ 問いの形は再利用される
なぜ、この記事を書くのか
コードを書いていると、こんな問いにぶつかることがある。
「このオブジェクトは Entity にすべきか、Value Object にすべきか」「テストは何を検証すればいいのか」「なぜ型システムはこんなふうに設計されているのか」
マニュアルを読めば「使い方」は分かる。しかし「なぜこの形をしているのか」は書いていない。
CSの概念には、形がある。その形は偶然ではない。何百年・何千年にわたって人間が積み上げてきた問いと答えが、かたちを変えてコードの設計思想に宿っている。
テセウスの船を知っていると、Entity設計で迷ったときの「問い直し方」が変わる。ゲーデルを知っていると、CAP定理の「なぜ選択を迫られるのか」が腑に落ちる。ウィトゲンシュタインを知っていると、Bounded Contextの「境界はなぜ必要か」が直感的になる。
本シリーズは、CS概念の「考古学」だ。設計の表面を掘り下げると、そこには哲学者・数学者・商人たちの格闘の痕跡がある。
対象読者と読み方
対象:
- ソフトウェア設計に携わるエンジニア
- 「概念は知っているが、なぜこの形なのかが腑に落ちていない」方
- 哲学・歴史に興味があり、CSとの接点を探している方
難易度:★★☆☆☆〜★★★☆☆(話による)
読了時間:1話あたり約15分、全体で約3時間
前提知識:プログラミングの基礎。DDD・型システムの名前を聞いたことがある程度でOK
各話は独立して読める。好きな話から入ってよい。ただし以下の組み合わせは互いに呼応しているので、続けて読むと理解が深まる。
- DDD三部作: 第1話(テセウス=Entity)→ 第2話(ウィトゲンシュタイン=言語ゲーム)→ 第3話(パチョーリ=Event Sourcing)
- 不完全性の系譜: 第4話(ラッセル)→ 第5話(ゲーデル)── 自己参照とパラドックス
- 方向の転倒: 第7話(プラトン=抽象先行)→ 第10話(カント=コペルニクス的転回)
- 時間の哲学: 第3話(イベント=不変な事実)↔ 第8話(ヘラクレイトス=流転と不変性)
最後にエピローグ章で全話を貫く「4つの継承パターン」を整理し、参考文献を付す。
各話の構造
すべての話が同じ4段構成に従う。
1. 場面 ── 哲学者・歴史的人物が直面した問い(物語的導入)
2. 答え ── その時代に至った洞察
3. 翻訳 ── それがCSにどう持ち込まれたか(誰が・いつ)
4. 示唆 ── 知っていると設計のどこが変わるか
話一覧
| 話 | 源流 | CS概念 |
|---|---|---|
| 第1話 テセウスの船 | 古代ギリシャの思考実験 | Entity vs Value Object |
| 第2話 言語ゲーム | ウィトゲンシュタイン(1953) | ユビキタス言語・Bounded Context |
| 第3話 ヴェネツィアの帳簿 | 複式簿記(1494) | Event Sourcing |
| 第4話 集合の亀裂 | ラッセルのパラドックス(1901) | 型システム |
| 第5話 証明できない真実 | ゲーデルの不完全性定理(1931) | CAP定理・Halting Problem |
| 第6話 否定の神学 | 否定神学(5世紀〜) | テスト設計・仕様記述 |
| 第7話 洞窟の影 | プラトンのイデア論(紀元前) | インターフェース設計 |
| 第8話 同じ川に二度 | ヘラクレイトス(紀元前6世紀) | イミュータビリティ・関数型 |
| 第9話 剃刀 | オッカムの剃刀(14世紀) | YAGNI・シンプル設計 |
| 第10話 コペルニクスの転回 | カントの認識論(1781) | TDD・依存性逆転 |
| エピローグ 問いの形は再利用される | 4つの継承パターン・参考文献 | 全話の総括 |
この記事を読んだあとで
哲学の概念を知ることは、引き出しを増やすことではない。問いの立て方が変わることだ。
設計で行き詰まったとき、「この問いはテセウスの船型か、ゲーデル型か」と問い直せるようになる。それだけで、議論の解像度が上がる。エピローグでは、10話を貫く構造を「哲学から CS への4つの継承パターン」として整理し、まだ翻訳されていない哲学的アイディアの候補を残した。考古学はここで終わるわけではない。
目次
- 第1話 テセウスの船 ── 「同一性」をめぐる問いが Entity を生んだ テセウスの船という古代の思考実験が、DDD の Entity と Value Object という設計上の分類をいかに生んだかを辿る
- 第2話 言語ゲーム ── ウィトゲンシュタインの転回が境界を引いた ウィトゲンシュタインの「言語ゲーム」概念が、DDD の Bounded Context と Ubiquitous Language の哲学的根拠であることを辿る
- 第3話 ヴェネツィアの帳簿 ── 1494年の発明がイベントストリームを生んだ ルカ・パチョーリが1494年に記述した複式簿記の原則が、現代のイベントソーシングとWALの哲学的起源であることを辿る
- 第4話 集合の中の亀裂 ── ラッセルのパラドックスが型を生んだ バートランド・ラッセルが1901年に発見したパラドックスが、型理論を経て現代の型システムの哲学的根拠になったことを辿る
- 第5話 証明できない真実 ── ゲーデルの呪いと設計の限界 ゲーデルの不完全性定理とチューリングの停止問題が、CAPの限界からstaticアナリシスの不可能性まで、設計上の限界の哲学的根拠であることを辿る
- 第6話 否定の神学 ── 「何でないか」から始める技法 「神は何でないか」を語る否定神学の伝統が、テスト可能性と否定的要件という現代ソフトウェア設計の核心に変容した経緯をたどる。
- 第7話 洞窟の影 ── プラトンのイデアがインターフェースを先行させた プラトンのイデア論と洞窟の比喩が、依存性逆転原則・インターフェース優先設計・TDDへと変容した経緯をたどる。
- 第8話 同じ川に二度 ── ヘラクレイトスの流転が不変性を生んだ 「同じ川に二度と入れない」というヘラクレイトスの箴言が、イミュータブルデータ・関数型プログラミング・イベントソーシングとして現代ソフトウェアに変容した経緯をたどる。
- 第9話 剃刀 ── 14世紀の修道士が「余分なもの」を切り落とした ウィリアム・オブ・オッカムの「エンティティを必要以上に増やすな」という原則が、YAGNI・Unix哲学・抽象化のコストとして現代ソフトウェア設計に変容した経緯をたどる。
- 第10話 コペルニクスの転回 ── カントの逆転がテストを先行させた カントの「コペルニクス的転回」——心が世界に従うのではなく世界が心の構造に従う——が、TDD・依存性逆転・ヘキサゴナルアーキテクチャとして現代ソフトウェア設計に変容した経緯をたどる。
- エピローグ ── 問いの形は再利用される 10話を貫く構造を「哲学から CS への4つの継承パターン」として整理し、まだ翻訳されていない哲学的アイディアを示す。参考文献付きの総括章。