【業界注目】CROOZ主催の勉強会“テックヒルズ”が5度目の開催 今回のテーマは?【開発者専用】

2013-03-23 12:31 投稿

●いち早くGitを導入、運用する5社の開発者が登壇

2013年3月22日、CROOZが主催する“第5回テックヒル ズ”が、都内の六本木ヒルズ内アカデミーヒルズで行われた。次世代技術の可能性を追求する開発者向けの技術勉強会として、CROOZが昨年から定期的に実施しているこのイベント。これまで、 “全文検索&検索を利用したサービスの使命、利用プロダクト、事例紹介”、“「ネイティブアプリ」vs「Webアプリ」これからのアプリケーション開発の トレンド”、“2012..Flashの終焉!? ~Flashの今後を見抜く~”、“UI、UXの衝撃”といった、そのときそのときの旬な開発技術をテーマに、ゲスト見識者を招いてのプレゼン、パネルディスカッションが行われている。

★前回の第4回テックヒルズのレポート記事はこちら

そして、“Go to Git! ~さらばSVN~”と題した今回のテックヒルズのテーマは、近年ウェブ業界で注目を集め、多くの技術者に認知されるようになった“Git”(プログラムのソースコードなどを管理する分散型バージョン管理システム)について。Gitは、その高いパフォーマンスや強力なマージ(決まった手順や規則に則り、複数のデータをひとつにまとめる)、障害耐性などにおいて非常に優れているとされ、SVN(集中型バージョン管理システム)からGitへの移行を検討する企業も徐々に増えつつあるようだ。しかしながら、GitはSVNとは基本設計がまったく異なるため移行への障壁があり、SVNほどの歴史がないために構築や運用に関わるノウハウが十分に蓄積されておらず、各社ともGitに対して試行錯誤をくり返しているのが現状だという。

そこで、今回のテックヒルズでは、Gitの導入、運用をいち早く実施した5社の代表者が登壇。Git導入時の過程、構築及び運用で培ったノウハウや事例を紹介した。

●SCMの進化がソフトウェア開発のパラダイムシフトを後押し

▲グリーの大場氏によるプレゼンテーション。

最初の登壇者は、グリーの大場光一郎氏(開発本部 インフラストラクチャ統括部クラウド基盤チームマネージャー)。「そもそもソースコード管理システムとは何なのか? 我々はどこから来てどこに向かうのか?」と大場氏は、Gitを語るうえで、まずはSCM(サプライチェーン・マネジメント)の歴史について紹介。各システムについてその特徴を挙げた(以下、抜粋)。

SCCS……最初のソースコードバージョン管理システムで、1972年にベル研究所のMarc J.Rochkindが開発。SCCSがもたらしたことは、“バージョン管理という概念を発明”、“バージョンを管理するシステムの要件を定義”、“データ構造を定義、基本的なコマンドの使用を定義”。

RCS……GNUフリーソフトウェアで、コマンド体系にSCCSを踏襲。“バイナリファイルをサポート”、“ロックベースのマージ”。商業用のSCCSを参考に誰もが使えるようにしたシステム。

CSV……複数ファイルのプロジェクト管理、最初はRCSのwrapper、C/S型のネットワーク対応 copy-modify-merge model。
CSVもたらしたことは、“時間や場所を越えた開発プロジェクト”、“オープンソースの開発(バザールモデル)”の実現。

SVN……クリーンなアーキテクチャで、多様な環境で動作させられる。単一リポジトリの限界。

Git……Linux kernelのソース管理のためにLinusが開発。分散リポジトリに対応し、コマンド体系が変わった。

Gitの特徴は、“更新の履歴や開発の方向性はプロジェクト毎だけでなく人によって多様”、“中央リポジトリからの解放による手元の高速性”、“ブランチを使った並行開発が実用”、“プロジェクトへ貢献する方法の多様化”、“commiterという権限が曖昧に”、“github”と説明。Gitの登場により、いままでのSCCSの流れが変わるとした。このSCMの歴史について、大場氏は「SCMの進化がソフトウェア開発のパラダイムシフトを後押しする』と説明した。

