リリース作業ガイド
iOSアプリのリリース作業に関する実践的なガイドです。TestFlightやApp Store Connectを使用した配布手順を提供し、安全で確実なリリースを実現することを目的としています。
リリース関連設定概要
- アプリ名: iOSApp
- プロジェクト名: ios-project
- 主要ターゲット: iOS 18.0+
- アーキテクチャ: Swift Package Manager + Xcode プロジェクト
リリースに伴う環境について
アプリの接続先は大きく3つ存在しています。
環境の種類
Dev環境
- 当初からある環境
- これまでの動作確認や打鍵結果のデータやテストアカウントが存在
- 開発中の機能検証に使用
Staging環境
- テスト用環境
- 本番の稼働先を東京リージョンに変更した際に新規構築した環境
- 本番環境に近い状態でのテストに使用
Prod環境
- 本番環境
- 東京リージョンで稼働
- エンドユーザーが使用する環境
各種Bundle IDごとのビルドスキーマ設定で、これらの環境を選択しています。
主要Bundle ID
Test/Dev環境
Alpha: com.company.app-alpha
- 基本的にDev環境へ向けている
- 開発チーム内での検証用
Alpha2: com.company.app-alpha-2
- 基本的にStaging環境へ向けている
- 本番環境に近い状態でのテスト用
Prod環境
com.company.app
- 本番環境用のBundle ID
- App Storeで公開されるバージョン
個人用(現在あまり使用想定はない)
com.company.app.{developer-name}- 例:
com.company.app.john - 開発者個人の検証用
テスト環境リリース
テスト環境へのリリースには、大きく2つの方法があります。
TestFlight配布
TestFlightを使用したテスト配布の手順です。
[1] Xcodeでビルド/アーカイブとDistribute実行
アーカイブの実行
以下の設定でProduct > Archiveを実行します:
- Schema:
App_Release(テスト用のRelease Schema) - Target:
Any iOS Device
Distributeの実行
- アーカイブ完了後、"Distribute App" > "App Store Connect"を選択してDistributeを実行
- Distribution実行時に権限エラーが出た場合は、他メンバーに権限設定を依頼
- Feature Flagをonで配信したい場合は、環境変数を適切に変更
[2] App Store Connectでの設定
手順
-
App Store Connect > Apps > (Test App) > TestFlightへアクセス
- 該当するアプリのTestFlightページを開く
-
TestFlightのiOSビルドのバージョンを確認
-
該当するモジュール/ビルド(Distribution直後なら最上位)の行の「管理」をクリック
-
フォームに沿って設定を進める:
輸出コンプライアンス情報の回答
- 認証アルゴリズムの確認 → 「標準的な認証アルゴリズム」を選択
- フランス配信要否 → 「No」を選択
-
テストの詳細を入力し「保存」
-
グループで配布対象のテスターグループを設定
- 内部テスターグループ
- 外部テスターグループ(必要に応じて)
Firebase App Distribution配布
Firebase App Distributionを使用した配布方法です。
概要
- GitHub ActionsなどのCI/CDツールを使用して自動配布が可能
- テスターへの通知も自動化できる
- TestFlightよりも迅速にテスターに配布可能
参考資料
- プロジェクトのGitHub Workflowファイル(
.github/workflows/deploy-to-app-distribution.yml)を参照 - Firebase公式ドキュメント: Firebase App Distribution
プロダクション環境リリース
本番環境へのリリース手順です。慎重に進めてください。
[0] 事前準備
.p12ファイルからの秘密鍵復帰
目的 Xcodeでのビルド時に証明書を正しく設定するために鍵の取得が必要です。
手順
-
.p12ファイルを取得
- 取得先: チームの証明書管理場所(クラウドストレージ等)
- ファイル名: プロジェクトの配布証明書ファイル(例:
AppName-cert-YYYYMMDD.p12)
-
キーチェーンアクセスでインポート
- .p12ファイルをダブルクリックしてインポート
- パスワードの入力が求められた場合は、チーム管理者に確認
参考資料
[1] Xcodeでのビルド/アーカイブ
実行設定
以下の設定で「Archive」を実行します:
- Schema:
App_Release_Production(本番用のRelease Schema) - Target:
Any iOS Device
⚠️ 注意事項
[0]の事前準備による署名設定でエラーが出ていないことを確認してください。
Build Config Release_Productionにおける署名設定が以下の通り警告表示等がないこと:
- Signing Certificate: 正しく設定されている
- Provisioning Profile: 正しく設定されている
- エラーや警告が表示されていない
[2] ビルドしたモジュールをディストリビュート
実行手順
- アーカイブ完了後、"Distribute App"を選択
- App Store Connectへのアップロードを実行
⚠️ 注意事項
- 既に審査が通っているバージョンをデプロイするとエラーとなります
- この場合、プロジェクトの
MARKETING_VERSION(バージョン番号)を上げる必要があります - Xcodeの Project Settings > General > Identity > Version で変更可能
[3] App Store Connectで「新規バージョン」のリリース
NOTE: バージョンアップデートのケースについて記載しています。
参考資料
- https://developer.apple.com/jp/help/app-store-connect/manage-submissions-to-app-review/overview-of-submitting-for-review
- https://developer.apple.com/jp/help/app-store-connect/manage-your-apps-availability/overview-of-publishing-your-app-on-the-app-store
- https://developer.apple.com/jp/help/app-store-connect/manage-your-apps-availability/set-distribution-methods
1. iOSアプリ > 新規バージョンの作成
バージョン番号の付け方
Semantic Versioningで記載します:X.Y.Z
バージョニングポリシー
基本的には以下のルールに従います:
- 新規機能追加 → Yをインクリメント、Z=0とする
- 不具合修正/軽微な改善 → Zをインクリメント
- メジャーバージョンアップ → Xを上げる(ビジネス/マーケティングを考慮して判断)
2. メタデータの更新
更新内容にもよりますが、主に以下の更新は必須です:
このバージョンの最新情報
- ユーザーが見れるアップデート情報を記載
- 新機能や改善点を分かりやすく説明
ビルド
- 配布するモジュールのビルドを選択
- [2]でアップロードしたビルドを指定
3. リリースタイミングの設定
主に下記基準で判断します:
即時公開
- このバージョンを自動でリリースする
- 審査通過後、自動的にApp Storeで公開
タイミングに合わせて手動実行
- このバージョンを手動でリリースする
- 審査通過後、任意のタイミングで公開ボタンを押す
予約
- App Review完了後、指定した日時にこのバージョンをリリース
- 特定のイベントやキャンペーンに合わせたリリース
4. 審査提出
- 右上の「保存」をクリック
- 「審査に出す」をクリックして審査提出完了
審査状況の確認
メールでステータス更新の連絡が来るので、審査状況はそこでウォッチします。
審査ステータスの種類
- 審査待ち: 審査キューに入っている状態
- 審査中: Apple側でレビュー中
- 承認済み: 審査が通過した状態
- リジェクト: 審査で却下された場合(理由が通知される)
リリース後の対応
モニタリング
リリース後は以下の項目を監視します:
クラッシュレート
- Firebase Crashlyticsでクラッシュを監視
- 重大なクラッシュが発生した場合は即座に対応
ユーザーレビュー
- App Storeのレビューを定期的にチェック
- 問題の報告があれば優先的に対応
パフォーマンスメトリクス
- アプリの起動時間
- 主要機能のレスポンスタイム
- ネットワークエラー率
緊急時の対応
重大なバグが発見された場合
- 影響範囲の特定
- ホットフィックスバージョンの準備
- 優先審査のリクエスト(Apple Developer Supportに連絡)
- ユーザーへの告知(必要に応じて)
ロールバックの検討
App Storeの仕様上、以前のバージョンへのロールバックは直接できません。 代わりに、以下の対応を検討します:
- 問題を修正した新バージョンを緊急リリース
- Feature Flagで問題のある機能を無効化
- サーバー側での対応で影響を軽減
ベストプラクティス
リリース前の確認
✅ リリース前チェックリスト
- [ ] TestFlightでの十分なテスト期間(最低3日間)
- [ ] 主要機能の動作確認完了
- [ ] クラッシュレートが許容範囲内
- [ ] パフォーマンステスト完了
- [ ] リリースノートの準備完了
- [ ] メタデータ(スクリーンショット等)の更新確認
- [ ] 関係者への事前通知完了
リリーススケジュール
推奨リリースタイミング
- 週の前半(火曜日〜木曜日)にリリース
- 金曜日や週末のリリースは避ける(問題発生時の対応が困難)
- 大型連休前のリリースも避ける
審査期間の目安
- 通常: 24〜48時間
- 繁忙期(9月〜12月): 3〜5日
- 緊急リリース: 優先審査リクエストで数時間〜1日
コミュニケーション
リリース前
- ステークホルダーへのリリース予定通知
- 変更内容の共有
- 影響範囲の説明
リリース後
- リリース完了の通知
- 監視体制の確立
- 問題発生時の連絡フロー確認
トラブルシューティング
よくある問題と対処法
署名エラーが発生する
原因
- 証明書の期限切れ
- Provisioning Profileの設定ミス
- .p12ファイルが正しくインポートされていない
対処法
- キーチェーンアクセスで証明書を確認
- Xcode > Preferences > Accountsで証明書を再同期
- 必要に応じて証明書を再取得
ビルドは成功するがアーカイブが失敗する
原因
- Build Settingsの設定ミス
- 依存関係の問題
対処法
- Product > Clean Build Folderを実行
- Derived Dataを削除
- Xcode を再起動
審査でリジェクトされる
よくある理由
- ガイドライン違反
- クラッシュやバグの存在
- 不完全な機能
- メタデータの問題
対処法
- リジェクト理由を詳細に確認
- 指摘された問題を修正
- 審査コメントで修正内容を説明
- 再提出
参考リソース
公式ドキュメント
- App Store Connect Help
- App Store Review Guidelines
- TestFlight Documentation
- Xcode Distribution Guide
プロジェクト関連
- プロジェクトのGitHub Repository
- Firebase Console(Firebase App Distribution使用時)
- App Store Connect
- チームの証明書管理場所