Help us understand the problem. What is going on with this article?

fastlaneでまず始めに使いたいアクション

はじめに

本記事はVolare Advent Calendar 2019の3記事目として書いています。
私は今年の4月から社会人として、主にiOSアプリの開発を行っていますが、今回はVolare卒業1期生(?)として寄稿させていただきます!

fastlaneの導入方法やリリースの自動化などについては、既にたくさんの記事があるので、
今回はアプリの個人開発を行っている方や、今までfastlaneを知らなかった方でも恩恵を受けられそうな、3つのfastlaneのアクションについて、その挙動や実行方法などをまとめたいと思います。

fastlaneとは

fastlaneは、iOS及びAndroidアプリのビルドやリリースを自動化してくれる、ビルドツールです。
無料で使用することができ、OSSでドキュメントも整備されているため、手軽に導入できます。
無料です。

Fastfileにlaneと呼ばれるアクションの組み合わせを記述し、CUI上やCIツールなどから実行することで、様々な処理を自動化することができます。
今回はこのアクションについて、特に便利でよく使いそうなアクションを挙げていきたいと思います。

アクション

gym

gym.png
(引用:https://docs.fastlane.tools/actions/gym/)

:muscle: :muscle: :muscle:

gymアクションは、アプリのビルドと、ストア申請やTestFlightへのアップロードのために必要な、ipaファイルの作成を行えます。
これ、XCodeからやるとめちゃくちゃ時間かかりますよね…

パラメータ

gymアクションには公式ドキュメントにあるように、様々なパラメータを渡すことができます。
私は主に、

キー名 役割 設定値
scheme アプリのスキームを指定する "[アプリ名]"
configuration アプリをビルドする際の構成を指定する "Release" or "Debug"
outpu-name ipaファイルの書き出し名を指定する "[アプリ名].ipa"

の3つを指定しています。

gym(
  scheme: "MyApp",
  configuration: "Release",
  output_name: "MyApp.ipa"
)

このような感じですね。

pilot

pilot.png
(引用: https://docs.fastlane.tools/actions/pilot/)

:rocket: :rocket: :rocket:

pilotアクションは、AppleのTestFlightにアプリをアップロードしたり、テスターに配布したり、テスターの管理などができます。

テスターの追加・削除

テスターを追加したい場合は、CUI上で

fastlane pilot add [追加したいテスターのemailアドレス] 

と打つことで実行可能です。同様に削除したい場合も、

fastlane pilot remove [削除したいテスターのemailアドレス]

のコマンドを実行するだけで、対象のテスターを綺麗サッパリ消すことが可能です。

ベータ版の配布

パラメータでipaファイルを指定し、pilotアクションを実行するだけでTestFlightへのアップロードまで行えます。

pilot(
  ipa: "./MyApp.ipa"
)

deliver

deliver.png

(引用:https://docs.fastlane.tools/actions/deliver/)

:bicyclist: :bicyclist: :bicyclist: ← UberEats

deliverアクションはアプリのリリースを自動化してくれるアクションです。XCodeを使わずに、新しい.ipaファイルをApp Store Connectにアップロードすることが可能です。
その際にprefetch機能が実行されることで、アプリがリジェクトされる危険性を含んでいないかを、事前にある程度確認もしてくれます。

関連ファイル

App Storeへのアプリの提出には、スクリーンショットやリリースノート、アプリの説明文など様々な要素が必要となります。
そしてfastlaneは、これらのファイルもまとめて管理することができます。
具体的には、
./fastlane/screenshots以下でスクリーンショットを
./fastlane/metadata/ja/release_notes.txtでリリースノートを
./fastlane/metadata/ja/description.txtでアプリ概要の文章をそれぞれ変更、修正できます。

パラメータ

他のアクションと同様に、deliverアクションにも様々なパラメータを渡すことができます。
特に使用頻度の高そうなものとしては、

キー名 役割 設定値
force アプリ申請時のHTMLレポートファイルの検証をスキップ true
submit_for_review アプリのアップロード後、審査用に新しい新しいバージョンを送信 true
automatic_release アプリの審査通過後、自動的にリリースする true

等が挙げられます。実際に書くと、

deliver(
  force: true,
  submit_for_review: true,
  automatic_release: true
)

のような形ですね。

いざ実行

実際にこれらのアクションを使用する場合、CUI上で1つずつコマンドを叩いてもよいのですが、多くの場合Fastfileにレーンを作って、実行します。
レーンとは、複数のアクションを組み合わせたものです。
lane [:レーンの名前] doendの間に実行したいアクションを書いていきます。

具体例を示すと、

Fastfile.
lane :testFlight do
    # ビルド
    gym(
      scheme: "MyApp",
      configuration: "Release",
      output_name: "MyApp.ipa",
    )
    # TestFlightへアップロード
    pilot(
      ipa: "./MyApp.ipa"   
    )
  end


  lane :release do
    # ビルド
    gym(
      scheme: "MyApp",
      configuration: "Release",
      output_name: "MyApp.ipa",
    )
    # App Store Connectへアプリ提出, リリース
    deliver(
      force: true,
      submit_for_review: true,
      automatic_release: true
    )
  end

のような形になります。

あとは、ベータ版の配布を行う場合は
bundle exec fastlane testFlight
アプリのリリースを行う場合は
bundle exec fastlane release
のように、作成したレーンを指定したコマンドをCUI上で実行すれば、自動化が行なえます。

おわりに

今回はfastlaneでまず始めに使いたいアクションとして、
- gym
- pilot
- deliver
の3つを挙げ、それぞれのアクションの動作と実行方法を軽くまとめてみました。

fastlaneにはこれらのアクションの他にも、証明書やプロファイルを生成、同期、管理できるmatchpemcertといったアクションや、テストを自動化できるscan、スクリーンショットを自動生成することができるsnapshotなど、まだまだたくさんのアクションが用意されています。

この記事をきっかけにアプリ開発の自動化について興味を持ってくださった方は、ぜひ公式ドキュメントなどを参考に、他のアクションも使ってみてください!

参考

fastlane公式
fastlaneを導入する手順について
fastlaneを使ってみる
これから始めるfastlane

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした