そもそもGitHubとは一体何か?

次の記事

Node.jsのPaaSでメジャーをねらうNodejitsuがJoyentとの提携でその第一歩を

github-logo

Andreessen Horowitzの発表によると、1億ドルという途方もない額が今週GitHubに投資された。GitHubはその金で一体何をするつもりか、Andreessen Horowitzにとって良い投資だったのか、いや、そんな巨額の投資はGitHubにとって良いことなのか、さまざまな意見や憶測が、Webの至るところに出現した。

しかしそもそも、GitHubとは何なのか? デベロッパにとってなぜそんなに人気があるのか? GitHubはコードを共有したり公開するためのサービスだ、とか、プログラマのためのソーシャルネットワーキングサイトだ、といった伝聞を聞いたことはあるかもしれない。どちらの説も正しいけど、しかしいずれも、GitHubが特別な存在である理由を説明していない。

GitHubはその名のとおり、Gitを使うためのハブだ。GitはLinuxの作者Linus Torvaldsが始めたプロジェクトで、GitHubの訓練士Matthew McCulloughの説明によると、Gitは昔からあるバージョン管理システム(version control system, VCS)の一種であり、プロジェクトの改訂履歴を管理し保存する。プログラムのコードに利用されることが圧倒的に多いが、実はWordのドキュメントでもFinal Cutのプロジェクトでも、どんなタイプのファイルでも管理できる。とにかく、コンピュータのプログラムにかぎらず、どんなドキュメントでも、すべての段階の草案やアップデート履歴を保存し管理できるファイルシステムなのだ。

Git以前によく使われたCVSSubversionといったバージョン管理システムでは、一つのプロジェクトの複数の参加者に対し、中央的な“リポジトリ”(repository, 保存庫)が一つだけあった。一人のデベロッパがどこかを書き換えると、その変更が直接、中央的リポジトリにも及ぶ。しかしGitは分散バージョン管理システムなので、一人一人がリポジトリ全体のコピーを保有し、そのコピーに対して変更を行う。そしてその変更がOKとなったら、中央的サーバにその変更を“チェックイン”する。コードを書き換えるたびにサーバに接続しなくてもよいから、これまでよりもきめ細かい変更とその共有が、やりやすくなる。

GitHubは、 いろんなプロジェクトのためにGitのリポジトリをホスティングするサービスだ。独自の便利な機能がたくさんある。Gitはコマンドラインツールだが、GitHubはWeb上でグラフィカルなユーザインタフェイスを提供する。セキュリティのためのアクセス制御もあり、また各プロジェクトにwikiやベーシックなタスク管理ツールなど、コラボレーションのための機能も提供する。

GitHubの最大の目玉機能が“フォーク(forking)”だ。フォークとは、食器のフォークの先端のように、一つのプロジェクトが複数に分派していくこと。それをGitHubでは、誰かのリポジトリをほかの人がコピーすることによって行う。オリジナルに対するライト(write, 書き込み)アクセスがなくても、それを自分のところで改変できる。自分が行った変更をオリジナルに反映したかったら、オリジナルのオーナーに“プルリクエスト(pull request)”と呼ばれる通知を送る。そしてオーナーは、ボタンをクリックするだけで、その人のリポジトリに対して行われた変更を自分のリポジトリにも取り入れることができる。人のコードを自分の(メインの)コードに導入することを、デベロッパ界隈の用語でマージする(merge, 併合)と言う。マージは複数のデベロッパが関わるプロジェクトにおいて最重要な工程であり、GitHubではそれが安全確実迅速にできる。

これら三つの機能…フォークとプルリクエストとマージ…があるために、GitHubはきわめて強力なサービスなのだ。Gitを学ぶクラスTryGitを最近始めたばかりの、Code SchoolのGregg Pollackの説明によると、GitHub以前には、オープンソースのプロジェクトに寄与貢献しようと思ったら、まずそのプロジェクトのソースコードを手作業でダウンロードし、変更をローカルに行い、そして“パッチ(patch, つぎあて)”と呼ばれる変更内容の一覧をプロジェクトのメンテナにメールする。メンテナはそのパッチを評価し、OKとなったらそれらの変更をマージする。パッチは、まったく未知の人から突然送られてくることも多い。