これを踏まえて、大場氏はグリー社内におけるSCMについても説明。黎明期は、同社の田中社長みずからが分散管理をしていたというエピソードを交え、2005年にSVNを使ってバージョン管理をスタートさせ、2010年夏ごろからGitへの移行、githubを導入。以降は、「グリーの中でもパラダイムシフトになっている」(大場)と、Gitが自由に使える環境が整っているとした。

●ソフトウェアだけでく、チームや組織も設計する

▲ドリコムの大仲能史氏。

続いて登壇したのは、ドリコムの大仲能史氏(ソーシャルゲーム事業本部)。まずは理想の開発フローについて、「世界中の開発者の中で、pull request文化が主流になりつつあるので、普段の開発にも取り入れたい」と大仲氏。まず、“理想の開発フローとsvnとgit”について以下のように解説。

・チケット駆動開発をしたい(OSSで成功しているモデルだから作業管理がしやすくなる

・svnは各所でTiDDを妨げてくる(ブランチを切るコストが高い、mergeは頭が悪い)

・gitにはTiDDを実行する周辺環境が揃っている(githubとpull request、travis-ci等)

では、それをsvnでは実現できないのか? これについて大仲氏はsvnについて“svnは重い”、“1.7で緩和したけどまだまだ重い”、“やりたい開発フローに併せられない重さ”と表現。逆にこれがgitになると、“ツールが文化を規定する(速くなる、楽になるだけで世界が変わる)”、“svnでは到達しづらい目標点に軽くたどり着くことができる”とし、「“知の高速道路”、“巨人の肩”に乗らない手はない」と語った。

つぎにgitに移行して感じているメリットについては以下が挙げられた。

・十分に速いリポジトリブラウザ(githubやbitbucket、gitlabなど、tracやredmine+svnとは桁が違う閲覧性)

 

・TiDDをやりやすい(ブランチを切るコストやブランチをマージするコストが低い。diffを見ながら会話して、1クリックでマージできるpull requestという仕組み)
・メンバーの意識改革に繋がる(ちゃんとコードを見てもらえる安心感、ちょっとした思いつきをcommitする障壁が下がること。ペアプロやコードレビューはものすごく幸せな環境であること)

そんなgitだが、柔軟移行するための戦略として、“新規アプリには勝手に始めてもらう(やる気がある人を妨げない環境があればよくて、中央のgitリポジトリだけ用意すると開発が始まる)”、“既存の数年運用していたアプリをどう移行するかが最大の肝(そこはsvnとのクロスコミットで解決)”といったことが挙げられた。ちなみに、移行期間を設けることも重要とし、クロスコミットや、svnにcommit/gitにpushとどれでも対応できるようにしたり、まずgitに慣れてもらって、その間にcherry-pickが必要なリリースフローを直すといったことをやるといいそうだ。

また、移行時の準備のときは、社内にひとりは居るgit好きに任せると漏れがちになる部分を重点的にチェックすることもポイントだと大仲氏。そのチェックポイントは、“上を倒す”、“横を倒す”、“継続的に運用する”という3点。

・上を倒す(会社に対してgithubの説明とレビュー文化の説明をする)

・横を倒す(svnをうまく使えていない非エンジニアや、svnで回っているので移行する理由がない人に対してgitのメリットを提示したり、実際にgitを使っている元気なプロジェクトが便利で楽しそう使っているところを見せること。加えて、全社的に移行する姿勢を見せたり、わからないことがあったときにすぐに聞ける環境を作ったり、各プロジェクトにふたり以上gitのコミットオブジェクトを理解している人を配備するなど、移行しない理由を潰す)

・継続的に運用する(バックアップ、冗長化、gitlab)

そして、すべてのプロジェクトを移行するために、gitでのさまざまな手順書を用意したり、うまい使いかたを発表してもらうほか、移行していないプロジェクトに対して仲間外れ、カッコ悪いという空気を作る(開発者をうまく怒らせるとすごい生産性を発揮するため)といいと説明した。最後に大仲氏は「ソフトウェアだけじゃなく、チームも、組織も、すべて設計せよ」と締めくくった。

●偉い人には解らんのですよ

▲クルーズの梅田氏。

CROOZの梅田晶太氏(技術統括本部 Team Venus)のプレゼンテーションは“Gitと出会って人生変わった”というテーマで行われた。まず、技術的負債という言葉を揚げた梅田氏。この言葉を要約すると、“ブランチ開発ができていない問題”、“バージョン管理ができていない問題”、“環境差異が出る問題”のことを指すようだ。

 

では、これらの問題をどう解決するべきか? これについては“ヤク刈(yak shaving)”という言葉を用いた梅田氏。このヤク刈とは、ソフトウェアに関する書籍やWebでよく見られる言葉で、その意味は“一見無関係に見えるけど、真の問題を解くために必要な問題を解くために必要な問題(これが何段階も続く)を解くのに必要な活動”のことらしい。

 

つまり技術的負債の問題を解決しようとした結果、さまざまな問題が出てくるわけだ。だから辛くても技術的負債(枯れてしまった稼働中のソース、果てしない歴史を持つsvnのコミットログ、どうしてこうなったのかいまだにわからない構成)を直視して、問題を刈り続けていくしかないという。

 

そして実際、組織にGitなどの新しいツールを導入するためにどうすればいいのか、という問題について梅田氏が、つぎのようにアドバイスを提示した。まず、「新しいことをやりたい!」と会社の偉い人にお願いすると「やる意味があるのか?」、「メリットを数値化しろ」など、いろいろ言われるのは必至。そこで梅田氏が出した答えが、「だったら勝手に作るしかない」ということ。それは、ある程度動くものを見せないと偉い人にはわからない、話を聞いてくれないからだという。そうしたことを行ってメリットがあると思わせることが「俺たちの仕事」(梅田)とのことだ。最後に、もし勝手に作っていまの会社にいられなくなったら、「CROOZではエンジニアの採用を強化中です(笑)」と、しっかりとオチもつけていた。
●明確な費用効果は期待しない

▲モバイルファクトリーの阿部氏。

モバイルファクトリーの阿部正浩氏(開発推進準備室 室長)によるプレゼンテーションは、″Git移行の3つの山”というもの。同社では、2010年にSVNからGitへと移行しているとのことで、移行にあたっては「動機、実行、その後という3つの山がありました」と阿部氏。

まず動機についてだが、そもそも職場ではSVNでも困ることはなかったという。従って、“中央集権型(SVN)から分散型(Git)になったからどうなの?”、“ネットが切れていても開発できるというけど会社にいればそんなことはない”など、Gitのメリットがあまりメリットとして捉えられていなかったという。ただ、ひとつ納得できたメリットが“速い”ということ。Gitを使うと、またいろいろと見えてくるが、まずは速いというところが決めてとなったと語った。そうして同社は2010年にGitへと移行し、つぎの山である“実行”へと続く。

その実行だが、「けっこう楽だった」と阿部氏。それは同社にはGitが好きな人がひとりいて、その子がGitに関する調査や勉強会、アナウンス、実作業、アフターケアなどを中心となって行ってくれたからだと言う。逆に言えば、そのGit好きな人がいなければ実行も困難だったかもしれない。つまり原動力になる人がいるかいないかが大きなポイントになる。とくにアフターケアの面だが、これはIRC(チャット)を利用したり、社内WikiなどでGitに関するHow to、SVN対応コマンドを掲載するなどして、Gitについての理解を全社的に深めていったようだ。

そして、最後の山“その後”についてだが、阿部氏曰く、「正直あまり発展はしていない」ようで、標準のブランチ戦略を作りたい、デザイナーさんなどにも使わせたい、日報やITSとの連携を改良したい、GHEを使ってみたい、なかなか時間がとれないなど、いろいろな考え、思いを画策中のようだ。

最後に、Gitへの移行を検討している現場の管理者の人たちに向けて阿部氏は“専門職の嗅覚を信じよう”、“熱心で慎重な人に任せよう”、そして“明確な費用効果は期待しない”というアドバイスを送っていた。

●gitは工夫次第でもっと便利に!

▲KLabの於保氏と牧内氏。

KLabからは於保俊氏(開発制作本部 第4開発制作部 エンジニアリングマネージャー)、牧内大輔氏(開発制作本部 第2開発制作部 エンジニアリングマネージャー)の2名で登壇し、“metahub for github ~git移行のその先にあるもの~”をテーマにプレゼンテーションを行った。

まず、KLabにおけるDVCS導入の歴史について触れられ、SVNに始まり、bazzarの普及(SVNに近い使い勝手のDVCSとして)、リポジトリ管理体制の構築とgit+githubの導入、bitbucketとgithubの蜜月、そしてgithubからgithub:Enterpriseへと移行していることを紹介。現状としては、github上でリポジトリ(システムの開発プロジェクトに関連する情報の一元的なデータベース)が増えている、課題として、レビュー要請が増えており、github推進派から“ソーシャルコーディングならレビューがちゃんとできる”との声が挙がっているとのこと。

ちなみにKLabのリポジトリの特徴として、案件は多いが案件間の差異は比較的少なく、ベースとしているFWはほぼ同じで、似かよったリポジトリがたくさんあるのだそう。従って、「レビューするために自動化できないか?」ということになり、そこで目を付けたのがgithubのAPIだった。APIは、commitやtagの取得・作成やIssueの作成・取得・変更など、比較的いろいろなことができるもので、中でもPullRequest(分散バージョン管理の利点を生かしたコードレビューのパッチ取り込み)を利用することで、PullRequestを取得、パターンマッチして蓄積、まとめて表示させるなど、レビューの効率化が求められていた。その効率化を目的に作成、実装されたのが、KLabが生み出したmetahubだった。metahubの登場以降、いろいろなバグを釣り上げることができるなど、git、githubの導入からmetahubの誕生と、「gitもgithubも強力で便利。githubにはAPIもあるので、工夫次第でもっと便利になる」と両名はgitへの移行を薦めていた。

●最後に、登壇者5名によるパネルディスカッション

第一部のプレゼンテーション終了後、登壇したグリーの大場氏、ドリコムの大仲氏、クルーズの梅田氏、モバイルファクトリーの阿部正浩氏、そしてKLabの於保氏がステージ上に勢ぞろい。そして、“Git運用の理想のカタチ”と題したパネルディスカッションが行われ、Gitを使おうと思ったキッカケ(於保氏曰く「お嫁さんがGitを使っていたから」)や、gitとsvnの違いについて(CROOZの開発者視点から見たgitとsvnの比較を紹介)、Gitを安定して運用する方法について語り合われていたぞ。

そして、プレゼンテーションとパネルディスカッションを通じて、今回のテックヒルズは、“新しい文化を恐れないこと、そしてGitはそんなに難しくない”ということでまとまっていた。このように、毎回そのとき旬な技術について、さまざまな企業の見識者がそれぞれの考えを発表し、来場しているほかの技術者と共有していき、業界全体の活性化につながっていく。これからも定期的に開催されていくテックヒルズに注目していきたい。

 

▲最後に登壇者5名による“Git運用の理想のカタチ”と題したパネルディスカッションが行われた。

※テックヒルズ公式サイトはこちら

Amazon人気商品ランキング 一覧を見る

最新記事

この記事と同じカテゴリの最新記事一覧