fastlaneは,iOSアプリのリリースプロセスの自動化を目的とするツールのスイートである。ひとつのコマンドを実行するだけで起動可能な,“完全な継続的デプロイメントプロセス”を実現する。
fastlaneは,iOSアプリをApp Storeに新規に提出する,あるいはアップデートする場合に通常必要なタスクの大部分をカバーする,rubyスクリプトのコレクションである。
- deliverは,アプリのバイナリやスクリーンショット,メタデータをApp Storeにアップロードする。
- snapshotは,iOSアプリのローカライズされたスクリーンショットを,さまざまなデバイス用に用意するためのプロセスを自動化する。
- frameitは,アプリのスクリーンショットにデバイスのフレームを付加するために使用する。
- PEMは,プッシュ通知用のプロファイルの生成と更新を自動的に行う。
- sighは,App Storeのプロビジョニングプロファイルの生成とダウンロードを行うことができる。
JenkinsやCocoaPods,あるいはxtoolsなど,他のサードパーティツールとの統合もサポートされている。複数のレーン(Lane}を定義することで,AppStoreやTestFlight Beta,あるいはテストなどをターゲットとした,さまざまなデプロイメント対象に対応することも可能だ。
fastlaneを使った一般的なワークフローは次のようになる。
lane :appstore do increment_build_number cocoapods xctool snapshot sigh deliver frameit sh "./customScript.sh" slack end
InfoQでは開発者のFelix Krauseに,プロジェクトに関する詳細を聞くことにした。
継続的デリバリ/デプロイメントをiOSアプリのデプロイメントプロセスに導入することで得られる,最も大きなメリットは何でしょう?Appleのレビュープロセスの中で,どのような役割を果たすのでしょうか?
代表的なメリットは,何といっても,アップデートや新規アプリケーションのリリース毎に必要な時間を,大幅に節約できることです。それはiOS開発者が,自分自身で行わなければならないことなのです。
このプロジェクトを始めたとき,iOSアプリのリリースプロセスをすべての面で自動化できるという確信はありませんでした。そのような実装をするための公開APIが存在しなかったからです。幸いなことにうまく行ったので,今ではさまざまな会社が,すでに完全な継続的デリバリのソリューションを立ち上げています。
fastlaneを使用する一般的なワークフローについて,簡単に説明して頂けますか?最も重要なカスタマイズオプションは何でしょう?
私は次のような使い方をしています。
- コミット毎にテスト(ユニットテストとインテグレーションテストを含みます)を実行します。
- スクリーンショットだけを作って,クライアントに送ります。
- ベータ版のビルドと配布を行います。
- ビルドとApp Storeへの提出を行います(プロビジョニングプロファイルの更新,新しいスクリーンショットの作成とApp Storeへのアップロード,アプリケーション自体の送信などが,これに含まれます)。
Webサイト http://fastline.toolsには,簡単なサンプルがいくつかありますから,それに個々のビルドステップを追加あるいは削除してもよいですし,自分自身で実装するのも難しくありません。
fastlaneを使うメリットを最も期待できるのは,どのような組織(個人開発者,小規模な開発会社,大企業など)だと思われますか?
まずは個人開発者や小規模な会社でしょう。彼らは通常,自動化を導入していないでしょうから,fastlineから始めるのも簡単です。大企業はすでに,何らかの継続的インテグレーションツールを持っているのが普通ですから,それとfastlaneを併用できるように設定する作業が必要になります。
fastlaneの現在の普及状況について教えてください。サクセスストーリなどはありますか?
gem自体に分析手段を入れようとは思いませんでしたが,いくつかの数値は確認しています。
- fastlaneツール全体でおよそ20,000インストール。
- http://fastlane.toolのビジター数は,ローンチ以降の3日間のみで10,000。
- 個々のツールすべてとfastlane自体が,GitHubの月間Ruby関連リポジトリの上位を占める。
いくつかの有名企業からも,自社のリリースプロセスへのfastlaneツールの統合に成功した,という報告をもらっています。一番最初に報告を受けた大企業はPanicでした。
fastlaneの開発に至ったプロセスは,どのようなものでしたか?
fastlaneはもともと,あるユーザのために開発したもので,彼らのシステムに強く統合されていました。他の開発者にこの話をしたところ,興奮した彼らから,自分たちも使えないだろうかと尋ねられたのです。そういった理由で,他のiOS開発者たちと共有できるように,完全にフレキシブルで,ドキュメント化された方法で開発することにしました。
最初はdeliverのみを開発したのですが,他にも必要なツールがいくつかあると気が付いて,残る4つのツール(snapshot, frameit, PEM, sigh)を作りました。これらのプログラムは独立して動作するので,何とかしてすべてを接続したいと思って,そこでfastlaneのアイデアを思い付いたのです。
fastlaneツールはオープンソースで,GitHubからクローンすることができる。インストールや設定,使用方法の詳細に関する情報は,公式ガイドから入手可能だ。