ちょっと話題の記事

[iOS] iOS アプリのリリースプロセスを自動化してくれる fastlane の 勉強会 に参加してきました

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

fastlane meetup

IMG_5506

2015年6月26日、六本木はミッドタウン・タワーにあるヤフー株式会社様にて、fastlane meetup が開かれました。

このイベントは、iOS アプリのリリースプロセスの自動化ツール fastlane の開発者 Felix Krause さん(@KrauseFx) の来日に合わせて行われました。

当日は、北さん が通訳を勤められました。

fastlane 概要説明

Felix 岸川さん の挨拶に続いて、Felix さんから fastlane について説明がありました。

fastlane は、リリースまでの様々なプロセスについて、管理者に依存しない、もっと自動化されたプロセスを作りたいという意思から生まれたものだそうです。

今までのリリースまでのプロセスの中には、XcodeiTunes Connect と言った複数の個別に別れたツールを使っているのが現状です。それが fastlane で変わるのだそうです。

fastlane を構成するツールの説明

ZB3QX

次に、fastlane を構成するコマンドラインツールについて説明がありました。

deliver

IMG_5490

スクリーンショットやメタデータ、そしてアプリを App Store に コマンド1つでアップロードすることができます。

snapshot

自動でスクリーンショットを撮ってくれます。

frameit

IXkZ4

実デバイスの画像にスクリーンショットをハメコミ合成して、新たに画像として生成してくれます。

最新バージョンでは、従来の黒いフレームに加え、白いフレームも使用可能になったそうです。

PEM

notification profile を自動生成したり、更新してくれます。

sigh

プロビジョニングプロファイルを更新・修復・生成してくれます。

もしプロジェクトで適切なプロビジョニングが指定されていない場合は訂正されるそうです。

produce

iTunes Connect と ディベロッパーポータルサイトで、新しいアプリを作成してくれます。

cert

iOS の code signing certificate (証明書) を生成・管理します。

codes

プロモコードを生成します。

レーン という概念

次に、fastlane の名前の由来にもなっていると思われる「レーン(lane)」について説明がありました。

fastlane を構成する様々なツールは、設定ファイルを使うことでカスタマイズできます。また、これらを組み合わせて使うことで、コマンド1つでアプリのリリース工程を済ませてしまうこともできます。

IMG_5494

また、アプリが正常に動くかのテストを行ったり、TestFlight にアプリを上げたりしたいときもあるでしょう。そんな時は、それぞれのシチュエーションに合わせたツールの組み合わせを、fastlane の設定ファイル (Fastfile)に書いていきます。

fastlane公式ページに載っている例としては、

  • snapshot, sigh, deliver, frameit と言ったツールを組み合わせたレーン。iTunes Connect にスクリーンショットやバイナリの登録をしたり、プロビジョニング管理をするなど総合的にサブミットまでの流れの面倒を見てくれる。

  • スクリーンショット関係のツールの使用を省いた、TestFlight 用のレーン。

などが紹介されています。

ao4Ka

また、fastlane ファミリーのツールだけでなく、様々な外部ツールとの連携ができることを説明されていました。Travis CI, Slack , HipChat, Crashlytics といった、CI環境でよく使われるツール・サービスとの連携はもちろん、用意されていない新しいサービスについても、自分で独自に連携させる仕組みが用意されているそうです。

lane: deploy do
  cert
  sigh
  snapshot
  deliver: force
  frameit
end

講演で説明された fastlane 設定ファイル (Fastfile) の例

Spaceship

fastlane は、非公式の iTunes Connect API を使用する Spaceshipという Ruby ライブラリを使用する形に移行中だそうです。例えば、Spaceship を利用する sigh のベータ版では、従来比で90%高速化しているとのことです。また、Spaceship の機能をを直接扱う方法も用意されていて、fastlane への統合が待てない人はそちらの方法を使うと良いようです。

Q&A

質問タイムでは、質問が次々と飛び出しました。

様々な API は、ローカルの HTTP トラフィックなどをモニターして地道に調べて行ったとのことでした。

製作中のAndroid 版がいつできるのかについて質問が飛びました。コチラは、他の業務もあり、まだ未定だそうです。

また、fastlane は様々なツールを組み合わせて動いており、動作がうまくいかないこともあること、そうした情報を含め GitHub にリクエストをもらえると、ありがたいとのことでした。

LT

続いて、ライトニングトークが行われました。

HTTPトラフィックの分析方法についてのLT

はじめに岸川さんから、ブラウザを使った、HTTP トラフィックの追いかけ方について実演デモがありました。エンドポイントやリクエスト、レスポンスなどを確認する方法を、分かりやすく説明されていました。

Why only use the defaults actions?

gin0606さんからは、fastlane での、新しい action の作り方について分かりやすく説明がありました。 ※2015/07/01追記:初出時、紹介文に誤りがありました。お詫びして訂正いたします。

トレタでのアプリクラッシュ対策

高さんは、クラッシュ対策のため社内で活用されているHockeyAppについての説明をされました。大変参考になるもので、fastlane と組み合わせて使うことで、効果が発揮されるのではないかと思いました。

How we use fastlane at Wantedly

永島さんより、Wantedly でどのように fastlane を活用しているかについて説明がありました。概念から設定ファイルの中身まで、大変わかり易く説明されていました。

まとめ

fastlane-party-2

日本語でのドキュメントがまだあまりWeb上になく、国内で作者の方を交えてこうしたミートアップが開かれるのは、大変貴重な機会だったと思います。fastlane は、かゆいところに手が届く、とても素晴らしいCIツールだと思います。これをきっかけに活用事例が広がっていくと良いなと思います。

さらに

snapshot

ツーショットを撮っていただきました!Thanks!