誰もが自由にプログラムを変更・公開し、開発元へ還元できる!
大場氏はまず、GitHub導入以前にグリーが抱えていた開発の課題として、「急激な増員」「業種の増加」「国際化」の3つを挙げた。
急成長する企業の宿命ともいえるが、2010年には200人程度だった社員数が毎月50人のペースで増え続け、2012年には約1400人の規模にまで拡大。グリーでは以前から社内でスカイプのチャットなどをよく活用していたが、エンジニアの人数がスカイプの1チャットルームに参加できる最大人数である300人をはるかに上回り、開発時の情報共有に支障をきたすようになったという。
また、以前はWeb系のエンジニアとデザイナーがいればほとんどのプロジェクトがまわったが、スマートフォン対応や3Dなどのリッチコンテンツ開発も増え、1つのプロジェクトに多様な業種のスタッフが関わるようになってきた。さらに、海外9拠点でビジネスを展開するようになり、現地採用のエンジニアはもちろん、日本の開発チーム内にも外国のエンジニアが増えるなど、国際化も進んだ。
こうした背景から、多数のエンジニアが円滑にコミュニケーションを図りながら開発生産性を向上するために、開発環境の見直しが強く求められるようになった。そこでグリーが着目したのがGitおよびGitHubである。
「ちょうどその頃、開発環境の動向としては、ソースコード管理(バージョン管理)の主流がSubversion(SVN)からGitに変わりつつあり、多くのOSSプロジェクトでGitへの移行が進んでいた」(大場氏)
SVNが単一リポジトリで中央集約型のバージョン管理システムであるのに対し、分散型リポジトリのGitは開発者一人一人が自分のPCなどにそれぞれリポジトリを持てるのが大きな特徴だ。そのため、ネットワークに接続していない状態でも、プログラムを変更してリポジトリにコミットすることができる。そして、このGitを使ってプロジェクトをホスティングできるサービスがGitHubだ。
「GitHubとは、ひと言でいえばプロジェクト管理にソーシャル機能をビルトインしたもの」と大場氏は語り、「GitHubの素晴らしいところ」としてforkとpull requestの機能を挙げた。forkは、他人のプロジェクト(リポジトリ)のコピーを自分のリポジトリに作成できる機能で、書き込み権限のないプロジェクトでもforkで自分の手元に持ってくれば自由に変更できるようになる。変更したものはそのまま公開することも可能だ。また、forkで自分が加えた変更を開発元のリポジトリに還元するための機能がpull requestで、pull requestを受け取った開発元はその内容をレビューして必要と判断すれば、merge機能で容易に自分のプロジェクトに統合できる。
「GitHubがなかった時代は、ソースコードを修正してプロジェクトを変更できるコミッターがソフトウェア開発における『特権階級』であり、それ以外の人はメインストリームの変更が行えなかった。それがGitHubの登場により、誰もがソースコードを変更してそれを公開し、さらには開発元へ還元できるという環境が実現した。この変化は非常に画期的なことで、これを『コードの民主革命』と表現する人もいるほど」(大場氏)
例えば、SourceForgeなどの従来のプロジェクトホスティングサービスでは、「プロジェクトに人がぶらさがる」ようなイメージで、あくまでもプロジェクト中心に管理されていた。それに対して、GitHubは「その人がどのプロジェクトに参加したのか」などがひと目で分かるUIとなっており、ソーシャル機能を提供することで、プロジェクト中心ではなく人間中心の管理となっているのも特徴だ。