marketplace.2015-07-13iOSアプリのリリースフロー自動化ツールfastlaneのmeetupに通訳で参加しましたiOSエンジニアの@kitasukeです。meetupが開催されました。fastlaneとはiOSアプリにおけるリリース作業の自動化統合ツールです。Krauseさんが来日されていたので開催されることになりました。弊社でも導入し始めたので参加したいなと思っていたところ、タイミングよく岸川さんにお誘い頂いて通訳としてお手伝いさせてもらいました。当日の内容は、Felixさんからのfastlaneの説明と、fastlaneなどに関するLTという構成でした。当日の参加者の方からのつぶやきがtogetterにもまとまっているので、そちらもご覧ください。Felixさんが今回の来日についてのブログ記事を書いているので、そちらもご覧ください。xctool.iOSアプリにおけるリリースフローの作業を自動化する統合ツールです。Connectといったツール上で行ってきた作業を自動化出来ます。全プロセスの自動化も可能ですし、特定の作業のみを自動化させることも可能なので、利用範囲を各自で決められて使い易いです。特徴リリース管理者が居なくても誰でもリリース作業を出来ます煩雑な作業から解放されますリリースプロセスでの漏れを無くせますリリースに必要な作業を分担出来ます提供しているツール群fastlaneが公式に用意している主なアクション(コマンドラインツール)は以下の通りです。後ほど詳しく述べますが、カスタムアクションを作ることも可能です。Storeへアップロード出来るアクションです。Automationを利用して、スクリーンショットをとれるアクションです。Testing自体は既に対応済みのようです。frameitframeitより引用デバイス画像にスクリーンショットを埋め込んだ画像を生成出来るアクションです。PEMPEMより引用プッシュ通知の証明書を生成・更新出来るアクションです。Portal上で作成出来るアクションです。証明書の生成・管理出来るアクションです。codescodesより引用プロモコードを生成出来るアクションです。レーンの概念fastlaneはリリースフローの主な作業(テスト、アプリ配信、アプリ申請など)をそれぞれのレーンとみなして、必要なフローごとにレーンを作成することになります。レーンの中には必要なアクションを組み合わせて使用します。slackなどのアクションが必要になるでしょう。アクション結果の情報は共有されるようになっているので、スクリーンショットやipaファイルがどこに保存されているかなどは、特に気にする必要ありません。外部サービスとの連携fastlaneは多くの外部サービスと連携しています。SHENZHENなど、リリースフローで良く使うサービスと簡単に連携出来ます。現状でfastlaneに用意されていなくても、独自にアクションを作成して外部サービスと連携させることも可能です。設定ファイルFastfileという設定ファイルにレーンの定義を記述すると、下記のようにコマンドラインで実行出来るようになります。fastlaneのインストール方法はこちらをご覧ください。slackendレーンの実行前・後の処理や、エラーハンドリングも可能です。Connectをスクレイピングして解析しているが、今後はSpaceshipという非公式APIを提供しているツールを利用するそうです。これによって、以前より実行速度が大幅に向上するようです。Q&AfastlaneはどうやってAPIなどを解析していますか?Charlesというソフトウェアを使っているそうです。弊社でも開発時にAPIのレスポンスを確認・変更したい時に使用している便利なプロキシツールです。Androidのリリース予定はありますか?こちらのIssueで対応中とのことです。優先度はそれほど高くないと仰っていたので、必要な方はfastlaneに貢献するチャンスだと思います。現在の開発内容の優先度はどうやって決めていますか?自身で良く使う内容であったり、フリーランスとして依頼された内容を優先しているようです。RequestやIssueも大歓迎だそうです。ConnectのAPIはどれくらいの頻度で変更されますか?基本的には年に一回で、WWDC後に変わることが多いようです。古いAPIは古いXcodeのためにまだ使われているようなので、ある程度サポート期間は長いようです。actions?@gin0606さんより、fastlaneでのカスタムアクションの作り方についての発表です。下記のコマンドで簡単に作成出来るようです。new_actionアクションに対して必要な環境変数などを、引数として渡せるようにも作れるようです。外部サービスで新しいものが登場して環境が変わったとしても、カスタムアクションを容易に作れて対応可能なので、嬉しいポイントです。弊社でもfastlane内で独自の作業をやっているところがあるので、後日試してみようと思います。Wantedly@hedjirogさんより、Wantedlyで実際のfastlane活用方法についての発表です。実際のFastlaneファイルから抜粋したコードを使って発表されていたので、フローの流れを理解しやすかったです。主な使用用途は下記の通りのようです。アプリのベータ配信アプリ申請スクリーンショット弊社では、まだアプリ申請はfastlaneでは行っていないので、今後の導入について非常に参考になりました。おまけ弊社でのfastlaneの利用について弊社では最近fastlaneを導入しました。主には下記の2点で使用しています。6までサポートしていて対応OSが多いこともあって、ユニットテストをOSごとに実行しています。1つのプロジェクトから日本向けとアメリカ向けのアプリを別々に生成しているので、DeployGateでのアプリ配信もターゲットごとに切り分けて行っています。今後はアプリ申請もfastlaneを使ってみたいと思っています。Talkで通訳のお手伝いをしたこともあって、今回のミートアップでもお手伝いさせて頂きました。通訳で参加すると、発表やQ&Aも含めた全ての会話に参加することになるので、fastlaneについて短期間でかなり詳しくなれたと思います。事前準備として、参考記事を読んでみたりツールを実際に試してみたりした効果もあると思いますが。発表者として参加する時とは違った点で勉強になるので、また機会があればやってみたいなと思いました。まとめ全体的にfastlaneは非常に便利なツールだと思いました。Connectの非公式APIを使用していて不安を感じるかもしれませんが、deploy以外でもアプリのベータ配信やスクリーンショットの保存などだけでも使う価値はあると思いました。fastlaneは新しい機能への対応スピードも早いですし、カスタムアクションでの拡張も容易に可能です。どのリリースフローで使用するかは自分で設定可能なので、ツールとして使いやすいなと思いました。fastlaneを使って快適で安全なリリースフローを運用しましょう。