コードの宇宙に物理法則は存在するか
29リポジトリ・55,343人のエンジニア・5つの言語ファミリーを横断分析
EIS (Engineering Impact Signal) は、git log と git blame のデータだけから、エンジニアがコードベースに残した「構造的影響力」を定量化するCLIツールです。
本分析では、Gravity Concentration(上位10名が全体Gravityの何%を占めるか)を言語ファミリー間の比較指標として使用します。
異なる言語は異なる「物理法則」を生む。型システムの表現力、フレームワーク文化、そしてアーキテクチャの集中度。
29のOSSリポジトリを5つのカテゴリに分類し、構造権威の分布を比較しました。
| カテゴリ | 特徴 | 言語 | リポ数 |
|---|---|---|---|
| Expressive | 豊かな型システム、ADT、パターンマッチ、トレイト | Rust, Scala | 5 |
| Go (Self-structured) | 静的型付け、反フレームワーク文化、明示的インターフェース | Go | 7 |
| Framework-driven | 構造をフレームワークに委譲、CoC | Ruby, PHP, Java, Python, TS, Elixir | 6 |
| Systems (C/C++) | 手動メモリ管理、テンプレート | C, C++ | 5 |
| Dynamic / Structural | 動的型付け、自己構造化 | JavaScript, TypeScript, Python | 6 |
上位10名が全体Gravityの何%を占めるか。高いほど「少数の建築家に構造が集中」している。
構造は「人」が作る。少数のアーキテクトが圧倒的な設計権威を持つ。集中度: 高い。
構造は「型」に埋め込まれる。設計権威は型シグネチャを書く全員に分散。集中度: 低い。
構造はフレームワークに吸収される。ただし内部のガバナンスは分散〜集中のスペクトラム。
どちらも「Framework-driven」カテゴリ。伝説的な作者を持つ人気フレームワーク。
しかしGravityの物理法則は完全に逆です。
125人のコントリビュータが存在するが、一人が全構造重力の92.5%を保持している。
2,010人のエンジニアが関わったReactは、10年間で5世代のアーキテクト交代を経験した。
EISのtimeline機能で3ヶ月スパンのGravityを追跡すると、世代交代の瞬間が可視化される。
EISは git log と git blame だけで計算される。RFCやデザインドキュメントは見えない。
それでも、コミュニティの直感と驚くほど一致する結果が出ています。
| 検証項目 | EISの結果 | コミュニティの直感 | 一致 |
|---|---|---|---|
| Railsの設計分散度 | Top10 Design 51.2、6人のアーキテクト | 「Railsはコアチームが厚い」 | 一致 |
| Laravelの設計集中度 | Taylor Otwell = Design 100、他全員 < 4 | 「LaravelはTaylorの作品」 | 一致 |
| esbuildの単独性 | 92.5%集中、Evan Wallace全軸100 | 「esbuildはEvanが一人で作った」 | 一致 |
| Kubernetesの分散性 | Gravity Conc. 0.8% | 「K8sは巨大コミュニティ」 | 一致 |
| Reactの世代交代 | 10年で5世代のAnchor遷移 | 「Reactは常に進化し続ける」 | 一致 |
| Jorge Cabiedes | 82コミットでDesign 100 | 「量より質」の体現 | 一致 |
| Go vs Rust 集中度 | Go 16.4% vs Rust/Scala 6.7% | 「Goは少数のアーキテクトが設計」 | 一致 |
git blame という限られたレンズからでも、プロジェクトの構造的な真実を驚くほど正確に映し出す。重力集中度は言語ファミリー間で4.8倍の差がある。Go (16.4%) から Systems C/C++ (3.4%) まで。
3つの構造権威モード — Architect-centric(Go)、Type-distributed(Rust/Scala)、Framework-absorbed(Rails/Laravel) — は、コードの見た目は似ていても、構造権威の物理が根本的に異なる。
同じFramework-drivenカテゴリ内でも、RailsとLaravelは逆のガバナンス物理を示す。esbuildは物理法則が崩壊する特異点。Reactは10年かけて健全な世代交代を実現した。
あなたの宇宙がどの物理法則で動いているかを知ることは、より良い構造的意思決定への第一歩です。
| Repository | カテゴリ | 言語 | Engineers | Top10 Design | Top10 Survival | Grav Conc |
|---|---|---|---|---|---|---|
| esbuild | Go | Go | 125 | 10.0 | 10.0 | 92.5% |
| express | Dynamic | JS | 391 | 13.5 | 3.2 | 23.9% |
| swc | Expressive | Rust | 357 | 16.4 | 14.0 | 15.7% |
| prettier | Dynamic | JS | 799 | 42.9 | 10.0 | 13.4% |
| fastapi | Framework | Python | 897 | 11.7 | 11.2 | 9.4% |
| vite | Dynamic | TS | 1,247 | 32.6 | 16.0 | 9.3% |
| eslint | Dynamic | JS | 1,180 | 18.6 | 12.8 | 8.1% |
| loki | Go | Go | 1,319 | 34.0 | 19.3 | 7.8% |
| spring-boot | Framework | Java | 1,504 | 30.2 | 34.1 | 7.3% |
| polars | Expressive | Rust | 694 | 17.4 | 29.8 | 7.0% |
| nest | Framework | TS | 684 | 13.3 | 10.2 | 7.0% |
| scala | Expressive | Scala | 794 | 32.3 | 5.9 | 6.8% |
| prometheus | Go | Go | 1,281 | 44.5 | 11.9 | 5.4% |
| superset | Dynamic | Python/TS | 1,477 | 23.6 | 29.5 | 4.5% |
| duckdb | Systems | C++ | 690 | 20.7 | 4.9 | 4.5% |
| phoenix | Framework | Elixir | 1,424 | 18.9 | 14.4 | 4.5% |
| redis | Systems | C | 905 | 14.3 | 8.9 | 4.0% |
| argo-cd | Go | Go | 1,889 | 41.4 | 20.5 | 4.0% |
| arrow | Systems | C++ | 1,466 | 28.3 | 12.4 | 3.8% |
| envoy | Systems | C++ | 1,444 | 46.4 | 15.7 | 3.5% |
| react | Dynamic | JS | 2,010 | 17.5 | 31.1 | 3.4% |
| scala3 | Expressive | Scala 3 | 995 | 12.6 | 12.9 | 3.3% |
| terraform | Go | Go | 2,223 | 30.3 | 32.7 | 2.4% |
| grafana | Go | Go/TS | 2,893 | 16.3 | 24.6 | 1.9% |
| laravel | Framework | PHP | 4,449 | 17.2 | 15.3 | 1.5% |
| ClickHouse | Systems | C++ | 2,563 | 17.3 | 30.0 | 1.4% |
| rails | Framework | Ruby | 6,512 | 51.2 | 7.3 | 0.9% |
| kubernetes | Go | Go | 5,217 | 42.5 | 19.9 | 0.8% |
| rust | Expressive | Rust | 7,914 | 53.0 | 5.7 | 0.6% |