サイバーエージェントを支える技術者たち

第51回開発効率向上を目指してGitHub Enterpriseを導入

経営本部部門に異動して開発環境の整備に専念

アプリケーションやサービスの開発、あるいはWebサイトの制作などにおいて、欠かせないツールとなっているのがバージョン管理システムです。とくに多人数で開発を行う際、いつ誰がどのファイルを編集したのかをすばやく把握できる、あるいはファイルに加えた変更履歴を簡単に参照できるといったメリットを持つバージョン管理システムは、プロジェクトを円滑に進めるうえで極めて有用です。

サイバーエージェントのアメーバ事業では、このバージョン管理システムとしてApache Subversion(SVN)をメインで使っていましたが、エンジニアの間から「Git」を使いたいという声が高まり、それに応える形で「GitHub Enterprise」を導入、2013年4月から本格的に運用を開始しています。この導入プロジェクトを主導した奥田順子氏は、そもそものきっかけを次のように説明します。

「実を言えば、Amebaで使うバージョン管理システムをGitにしなければならない大きな理由はなかったんです。それまで使っていたSVNでも、問題なく開発は進められていましたから。ただ、Gitを使いたいという要望がエンジニアの中で大きくなり、そうした声があるなら提供するべきではないかと考えたわけです。また、導入するのであればエンジニアやデベロッパ、そしてデザイナの皆が使いやすく、そして導入するメリットの大きいものを提供したいと思い、具体的に何を導入すべきかの検討を始めました。」⁠奥田氏)

奥田氏はもともと、Amebaのサービス全般で利用する基盤ソフトウェアを開発するチームに所属しており、最近ではスマートフォンプラットフォーム向けの認証機能を開発していたとのこと。それに加えて社内の開発環境の標準化などを検討する委員会にも所属しており、以前から開発環境に対する問題意識があったようです。

「Amebaはアプリやサービスを作る力はあると思いますが、一方で開発環境が充分に整っていないと思っています。そのため、エンジニアが本来苦労すべきではないところで苦労しているようなケースもあり、開発のための環境を整えれば作業効率は上がるんじゃないかと考えていたんです。」⁠奥田氏)

委員会にはスキルフルなメンバーがそろっていたということですが、ただ全員が本業は別にある掛け持ちの状態だったため、何かをしようとしても、それに費やせる時間は限られてしまいます。そこで奥田氏は、それまで携わっていたプロジェクトが一段落したタイミングで経営本部部門へ異動し、本格的に開発環境の整備に乗り出すことにしました。

写真1 奥田順子氏
写真1 奥田順子氏

「経営本部部門はアメーバ事業Ameba事業本部の開発プロジェクトを横断的に見る役割を担う組織であり、開発環境の整備を行ううえではうってつけの部門でした。もともと開発環境を整備したいと考えていたので、それまでのプロジェクトが一段落したタイミングで経営本部部門への異動を希望しました」⁠奥田氏)

こうして経営本部部門に異動した奥田氏は、懸案だったGitリポジトリの導入に向けて本格的に調査を開始します。

GitHub Enterpriseでソーシャルコーディングを実現

さて、現在Gitが人気を集めている理由としてGitHub図1の存在があるのは間違いないでしょう。GitHubはGitリポジトリのホスティングサービスであり、世界中のエンジニアがオープンソースプロダクトの開発などで活用しています。

図1 GitHub。ソーシャルコーディングという考え方を広めた「GitHub⁠⁠。世界中のエンジニアがオープンソースソフトウェアの開発などに活用している
図1 GitHub。ソーシャルコーディングという考え方を広めた「GitHub」。世界中のエンジニアがオープンソースソフトウェアの開発などに活用している

