Dance with Agents

いまや世界中で使われているGitは、わずか10日間で書かれたものだった

『Androidの土台に眠っているのは、大学生が趣味で書いたLinuxというカーネルだった』で見た通り、Linuxを書いたのはリーナス・トーバルズです。そのトーバルズが、Linuxを作った14年後の2005年に、もう1つ作ったものがあります。 いまや世界中の開発現場——このサイトでも『リポジトリとは何か』をはじめ何本もの記事で扱っている——で使われているGitです。


有償ツールを無償で使わせてもらえていた、という前提

Linuxカーネルの開発は、大人数が同時にコードを書き換えながら進みます。誰がいつ何を変えたかを記録し、複数人の変更を安全に1つにまとめる仕組み(バージョン管理システム)が欠かせません。2002年から、Linuxカーネルの開発では、BitKeeperという有償のバージョン管理システムを、開発元のBitMover社の厚意で無償利用させてもらう形で使っていました。

ところが2005年4月、この無償利用の取り決めが打ち切られます。あるボランティア開発者が、正規の手続きを踏まずにBitKeeperの通信内容を調べていたことを理由に、BitMover社が無償ライセンスを終了させたのです。Linuxカーネルの開発は、それまで頼っていたツールを、突然失うことになりました。

トーバルズが、自分で書いた

Git公式ドキュメントによれば、この事態を受けて、トーバルズは自らバージョン管理システムを書き始めます。kernel.orgに残っている配布アーカイブを見ると、最初のバージョンは2005年4月7日、その翌日、翌々日と、ほぼ毎日新しいバージョンが公開されています。本人が2025年のインタビューで振り返っているところでは、実際にLinuxカーネルの開発で使える形に仕上げるまでにかかったのは、わずか10日間ほどだったといいます。ただし同じインタビューで、その前の4か月間、頭の中でデータの持たせ方を練り続けていたとも語っており、10日間はあくまで「書き始めてから動くまで」の期間です。

名前の由来は、公式READMEに今も残っている

Git公式リポジトリのREADMEファイルには、トーバルズ本人による名前の由来がいくつも書かれています。「うまく動いているときは“global information tracker”(全体の情報を追跡するもの)の略」「発音しやすくて、他のよくあるコマンドと被らない、意味のない3文字の組み合わせ」、そして「イギリスのスラングで、愚かで嫌な人間を指す言葉」——動かないときの罵り言葉としても使える、という、半分冗談めいた説明です。生真面目な由来ではなく、開発者らしい茶目っ気のある名付け方だったことがうかがえます。

Gitに詰め込んだのは、速さ・分散・改ざん検知の3つ

同じインタビューでトーバルズが挙げている、Gitに詰め込んだ優先事項は3つです。

  • 速さ:50〜100個のパッチ(変更のかたまり)を30秒ほどで適用できることにこだわった。それより遅いツールは「使う気になれない」というのが本人の言葉
  • 分散:中央のサーバーに常時つながっていなくても、手元だけで開発を進められること。CVSなど、それまで主流だった「中央のサーバーが必須」の仕組みとは設計思想が違う。このサイトの『Gitにおけるリモートとローカルの違い』で扱っている、手元(ローカル)で作業できる仕組みの土台がここにある
  • 改ざん検知:「絶対にすべてを、しっかりしたハッシュ(データから作る短い符号)で守っている」という本人の言葉通り、SHA-1という方式ですべての変更内容にハッシュを付け、後から中身がすり替わっていないかを検証できるようにした

分散型で、なおかつ枝分かれ(ブランチ)を安く大量に作れる設計にもこだわっており、Git公式サイトも「非線形開発への強力なサポート」を設計目標の1つに挙げています。このサイトの『ブランチとは何か』で扱っている、同時並行で枝分かれしながら作業を進められる仕組みは、ここから来ています。

2005年7月、トーバルズが運営から退く

トーバルズは、Gitを長く自分だけで運営し続けるつもりはありませんでした。開発開始から3か月半後の2005年7月27日、メーリングリスト(メールで参加者に一斉配信する形の議論の場)への投稿で、後任のメンテナー(開発全体を取りまとめる役)に濱野純(はまの じゅん、Junio C Hamano)氏を指名したことを表明します。以来、Gitの開発は濱野氏が引き継いで運営しており、トーバルズ自身はパッチを送る一開発者という立場に退きました。作った本人が早い段階で運営から退いた、というのも、いまなお開発が続いている一因です。

GitHubは、Gitとは別物

Gitの分散設計は、後の広がり方にもつながっています。トーバルズ自身が語っている通り、「Gitのホスティングサイトが(技術的には)ほとんど何もしていないに等しいのは、すべてのリポジトリ(保管場所)が対等で、コピーしやすいように設計されているから」だといいます。2008年に始まったGitHubは、このGitの上に、コードを公開・共有・レビューするための仕組みを載せたサービスです。GitとGitHubは別物——このサイトの『GitHubのアカウントを作る』で扱っているGitHubは、Gitという土台があって初めて成り立つ、後発のサービスです。

まとめ

  • Gitは2005年、Linuxカーネル開発で使っていた有償ツールBitKeeperの無償利用が打ち切られたことをきっかけに、Linuxの作者リーナス・トーバルズが自ら書き始めた
  • 実際に使える形になるまで、わずか10日間ほどだった(ただし構想は4か月前から練っていた)
  • 名前の由来は公式READMEに今も残っており、生真面目な由来ではなく茶目っ気のある名付け方をしている
  • 速さ・分散・改ざん検知の3つを優先事項として設計され、いまのブランチ機能や改ざんへの強さにつながっている
  • トーバルズは3か月半ほどで運営から退き、以後は濱野純氏が開発を引き継いでいる
  • GitHubはGitとは別物で、Gitの分散設計の上に2008年に作られた後発のサービス

LinuxもGitも、始まりは1人の開発者が、目の前で困っていたことを解決するために書いたコードでした。作った本人の手を離れてもなお開発が続き、いまや片方はAndroidの中身に、もう片方はほぼすべての開発現場の標準に育っています。

コンピュータ史の記事

コンピュータ史のページへ →