【Xcode/Fastlane】アップロードからリリース/審査までの自動化!deliverと自動署名

この記事からわかること
- iOS/Xcodeの自動化ツール:Fastlaneの使い方
- アップロードからリリース/審査までを自動化する方法
- deliverアクションの使い方
- App Store Connect APIキーの取得
- Unable to upload archive. Failed to get authorization for username 'XXXXXXXXXX' and passwordエラーの解消
index
[open]
\ アプリをリリースしました /
環境
- Xcode:15.0.1
- watchOS:10.0
- Swift:5.9
- macOS:Sonoma 14.1
- fastlane:2.221.0
Xcode/iOSアプリでFastlaneを使用してアップロードからリリース/審査までの自動化する方法をまとめていきます。導入やセットアップの方法は以下の記事を参考にしてください。
アップロードからリリース/審査までの自動化する方法
Fastlaneを使用してアップロードからリリース/審査までの自動化するにはdeliver
アクションを使用します。このアクションを使用することでipaファイルをApp Store Connectへアップロードする作業から、スクリーンショットやアプリ名、概要などのメタ情報などの自動設定、審査への提出などを自動化することが可能です。
Fastlaneを使用したipaファイルの生成方法は以下の記事を参考にしてください。
おすすめ記事:【Xcode/Fastlane】自動ビルドしてipaファイルを生成/アーカイブする方法!build_app
手順
- AppFileにアカウント情報を登録
- deliverのセットアップ
- メタ情報などの準備
- App Store Connect APIキーの取得
- Fastfileのレーン作成(deliverアクション)
- レーンを実行してアップロード
1.AppFileにアカウント情報を登録
まずはAppfileにAppleアカウントに関する情報を追加しておきます。Appfileに記述していなくてもdeliver
アクションを実行した時に1つ1つ聞かれるだけなので都度入力すれば問題はありません。
2.deliverのセットアップ
続いてdeliver
アクションを使用するためのセットアップをしていきます。プロジェクトルートで以下のコマンドを実行します。Appfileに記述したバンドルIDのストアページがない場合はエラーになるので先に作成しておく必要があります。
コマンドを実行するとFastfileと同階層に「DeliverFile」、「metadataディレクトリ」、「screenshotsディレクトリ」の3つが生成されます。
このコマンドを実行した際にストアに既にスクショやメタ情報を記述していた場合はそれが反映された状態で「metadataディレクトリ」、「screenshotsディレクトリ」が生成されます。「DeliverFile」はdeliverアクションのパラメータファイルです。
3.メタ情報の準備
ストアに掲載したい情報はmetadata
ディレクトリの中にあるテキストファイルに記述していきます。最初はファイルの中身が空になっているのでファイル名からどこの項目に該当するか読み解きながら値のみを記述していきます。
例えば「review_information」ディレクトリ中には以下の部分のメタ情報と連携しています。

中には以下のように値だけを記述します。電話番号は日本なら最初の0
を+81
にする必要があるので注意してください。
ひとまずアップロードまでの動作を確認したいので最低限の作業だけしてアップロード作業を行いたいと思います。メタ情報はreview_information
の以下4つだけ記述しておかないとエラーが発生したのでこれだけ記述しておきます。
発生したエラー
またアップロードする際には最低限アプリアイコンはアセットに定義されていないとエラーになるのでこちらも対応しておいてください。
最低限必要なメタ情報
- review_informationディレクトリ内の一部情報
- アプリアイコンアセットの追加
4.App Store Connect APIキーの取得
App Store Connectへアップロードするためには認証する必要があります。認証はAppleが公式で提供しているApp Store Connect APIを使用します。
Fastlaneで使用するのは「App Store Connect APIキー(.p8ファイル)」だけになります。APIキーの取得方法は以下の記事を参考にしてください。この記事ではJWTの取得方法やAPIの叩き方なども紹介しています。
APIキー(.p8ファイル)がダウンロードできたらその画面に示されている「IssuerID」と「キーID」を後で使用するのでコピーしておいてください。上記の記事の手順とは異なりFastlaneではapp_store_connect_api_key
アクションでJWTが生成できます(後述)。

ダウンロードしたファイルはfastlane
と同階層においておきます。ここは管理しやすい場所に設置すればどこでもOKです。
5.Fastfileのレーン作成(deliverアクション)
続いて実際にアップロードする前のレーン処理を実装していきます。やるべきことは以下の3つです。
- DeliverFileにApple IDのメールアドレスを定義
- .envを作成し必要な秘匿情報を定義
- Fastfileにアップロードまでのアクションを追加
DeliverFileにApple IDのメールアドレスを定義
まずは「DeliverFile」に対象のApple IDのメールアドレスを定義します。
.envを作成し必要な秘匿情報を定義
続いて「.env」ファイルを「fastlane」と同じ階層に生成しアップロードに必要な秘匿情報を記述しておきます。なのでこの「.env」ファイルは.gitignore
ファイルに記載しコミットしてしまわないように注意してください。
Fastfileにアップロードまでのアクションを追加
最後に「Fastfile」ファイルにアップロードする処理を記述していきます。ここでの処理の流れは以下のとおりです。
- ビルド番号を増加
- 自動署名(プロビジョニングプロファイル自動生成)
- ビルド(ipaファイル生成)
- 認証(JWTの生成)
- App Store Connectにアップロード
6.レーンを実行してアップロード
ここまで準備ができたらターミナルで作成したレーンを実行するだけです。以下のコマンドを実行することで現在のプロジェクトをビルドしApp Store Connectへアップロード作業が完了します。時間としてはプロジェクトに規模などにもよりますが、数分程度で終了し、一連の流れを一つのコマンドで終えられるのはかなり大きなメリットになるかと思います。
Unable to upload archive. Failed to get authorization for username 'XXXXXXXXXX' and password
上記コマンドを実行した際には以下のようなエラーが発生しました。これは認証が成功しなかった場合に発生するエラーで、App Store Connect APIでの認証が失敗したことを表しています。「IssuerID」や「キーID」などを再確認して、再度実行してみてください。
まだまだ勉強中ですので間違っている点や至らぬ点がありましたら教えていただけると助かります。
ご覧いただきありがとうございました。