GitHubは、Gitリポジトリ環境をそのまま提供しているだけではなく、エンジニア同士がつながって共同で開発できる「ソーシャルコーディング」を実現していることが大きな特徴になっています。たとえば、別のエンジニアが進めているプロジェクトのソースコードにバグがあり、それを修正してオリジナルのリポジトリに反映したいと考えた場合、forkと呼ばれる機能を使ってソースコードを取り込んで修正し、その内容を反映するようにオリジナルの開発者にリクエストを送ること(Pull Request)ができます。このようにエンジニア同士がソースコードを介してつながり、ソーシャルコーディングを実現できることがGitHubの人気の理由です。

エンジニアからGitを使いたいという話が出たとき、単純にGitリポジトリを使いたいというよりも、GitHubのようなソーシャルコーディングができる環境が求められていると感じたと奥田氏は話します。

「単純にGitリポジトリを導入して済むのであれば、それほど難しいことではありません。ただ、Gitを使いたいと言っている人の多くがリポジトリだけではなく、GitHubで提供されているようなソーシャルコーディングのための環境を使いたいのだろうと解釈しました。そのため、Gitリポジトリだけ導入しても意味がないと考え、ソーシャルコーディングを実現できる環境を用意することにしたんです。」⁠奥田氏)

GitHubと同様のソーシャルコーディング環境を実現するシステムは、すでにいくつも提供されています。本家であるGitHub自身が特定のメンバーだけで利用できるプライベートリポジトリサービスを提供しているほか、GitHubと同じ機能を自社のサーバ上で実現できる「GitHub Enterprise」もあります。また、GitHubクローンである「GitLab」「Gitorious」を利用するのも手でしょう。こうした選択肢の中から、なぜGitHub Enterpriseを最終的に選択したのでしょうか。

「ソースコードは会社にとって極めて重要な財産であるため、セキュリティ上の理由からGitHubのプライベートリポジトリサービスを外しました。またソーシャルコーディングの実現を考えたとき、GitLabはソースコードの参照などの機能で違和感がありました。それで残ったのがGitHub EnterpriseとGitoriousだったのですが、提供されている機能や運用面までを総合的に考慮し、最終的にGitHub Enterpriseにしました。」⁠奥田氏)

多くのエンジニアの協力を得て無事に導入

しかし、GitHub Enterpriseは有償のサービスであり、社内で稟議を通すためには投資する価値があることを示す必要がありました。そこで奥田氏は、GitHub Enterpriseを単純に導入するだけでなく、社内のバージョン管理システムをGitHub Enterpriseに集約することによって学習コストを削減できるとメリットを訴え、社内の了解を得ることに成功しました。

「最初はとにかくGitHub Enterpriseを導入することにこだわっていたのですが、そうではなくてバージョン管理システムの統合に重きを置くべきだと考えを改めたんです。アメーバ事業部はSVNをメインで使っていましたが、実は古いプロダクトではCVSでソースコードを管理していました。このように複数のバージョン管理システムがあると、プロダクトによってそれらを使い分けなければなりません。これはとくに非エンジニアの人たち、具体的にはHTMLやJavaScriptを扱うデベロッパや、画面やイラストなどを考えるデザイナにとっては大きな負担ですし、学習コストもかかります。そこでGitHub Enterpriseに一本化すれば、こうした課題を解決できると社内を説得したんです。そうすると、上の人たちも納得してくれてOKをもらえました。」⁠奥田氏)

こうしてGitHub Enterpriseの導入が決まり、さっそく奥田氏は動き出します。この際、多くの人たちの協力を得られたことが大きかったと奥田氏は言います。

「今回、現場のエンジニアがすごく協力してくれたんですよ。勉強会も手伝うし、何かあったら自分たちがサポートするからと。これほど周りに協力してもらえるとは思っていなくて、⁠ちゃんとしてくれよ⁠と叱咤激励を受けることは想像していたのですが、温かい言葉やサポートばかりでした。GitHub Enterprise関連の記事が載ってますよ、といって教えてくれたり、⁠こういう講演を聴いてくるのでフィードバックします⁠と言ってくれたりしました。導入を決めてから稼働するまで1ヵ月程度だったのですが、多くの人たちの協力があったことでスムーズに導入できました。」⁠奥田氏)

