読者です 読者をやめる 読者になる 読者になる

wootan's diary

iOSアプリ開発を中心としたエンジニアブログ

Relux iOSアプリ開発にfastlaneを導入してAppStore申請を自動化

iOS 開発

本エントリーはこちらの記事の続きになります。
凄く間が空いてしまいました...(反省)
wootan1102.hatenablog.com

前回は fastlane のテストアプリ配信についてを紹介しました。
今回は AppStore への申請について紹介したいと思います。

AppStore申請の自動化

AppStore申請作業

通常の手順は以下のようになります。
fastlaneでは全ての工程を自動化することができます。

  1. アプリをアーカイブ
  2. AppStore用のバイナリを生成
  3. iTunesConnectへバイナリをアップロード
  4. メタ情報(アプリ概要、アップデート情報)を更新
  5. スクリーンショットを更新

Fastfile

fastlane/Fastfileの自動生成されたappstoreレーンを使用します。
deploygateの配信よりも時間がかかりますが、
コマンドを実行するだけで良いので簡単です。

appstoreレーン
  • sigh プロビジョニングファイルの更新
  • gym アプリケーションのビルド
  • deliver AppStoreへのアップロード
lane :appstore do
   cert
   sigh(force: true)
   gym(scheme: "relux", configuration: "Release")
   deliver(force: true)
end

after_allでSlackに通知するようにしておけば
AppStoreへのアップロードが終わった時点でSlackに通知されます。

Tips

パスワードを変更した場合

パスワードの情報はKeychainに保存されています。
iTunesConnect上でパスワードを変更し fastlane を実行するとエラーになります。
その際に下記のようにコンソール上で新しいパスワードを入力できるようになっています。
新しいパスワードを入力すると自動的にKeychainに保存されます。

Starting login with user 'XXX@XXX.XXX'
-------------------------------------------------------------------------------------
The login information you enter will be stored in your Mac OS Keychain
You can also pass the password using the `FASTLANE_PASSWORD` env variable
More information about it on GitHub: https://github.com/fastlane/fastlane/tree/master/credentials_manager
-------------------------------------------------------------------------------------
Password (for XXX@XXX.XXX):


AppleIDを変更した場合

fastlane 配下にある2つのファイルを変更する必要があります。
team_idやapp_identifierなどもこのファイルで変更することができます。

project_dir/fastlane/Appfile

apple_id "XXX@XXX.XXX"

project_dir/fastlane/Deliverfile

username "XXX@XXX.XXX"


メタ情報の更新/スクリーンショットの更新をスキップする

Deliverfileに追記することでスキップさせることができる

project_dir/fastlane/Deliverfile

#メタ情報の更新をスキップ
skip_metadata true

#スクリーンショットの更新をスキップ
skip_screenshots true


※ 詳細な使い方などはドキュメントに書いてあるので一度読んでみるのがおすすめです。
github.com


AppStoreへの申請を自動化してよかったこと

Schemeの指定ミスを防ぐ

Releaseを選択していたつもりがDebugになっており
アップロードしなおすというミスが完全になくなりました。
頻繁に発生する問題ではありませんが自動化したことで
Schemeが正しいかを確認する必要がなくなりました。

工数大幅削減

AppStoreへの申請作業は月に数回しか行わないものですが
それなりに時間がかかるのでかなり負担になっていました。
作業自体は難しいものではありませんが工数が大幅に削減することができ、
誰でも簡単に申請作業ができる状態になりました。

Gitでの管理

メタ情報(アプリ概要、アップデート情報)やスクリーンショットをGit上で管理できるようになります。
Gitで管理することによりAppStore上の情報の更新に対してレビューを行えるようになりました。

セットアップも簡単でドキュメントもしっかりしているので
設定でつまづくことはないと思います。ぜひ試してみてください!

※チーム無いで証明書を共有して管理するツールもあります。こちらのやり方が推奨されているようです。
fastlane/match at master · fastlane/fastlane · GitHub