SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

特集記事

サイバーエージェントのGitHub活用 ~ 導入から運用体制、開発フロー、勉強会による現場への普及活動まで


  • X ポスト
  • このエントリーをはてなブックマークに追加

開発フロー

 ソースコードを扱うリポジトリでは、git-flow[13]やGitHub Flow[14]などの開発フローを採用するのが一般的です。

 Gitの導入初期は、git-flowとGitHub Flowのいずれかを選択しているプロジェクトが多かったのですが、現在はGitHub Flowのpull request[15]を採用しているプロジェクトが多いようです。また、ブランチ管理はプロジェクトによってまちまちで、完全に自由であったり、バージョンごとのブランチを切っていたり、git-flowのブランチ管理を採用していたりします。

 筆者が携わったプロジェクトでは、開発初期はあまりルールは決めず、開発が安定してきた頃から次のような開発フローに切り替えてきました。

  • GitHub Flowのpull requestを採用
    • 個人のリポジトリにforkして個別開発
    • コードレビューを通ったコミットのみ取り込まれる
  • git-flowのブランチ管理を採用
    • featureブランチとhotfixブランチ[16]を用意
    • タグによるバージョン管理を徹底
    • masterブランチとdevelopブランチ[17]によるリリース管理
  • JIRAチケットとの自動連携
    • feat/JIRA-001/newfeature」というように、JIRAのチケット番号をfeatureブランチ/hotfixブランチに加えることで、JIRAとの連携を自動化(コミットすると自動的にJIRAのチケットに更新内容が反映される)

 また、開発フローに合わせて、次のような他システムとの連携も行っています。

  • pull requestを受け付けるとJenkins上で自動ビルドを実行
  • リポジトリへの変更は全てHipchat上で通知
  • リリースに伴うタグ付けはJenkins上から簡単実行
  • リリースと同時にnpm[18]やmaven[19]の社内公開用リポジトリにモジュールをアップロード

[13] Vincent Driessen氏が提唱したブランチを活用したワークフロー。git-flowのルールに沿って開発を行うことで、効率的にバージョン管理ができます。詳しくはDriessen氏のブログエントリ『A successful Git branching model』とその翻訳版をご覧ください。

[14] 米GitHubがgithub.comの開発時にも利用しているワークフロー。git-flowに比べてシンプル。 詳しくはブログエントリ『GitHub Flow』 とその翻訳版をご覧ください。

[15] 元のリポジトリからfork(リポジトリの完全コピー)した別のリポジトリで変更を行い、変更内容の取り込みを依頼(Request)し、変更内容が確認できたら取り込む(Pull)という、GitHubで利用可能な変更取り込み機能です。

[16] git-flowで定義されている機能追加用ブランチ(feature)とバグ修正用ブランチ(hotfix)。

[17] git-flowでは、開発中の変更はdevelopブランチに反映し、リリース時にmasterブランチへの反映とタグ付けを行います。

[18] node.js用のパッケージ管理の仕組み、およびそのリポジトリ。

[19] Java用のパッケージ管理の仕組み、およびそのリポジトリ。

GitHub Enterprise導入のメリット

 GHE導入によりリポジトリがGitに一元化されましたが、それ以外にも様々なメリットがありました。

ノウハウの共有が手軽
公開設定されているリポジトリは誰でも閲覧できるため、他のプロジェクトのコードを参考にできたり、ライブラリが共有されたりと、手軽にノウハウが共有されるようになりました。

コードレビューの機会が増えた
pull requestを採用すると、開発フローにコードレビューを行うタイミングが自然と入ってくるため、コードレビューを行うことが当たり前になってきます。コードレビューを行うことで、お互いのスキル向上や品質の担保などにつながっています。

モバイル環境でも快適な開発
アメーバ事業本部には、カフェで仕事ができる制度が用意されています。Gitはこうしたモバイル環境下での開発に非常に向いているため、筆者もたびたび利用しながら快適な開発を行っています。

社内プロジェクトのOSS化
GHE上で開発していたプロジェクトを、そのままGitHub上に公開するケースも出てきました(https://github.com/CyberAgentを参照)。Gitを利用していなければ、これほど簡単に公開することはできなかったと思います。

 

おわりに

 このように、多くの社員の協力もあってスムーズに組織にGitが導入され、あっという間に標準リポジトリとして定着しました。 弊社の開発スタイルにも非常に合っていたのだと思います。

 まだGit導入に踏み切れていない、あるいは導入してみたもののなかなか社内に定着しない、そんな環境の方に、本記事が何かしらの手助けとなれたら幸いです。

この記事は参考になりましたか?

  • X ポスト
  • このエントリーをはてなブックマークに追加
特集記事連載記事一覧

もっと読む

この記事の著者

松下 雅和(マツシタマサカズ)

1978年生まれ。SIer2社を経て、2011年に株式会社サイバーエージェントに入社。主にソーシャルゲームのサーバサイド開発やインフラ構築に携わる。関連スキルはJava、JavaScript、Node.js、MongoDB、Cassandra、AWS、Scrumなど。趣味はロードバイク、カメラ、ゲー...

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/8092 2014/09/09 14:26

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング