GREEにおけるJenkins, その1

はじめまして。エンジニアの岡崎(@watermint)です。今回はGREEにおけるJenkinsの利用について紹介します。
Jenkinsは継続的インテグレーションの代表的なツールです。JenkinsがどういうものかはJenkinsコミュニティーの説明をみると良く分かります。

一言で言えば、Jenkinsは、容易ないわゆる「継続インテグレーションシステム」を提供し、開発者が変更をプロジェクトに統合でき、ユーザーがより新しいビルドを容易に取得できるようにします。自動化された継続的なビルドは、生産性を向上させます。

Meet Jenkinsより

継続的インテグレーションという言葉について耳慣れないというかたは、JenkinsならびにJenkinsの前身であるHudson開発者である川口さんによる解説をご覧ください。

GREEにおけるJenkinsの導入

GREEでのJenkins導入のモチベーションは大きく分けて2つあります。自動化による生産性向上と、作業の属人性を排除することです。Jenkinsを使ってプロジェクトの成果物を自動的にビルドしたり単体テストを実行するようになれば、エンジニアはより開発作業に集中できます。また自動化する過程においてビルドやテストといった作業フローが明確化され、○○というプロダクトはAさんしかビルド方法が分からないといった属人性が排除することが出来るのが大きなメリットです。

導入前後でのワークフローの違い

利用ケース (ネイティブアプリのビルド)

GREEでは多くのAndroid, iOSネイティブアプリを開発しています。これらのアプリはエンジニアの開発環境にてビルド/テストした後に、ステージング環境等にて品質チェック担当がチェックしてGoogle PlayやApp Storeなどに登録します。

Jenkins導入以前は担当者がそれぞれ連絡を取り合って、バイナリのパッケージングしたファイルを受け渡しし、手元の端末で動作確認、マーケットへの登録作業をしていました。

この過程では、下記のような問題がよく目にされました。

  • そもそも担当のエンジニアがいないと最新版のアプリが検証できない
  • ファイル受け渡しの際にそもそもどれが最新バージョンなのか分からなくなる
  • Google Play/App Store登録時にファイルが不足している
  • エンジニアの使っているXcodeバージョンが異なっていてApp Storeに登録できないケースがある

Jenkinsでアプリのビルドを自動化したことにより、ディレクターは最新のアプリをいつでも検証できるようになり、Google Play/App Store登録時の入稿ミスも格段に減少しました。エンジニアもアプリの受け渡しには少なからず煩わしさを感じていましたがそういったストレスも軽減され、自然と多くのプロジェクトがJenkinsを利用するようになりました。

このようにGREEにおけるJenkinsの導入は、小さなところからはじめて成功したパターンを水平展開することによって、会社全体の開発生産性を向上してきました。

次回はJenkinsを使った品質管理について紹介します。お楽しみに。

お知らせ

7月29日にJenkins ユーザ・カンファレンス 2012 東京が開催されます。S406–5 : 開発者とディレクターの視点を変えていく方法 (スポンサーセッション:GREE)というセッションにて登壇いたしますのでご期待ください。