Androidアプリケーション開発でもJenkinsによるCIは有効
また「CI導入ライブ-jenkins ci server」と題して、末広尚義氏(@bols_blue)によるCI(継続的インテグレーション)についてのセッションが行われた。
末広氏はまずJenkinsの紹介を行い、「開発中のバグが発見されやすくなる」「テスト自動化により開発者がテストの実行に時間を費やさないで済む」「問題があればすぐに発見されるので、開発者は安心してプログラミングを行える」というCIのメリットをまとめた。
Androidはさまざまな端末が四半期ごとに追加され、定期的にOSが最新バージョンにアップグレードされる。これらの新端末や新バージョンに即座に対応できないと、Google Playなどで一時的に「動かない」といった悪評が集まりビジネスに悪影響を与える、という現状を紹介。結果、Androidアプリケーション開発では、継続的かつ頻繁にアプリケーションの動作をテストする必要があり、CIによる継続的な自動テストが大変有効であると結論付けた。
一方、末広氏はJenkinsによるCI環境をAndroid開発に導入する上での課題を以下のように説明。
- JenkinsへのAndroid SDKの導入
- 自動化のためのAntファイルの確保
- 複数デバイスがつながっている場合のデバイス指定方法
末広氏は、これらの課題への対応策をライブ形式で実演していった。
まずJenkinsへのAndroid SDK導入については、エミュレータプラグインの導入で実現した。またエミュレータ以外にも、ビルドチェックとしてmonkeyrunnerの実行も推奨できるとアドバイスを行った。
Antファイルは、「android update project」「Android update test-project」のコマンドでJenkins用のAntファイルを生成することで確保した。
複数デバイスに関しては、Jenkinsの「マルチ構成プロジェクト」でユーザ定義を活用することでパラメータを置換。セッション用の仮想的な環境で複数デバイスのテストを同時実行できるようにした。
また質疑応答で、「画面キャプチャを使用するテストはmonkey runnerなどでできるが、現状導入コストが大きい」「エミュレータだけでなく実機テストも設定も可能である」との解説を行った。
なおセッション内容の詳細は、@ITのATECリレー連載の記事として掲載された。
何をどのように自動化すべきか考える
ライトニングトークでは「Androidアプリリリース作業効率化(2) ~テスト自動化の考え方~」と題して、神原健一氏によるテスト自動化についての解説が行われた。
神原氏は、Androidアプリケーションのリリースにあたって、ビルド、テスト、デバッグの繰り返しに手間がかかり、それがモチベーションの障害となっていると指摘。解決策の一つとして神原氏は、対応バージョン、バージョンアップ頻度、テスト対象、テストの規模、複雑度などを検討し、テストツールによる自動化で各テストを最適化する方法を紹介。具体的なテストツールとして、JUnit、Robotium、Roboletric、MonkeyRunner、Sciroccoを取り上げた。
そしてバージョンアップの頻度やテスト自動化の実現可能性に応じて、さまざまな組み合わせを検討しているという。具体的には、「JUnitによるビジネスロジックのテスト」「Robotium+Sciroccoによる画面などのテスト」を第一段階のテストとして実施し、次の段階としてテストが困難な箇所への補完テストを行う、といった事例が解説された。
Jenkinsとgerritを組み合わせ、レビュー環境を整備する
ライトニングトークでは、@myb1126氏が「Hello, CI! Jenkins met gerrit ! - テスト部 gerrit 導入中間報告 -」と題して、gerritとJenkinsとを組み合わせる方法を解説した。
@myb1126氏は、Jenkinsにgerritを組み合わせることでテスター/レビューアを1人増やせると提案。gerritはGoogle製のレビュー管理システムであり、コミットに対して「イイね!」を付けたり、レビューの承認などを設定したりできるようになる。またクライアントやインストール手順も分かりやすい、と解説を行った。そして、CIと連携させることでコミット忘れやデグレードの事前検出でき、レビューを効率化できると解説した。




