現代のソフトウェア開発において、Gitを使わずにプロジェクトを進める現場はほぼ壊滅した。日々の業務で何気なく叩くgit commitやgit pushは、もはや呼吸と同じレベルでエンジニアの肉体に馴染んでいる。
しかし、時計の針をほんの四半世紀ほど巻き戻せば、世界は中央集権型のバージョン管理システムによる理不尽な制約と、非効率極まりない「ファイルの奪い合い」に支配されていた。その不条理な軛(くびき)を粉々に破壊し、インターネットの根本思想である「自律分散」をソースコード管理の現場に叩き込んだ男こそ、Linuxの生みの親であるリーナス・トーバルズだ。
なぜGitは、先行する幾多のツールを過去の遺物へと追いやり、世界の開発基盤を完全に手中に収めるに至ったのか。その歴史と設計思想を解剖する。
暗黒の中央集権時代:CVS、SVN、そして悪名高きVisual SourceSafe
Gitが誕生する以前、現場を牛耳っていたのはCVS(Concurrent Versions System)やSubversion(SVN)、そしてマイクロソフトが提供していたVisual SourceSafe(VSS)をはじめとする中央集権型システムだった。
これらの中央集権型システムの最大の問題点は、「単一のサーバーが絶対神として君臨する」という構造そのものにあった。開発者はサーバーと常時通信できなければコミット履歴すら参照できず、ネットワークが落ちれば作業が完全に停止する。
とりわけ悪夢だったのが、Visual SourceSafeに代表される「排他的ファイルロック(ソースロック)」という名の愚行だ。そのあまりの使い勝手の悪さとデータベース破損率の高さから、開発者たちの間では「Safe(安全)どころか危険極まりない」「Visual SourceOut(ソースが出てこない・お祈り)」などと痛烈に揶揄される始末だった。
「修正中だから触るな」という絶望:開発を窒息させたファイルロック
ファイルロックの思想は単純かつ硬直的だった。「コンフリクト(競合)を防止するため、ある開発者がファイルをチェックアウト(編集開始)したら、そのファイルをロックして他の開発者の編集を禁止する」というものだ。
この設計が現場に何をもたらしたか。一人が巨大な共通モジュールや設定ファイルをロックしてしまえば、他のメンバーはその作業が終わるまで一切のコード修正ができない。担当者がファイルをロックしたまま有給休暇に入ったり、退社後にロック解除を忘れたりした瞬間、チーム全体の開発プロセスは人質に取られ、作業は完全に凍結した。
「誰がファイルを掴んでいるのか」をチャットや社内電話で犯人探しし、解除を懇願する。競合を恐れるあまり開発スピードを自ら殺すこの仕組みは、バージョン管理というよりは単なる「開発妨害装置」でしかなかった。後に登場したSubversionは行単位でのマージを普及させロック地獄を緩和したが、中央サーバーへの依存という根本的な限界は依然として残ったままであった。
リーナス・トーバルズの怒りと、わずか数週間でのGit爆誕
この中央集権の不条理と遅さに最も耐えられなかったのが、世界中に散らばる何千人もの開発者とLinuxカーネルを開発していたリーナス・トーバルズだ。
当時、Linuxカーネル開発では商用の分散型バージョン管理ツール「BitKeeper」を特例として無償利用していた。しかし2005年、オープンソースコミュニティとの間でライセンスを巡る決定的な対立が勃発し、利用権を剥奪される事態に陥る。
他の既存ツールを見渡しても、中央集権の愚鈍なSVNか、性能の劣る初期の分散ツールしかない。これらに強烈な嫌悪感を抱いたリーナスは、「既存のツールがどれもこれもゴミなら、自分で作るしかない」と自らキーボードを叩き始めた。彼が要求したのは極めて冷徹な仕様だった。
- 圧倒的な処理速度(パッチ適用が瞬時に完了すること)
- 中央サーバーに頼らない完全な分散設計
- 巨大プロジェクトの非線形開発(数千のブランチの分岐と合流)の完全サポート
- データ破損を許さない暗号学的整合性
驚くべきことに、リーナスはわずか数週間でGitの基本コアを書き上げ、自分自身のLinuxカーネル開発の現場へ即座に投入したのである。
分散型、プルリクエスト、すべて自己責任という潔さ
Gitがもたらした革命の本質は、「リポジトリの完全なコピーを各開発者のローカル環境に持たせる」という分散型の構造にある。
自分のマシンの中に履歴もブランチも含めた完全な宇宙が存在するため、オフラインであろうと瞬時にコミットし、ブランチを切り、実験的なコードをいくらでも試せる。中央サーバーに許可を乞う必要も、他人の編集を待つ必要もない。ロックなどという軟弱な安全装置は最初から存在せず、競合が起きたなら「マージして自分で直せ」という、冷徹なまでのエンジニアの自己責任論が貫かれている。
さらに、Gitの思想を基盤にしてGitHubが発明した「プルリクエスト(フォーク&マージ)」という概念が、ソフトウェア開発の力学を不可逆なものにした。開発者は中央の聖域に直接手を下すことなく、自分の領域で勝手にフォークして改修し、「この変更を取り込んでくれ」と提案(プルリクエスト)を送るだけでいい。取り込むか捨てるかの主権は管理者が握り、合意形成は非同期かつオープンに行われる。
インターネットの原型思想に最も忠実だったプロトコル
過去、ソフトウェア工学の世界には幾多のバージョン管理理論と商用ツールが林立し、それぞれが独自の統制モデルを喧伝してきた。しかし最終的にGitが圧勝し、世界を統一した理由は極めてシンプルだ。
Gitの分散アーキテクチャは、単一障害点を持たず、個々のノードが自律的に繋がり、対等にパケットをやり取りする「インターネットそのものの思想」と完全に一致していたからである。
中央の権力者がファイルを施錠して管理する旧態依然とした官僚主義を、末端のノード同士による自律的な合流というネットワークの原理で駆逐したGit。それは単なるツールの勝利ではなく、「中央集権的な統制よりも、分散と自己責任の連帯のほうが遥かに強靭で速い」というインターネットの真理を、コード管理の歴史において証明した決定的な事件だったのだ。

