Xcode5の新しい機能として、 Botという継続的インテグレーションツールが導入されました。
アプリ開発時に、ソースコードを書く以外の部分を担当してくれる、たよりになるツールです。 自動的にビルド・テスト・リリースまでしてくれるので、ちょっと楽に開発を進められるようになるかもしれません。
継続的インテグレーションツール(CIツール)としてはJenkinsが広く使われていますが、BotにはJenkinsとほぼ同様の機能があり、さらにiOS/Macアプリに特化した機能が追加されています。 今Jenkinsを使っている人も一回試してみてはいかがでしょうか。
なお、詳しい公式資料はこちらです。 Xcode Continuous Integration Guide
Botの主な機能
Botには、主にこんな機能があります。
- 自動ビルド
- インテグレーション詳細情報の表示
- BigScreenによるコクピット画面の表示
- Analyze(静的解析)の実施
- UnitTestの実行
- ipaファイルの作成と配布
- ビルド後のメール送信
また、Botでビルド対象とするリポジトリはこの3つです。
- 自サーバーのgitリポジトリ
- 他サーバーのgitリポジトリ
- Subversionリポジトリ
それぞれの機能をもう少し詳しく見ていきましょう。 まず、自動ビルドですが、1時間ごと、一日ごと、一週間ごと、コミットごとの4種類の設定が可能です。 一日ごとの場合には実行時間を指定、一週間ごとの場合には実行曜日と実行時間を指定します。
インテグレーションの詳細表示は、ブラウザでBotサーバーにアクセスすると表示されます。
プロジェクトのサマリー画面では、いままでのビルドやテスト結果の概要、最新のipaファイルのダウンロードなどが可能です。
テストの詳細画面では、それぞれのインテグレーションで実行したテスト結果がテストケースごとに表示されます。 UnitTestはBotサーバーに接続されているiOSデバイスや、複数のシミュレーターで実行することができます。
ビルドで作られたipaファイルはこのArchive画面で配布することができます。
また、iOS端末のブラウザからアクセスすると、Archive画面から直接アプリをインストールすることができます。
画面の左上にある横線アイコンをクリックすると、BigScreenメニューが表示されます。
BigScreenには、Botサーバーにあるすべてのプロジェクトの概要がグラフィカルに表示されます。ちょっとかっこいいので仕事してる気になります。
放置しておくと、自動的に表示されるプロジェクトがきりかわっていくので、使っていないMacなどに表示させておいてもいいでしょう。
インテグレーションが終わったときにメール通知を行うことも可能です。
メールの宛先は自由に設定できますが、メールの文章は変更することができません。 このメールから直接アプリをインストールすることも可能です。
なお、いままでの画面はほとんど英語になっていますが、Botはブラウザの言語によって自動的に表示言語が切り替わります。 (英語に設定したブラウザでアクセスすれば英語が、日本語に設定したブラウザでアクセスすれば日本語が表示されます。)
Jenkinsとの比較
Jenkinsと比較した場合の利点・欠点はだいたいこんな感じかと思います。
利点
- インストールや設定が簡単
- 接続中のiOSデバイスを判別し、UnitTestを行うことが可能
- AnalyzeやUnitTestの実行にほとんど手間がかからない
- ipaファイルの直接配布ができる
欠点
- インテグレーション対象はXcodeでビルドできるプロジェクト(iOS/Macのプロジェクト)のみ
- Xcode5以上でしか使えない。
- MacOSXServerを購入する必要がある
- Botの機能のカスタマイズができない(Jenkinsに豊富にある独自プラグインなどはない)
Bot運用に必要なもの
Bot運用にはこれらが必要です。
- Xcode5以上をインストールし、OSが10.9以上のMac
- AppleとのDeveloper契約(ipaファイルを作らない場合には必要ない)
- Mac OSX Server
Mac OSX Serverは、Mac App Storeで2000円で購入できます。 (追記:登録iOS Develerの人は、2013年10月末現在、iOS Dev Centerから無料でOS X Serverがダウンロードできるようになってます。Mac App Storeから購入しなくても大丈夫そうです。@azu_reさんにTwitterでご指摘いただきました。)
Botの設定方法
さて、実際の設定方法はちょっと長くなるので別エントリで。