この導入に際して、奥田氏は実際に利用するエンジニアやデベロッパ、デザイナが戸惑うことなく移行できるよう、手厚いサポートを実施しました。

「GitHub Enterpriseに全面移行するにあたって、やっぱり不安を覚えている方もいたんです。それで、GitとGitHubのそれぞれで勉強会(写真2)を開催し、その資料と動画をAmebaのWikiで共有しました。さらに、開発者がつまずくであろう部分の手順書図2を可能な限りまとめ、WikiやYammerを利用してお問い合わせ窓口を設けるなど、どんな些細なことでもサポートしていきたいという姿勢をできるだけアピールするようにしました。とくに非エンジニアのデベロッパやデザイナの負担をできるだけ少なくしたいという点は強く意識していましたね」⁠奥田氏)

図2 奥田順子氏が用意した手順書。動画を利用するなど、戸惑うことなくGitHub Enterpriseを使い始められるよう配慮している
図2 奥田順子氏が用意した手順書。動画を利用するなど、戸惑うことなくGitHub Enterpriseを使い始められるよう配慮している
写真1 勉強会の様子
写真1 勉強会の様子

多くのメリットをもたらしたGitHub Enterprise

実際に運用を開始したあとも、とくに混乱することなく業務で使えているようです。

「驚くほどトラブルも混乱もなく使い始めることができています。もともと⁠手伝いますよ⁠って言ってくれていたエンジニアが率先して自分たちのプロジェクトをSVNからGitHub Enterpriseに移行してくれたり、便利なツールを教えてくれたりして本当に助かりました。」⁠奥田氏)

GitHub Enterpriseの導入は、業務にどのような影響をもたらしたのでしょうか。奥田氏は自身のエンジニアとしての経験も踏まえて、次のように効果を話してくれました。

「まずソースコードを見るのがすごく楽しくなりましたね。GitHub Enterpriseであれば、ソースコードを検索したり、スターを付けてソースコードを評価できるのがすごく簡単ですし、別のツールを使わなくてもレビューした結果をソーシャルに共有できるのはすごく便利です。実はAmebaの中でも、グループによってソースコードをレビューするところもあれば、そうでないところもあるんです。ただ、今回GitHub Enterpriseを導入したことで、今までよりも簡単にレビューできるようになり図3⁠、ハードルが下がったことは大きな成果の1つかなと思っています」⁠奥田氏)

図3 サイバーエージェントで運用中のGitHub Enterprise。容易にレビューできるようになったことで、ソースコードの品質向上にもつながるのではと奥田順子氏は期待する
図3 サイバーエージェントで運用中のGitHub Enterprise。容易にレビューできるようになったことで、ソースコードの品質向上にもつながるのではと奥田順子氏は期待する

さらに奥田氏によれば、複数のサービスで共通して利用できるライブラリが注目されるようになるメリットもあるようです。

「ライブラリを作っても、社内に⁠こういうものを開発したのでぜひ使ってほしい⁠と発信する人は少ないんですね。でも、開発されたライブラリの中には有用なものがたくさんあるわけです。そうしたライブラリをGitHub Enterpriseにコミットしておけば、誰かが見つけてソースコードをチェックし、やりとりしてさらに完成度の高いものになったり、社内に広まったりすることにつながります。こういうところもGitHub Enterpriseのメリットですね。」⁠奥田氏)

開発効率を高めていくうえで、今回のバージョン管理システムのようなものを有効に活用し、環境を整備していくことは大切でしょう。しかし一方で、そうした作業は後回しになることも少なくありません。そうした状況を見て、自ら改善に乗り出す奥田氏のような人材がいることは、サイバーエージェントの大きな強みの1つではないでしょうか。

おすすめ記事

記事・ニュース一覧