しかしGitHubではネットワーク効果が絶大な威力を発揮する、とPollackは説明を続ける。あなたがプルリクエストを送ると、プロジェクトのメンテナはあなたのプロフィールを見る。そこには、あなたがGitHub上で行った寄与貢献(contributions, コントリビューション)がすべて書かれている。あなたのパッチが受け入れられたら、あなたはオリジナルのサイト上で信任を取得し、そのことがあなたのプロフィールにも載る。メンテナがあなたのプロフィールを見るときそれは、あなたの評判を知るための履歴書のようなものだ。GitHub上にたくさんの人間とたくさんのプロジェクトがあればあるほど、プロジェクトのメンテナが優れた寄与貢献者(contributors, コントリビュータ)をより見つけやすくなる。これぞまさに、ネットワーク効果の典型だ。パッチは、特定のメンテナの手に渡るだけでなく、公開の場で議論することもできる。

GitHubのインタフェイスを使わないメンテナにとっても、GitHubの存在はコントリビューションの管理を容易にしてくれる。オープンソースのサーバサイドJavaScriptプラットホーム、Node.jsのメンテナIsaac Schlueterによると、“ぼくは最終的にはとりあえずパッチをダウンロードしてコマンドラインでマージしている。GitHubのマージボタンは使わない。しかしGitHubは、人びとがパッチを議論できる“町の中心の広場”として、かけがえのない存在だ”、という。

敷居を低くして誰もが気軽に参加できるため、オープンソースの開発がより民主化され、若いプロジェクトの成長を助ける。“GitHubがなければ、今日の姿のNode.jsもなかっただろう”、とSchlueterは言う。

GitHubには、一般に公開されるオープンソースのリポジトリ集という顔のほかに、企業にプライベートのリポジトリを売ったり、そのソフトウェアの企業向けのオンプレミスのインスタンスを売るビジネスとしての顔がある。これらのソリューションにはもちろん、オープンなGitHubのネットワーク効果というアドバンテージはないが、コラボレーションの機能はそっくりそのままある。ただしビジネスとしてのそれには、敵もいる。

Atlassianが2010年に買収したBitBucketも、競合製品の一つだ(VCSないしSCMS(source code management system)としてGitだけでなく同じく好評なMercurialも使える)。今年の初めにAtlassianが立ち上げたStashは、プライベートでオンプレミスなGitリポジトリをBitBucket的/GitHub的なコラボレーション環境で設営利用できる製品だ。Atlassianはこのほか、バグトラッカーのJiraやwikiソフトのConfluenceなど、デベロッパのためのコラボレーションツールも売っている。Atlassianは2010年にAccel Partnersから6000万ドルを調達している。この6000万ドルという数字を見れば、GitHubの1億ドルの意味もおよそ分かるだろう。同社が未来に向けて何を志向しているのかも分かる。たとえばSchlueterは、GitHubの問題追跡機能はある面でJiraと競合するだろう、と言っている。

お金はプライベートでオンプレミスなホスティングにあり、愛はパブリックなリポジトリ集にある。しかし、おそらくいちばん重要なのは、GitHubがコードに関して現代のアレクサンドリア図書館になっていることだ。Gitを使うときめ細かい…粒度の小さい…変更の記録ができるので、まったくの初心者でもあるいはエキスパートでも、世界のもっとも偉大なデベロッパたちの足跡を踏みしめることができ、彼らがプログラミングの難題をどうやって解いたかを知ることができる。しかもGitHubが将来、アレクサンドリア図書館と同じ運命を辿ったとしても、世界中に分散している多くのデベロッパたちのラップトップ上にあるローカルなフォークから再建できる。今回の投資の結果がどう出ようとも、それこそが、GitHubが今後の世界の歴史に残す、驚異的な遺産だ。

〔参考ビデオ。 〕

[原文へ]
(翻訳:iwatani(a.k.a. hiwa))

“そもそもGitHubとは一体何か?” への5件のフィードバック

  1. 匿名 より:

    >Gitではなく同じく好評なMercurialを使う
    いつの話してるんですか?

    • iwatani より:

      コメントありがとうございます。
      BitBucketのサイトで、今ではGitもサポートしていることを確認しました。

    • iwatani より:

      コメントありがとうございます。
      BitBucketのサイトで、今ではGitもサポートしていることを確認しました。

  2. […] 〔参考記事: GitHubがなければ今日の姿のNode.jsはなかっただろう。〕 […]

  3. […] 人材の移動の激しいスタートアップ業界にいながらも殆どの従業員が辞めないことや、最近1億ドルという巨額の投資を受けたことが話題となっている、ソーシャルコーディングサービスGithubのCEO、Tom Preston Werner氏が「イノベーションを起こすためのGithubの哲学」について先日のOpenCoSFというイベントで語った。 […]

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中

フォロー

新しい投稿をメールで受信しましょう。

現在350人フォロワーがいます。