現代の開発現場において欠かせないCI/継続的デリバリを、iOSアプリ開発に適用するためのツールやノウハウを解説します。
CI(Continuous Integration、継続的インテグレーション)とは、プロジェクトの成果物を継続的に統合し、ビルドやテスト、インスペクション(ソフトウェアレビュー)などを実行する習慣のことです。
そして継続的デリバリ(Continuous Delivery)とは、ソフトウェアを素早くリリースして、プロジェクトの成果物に対する継続的なフィードバックを得られる仕組みを作る、CIを含む開発フロー全体の流れのことです。これらは、近年のソフトウェア開発において必要不可欠なものとなっています。
下記の記事は、CIの基礎知識と導入するメリットを解説しています。併せて読むと、より一層理解が深まると思います。
iOSアプリ開発でCI/継続的デリバリを導入すると、果たしてどのようなメリットがあるのでしょうか? 大きなメリットとしては、次のようなものがあります。
プロジェクトリーダーやプロジェクトマネージャー、または顧客(受託開発の場合に多い)など、開発環境を持っていないノンエンジニアの人に最新の成果物をすぐに届けられるようになります。
それによって、いつでも誰でも実行可能なアプリをすぐに得られるようになるため、継続的なフィードバックが得られるようになります。
iOSアプリ開発ではバージョンアップによる機能の追加や変更などが頻繁に発生しますが、時には機能の開発が誤った方向に進んでしまい、不必要な機能を作り上げてしまうことがあります。継続的にフィードバックを得ることで機能の実装の軌道修正が早期の段階で可能になります。結果として、アプリがもたらす価値を最大化できます。
ビルド作業を人の手で行うと、ヒューマンエラーを生じやすく、時間を無駄にロスしてしまいます。このようなルーチンワークを自動化することによってプログラマーの作業時間をプログラミングなどに集中させることができます。
また、「プログラマーの開発環境に依存してしまい、別の環境だとビルドできない」といった問題も解決できます。
チームで開発を進めていると、バグが発生してしまったり、コードの修正や変更によってリグレッションを発生させてしまったりすることがあります。
継続的にビルド・テストすると、問題のあるコードを早期に発見しやすくなり、また発見した問題がいつのコミットで引き起こされたものなのか、原因も特定しやすくなります。その結果、問題を早期に修正できるようになるため、品質を向上させることができます。
さて、iOSアプリ開発でCI/継続的デリバリを導入するにはどうすれば良いでしょうか?
CI/継続的デリバリをサポートするツールやサービスは世の中に数多くあります。全てを使う必要はありませんが、それぞれのツールやサービスは相互に関係していることが多く、うまく組み合わせることでより効果的なCI/継続的デリバリ環境を構築できます。
そこで、本連載ではCI/継続的デリバリに必要不可欠な各種ツール・サービスの導入方法や連係方法、使い方のコツなどを幅広く紹介していきます。初回は、イマドキのCI/継続的デリバリ環境を構築するツール・サービスを紹介します。
プロジェクトでCI/継続的デリバリを回すには、ビルドやテストなどを自動化するためのツールやサービスを利用します。「Jenkins」は有名なオープンソースのCIツールです(図1)。
Apache Tomcatなどのアプリケーションサーバー上で動作しますが、単体で動作させることもできます。Javaで作られており、オープンソース(MITライセンス)で提供されています。
ビルドやテストを実行するタイミングは柔軟にカスタマイズ可能です。リポジトリへのコミットをトリガとして実行させたり、cronライクなメカニズムによるスケジューリングで実行させたりといったような方法を採ることができます。
Jenkinsはプラグインが豊富で、さまざまな言語・プラットフォーム向けの多種多彩なプラグインが存在しています。
記事「JenkinsでCIすればiOSアプリのビルドは、もう面倒くさくない」で紹介されている「Jenkins Xcode Integration Plugin」などのような、iOSアプリ開発で使える便利なプラグインもあります。
またグループウェア(「HipChat」「ChatWork」など)と連係するためのプラグインもあるので「テストに失敗したらプロジェクトメンバー全員に通知する」などの仕組みを作ることもできます。
なおJenkinsの他には、「Bot」というXcode 5で導入されたアップル純正のCIツールもあります。アップル純正のツールということもあり注目されています。実行環境にOS X 10.9 Serverが必要であったり、拡張性が少なくできることがまだまだ限られていることもあり、Jenkinsの方が採用されることが多いです。
Copyright © ITmedia, Inc. All Rights Reserved.