17
11

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

VolareAdvent Calendar 2019

Day 13

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

Last updated at Posted at 2019-12-13

はじめに

本記事は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 [:レーンの名前] do endの間に実行したいアクションを書いていきます。

具体例を示すと、

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

17
11
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
17
11

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?