アップロード成功はTestFlightでテストできる状態を意味しません。今週はCIをむやみに再実行せず、App Store Connectのビルド状態を起点に、Appleの処理、ビルド資格、テストグループの順に確認してください。
企業のIT・リリース担当者:アップロード後の状態確認とエスカレーション手順を整えたい方に向けています。
CI基盤エンジニア:Macでのビルド、アップロード、Apple側の処理のどこで止まったかを切り分けたい方が対象です。
QA・テスト担当者:対象ビルドが適切なテストグループに割り当てられ、テスト可能になっているか確認したい方に役立ちます。
SECTION 01 アップロード成功とTestFlightでの利用可能状態は、どこで分かれる?
CIが受け取った成功結果は、アップロード工程の完了を示すものであり、TestFlightでインストールできることの証明ではありません。Appleはアップロードされたビルドを処理し、その後にApp Store Connect上で確認できる状態にします。まずはAppleのアップロード手順とビルドの表示・メタデータの確認方法に沿って、対象アプリのビルド記録を探してください。
状態の境界は、次のように分けると誤診を避けられます。
| 確認地点 | そこで確認できること | 次に行うこと |
|---|---|---|
| CIのアーカイブ・アップロード結果 | ローカルでの成果物生成と、アップロードツールが返した結果 | ビルド番号、アプリ識別子、ツールの出力を保存する |
| App Store Connectの処理状態 | Appleが受け取ったビルドの処理状況や、追加対応の要否 | 状態名と画面情報を記録し、完了まで追跡する |
| ビルドのテスト資格 | そのビルドをTestFlightで配布できるか | 無効理由や不足情報を、画面と交付ログで照合する |
| テストグループとテスター | 誰にそのビルドが配布されているか | 対象グループへの割り当てと招待状況を確認する |
| テスト端末 | 招待を受けた人が対象ビルドを利用できるか | テスター側の資格と表示メッセージを確認する |
CIでは成功なのにビルドが見当たらないときは、何を先に調べますか。
新しいアーカイブを作る前に、App Store Connectで対象アプリ、バージョン、ビルド番号を確認し、CIの実行記録と突き合わせます。アップロードツールが示す結果だけで処理完了と判断せず、必要に応じてAppleが説明するビルドアップロードの状態も確認してください。
SECTION 02 Apple側の処理中なら、CIを再実行すべきですか?
App Store Connectが処理中を示しているなら、最初に状態、対象ビルドの識別情報、確認した画面を記録し、チームの定めた確認・エスカレーション経路に従います。Appleのビルド状態には、処理中や追加対応が必要な場合などがあり、それぞれの意味はビルド状態の公式説明で確認できます。
処理にかかる時間を固定のSLAとして扱うのは避けてください。アップロードコマンドの終了コードだけを根拠に「TestFlightで配布可能」と判定するのも不適切です。状態が変わらないときは、まず対象ビルドの記録と交付ログを見直し、Apple側の状態が変化したかを確認してから次の処置を選びます。
処理中のままなら、どの条件で再実行を見送りますか。
App Store Connectに対象ビルドがあり、状態が処理中で、CIのアップロード記録にも明確な失敗がない場合は、同じ成果物の再送や再ビルドを急がず状態確認を続けます。反対に、アップロード自体の失敗を示す具体的な記録がある場合は、該当する工程とエラーを特定し、修正後に再実行するかを判断してください。
SECTION 03 Invalid Binaryなどの構築資格問題を照合する
ビルドがAppleに届いていても、アップロード要件を満たさない場合はテストに進めません。App Store Connectに表示されたエラーを出発点に、交付ログ、アプリ識別子、バージョン、ビルド番号、アーカイブ対象を照合します。拒否の理由や必要な修正はエラーごとに異なるため、Appleのアップロード要件と実際の画面表示を基準にしてください。
Transporterなどのアップロードツールに記録がある場合も、成功・失敗の出力だけを切り出すのではなく、対象の成果物とビルド番号が分かる形で保存します。修正して再アーカイブする必要があるケースと、同一成果物を再送するケースを混同しないことが大切です。根拠がないまま署名証明書やプロビジョニング資産を入れ替えると、原因を増やして調査を難しくするおそれがあります。
エラーの文言、ビルド番号、対象のアプリ識別子を同じ記録に残してください。あとから別のビルドのログを見て判断する事故を防ぎやすくなります。
SECTION 04 ビルドが見えるのにテスターへ配布できないのはなぜですか?
App Store Connectにビルドが表示されても、すべてのテスターが自動的にアクセスできるわけではありません。対象プラットフォーム、ビルドのテスト資格、割り当て先のテストグループ、招待状況を別々に確認します。AppleのTestFlight概要とビルドへのテスター追加方法では、ビルドとテスターの管理手順が案内されています。
内部テストと外部テストは同じ手順ではありません。外部テスターへの配布では、Appleが案内する審査などの条件を確認し、現在のApp Store Connect画面でそのビルドが配布可能か判断してください。内部テスターも、対象者が適切なグループに含まれているかを確認します。Appleの内部テスターに関する説明を参照し、社内のユーザー管理と照合してください。
Appleが案内するTestFlightの期限やテスター数も、配布計画では見落とせない条件です。テスト用ビルドの利用期間はアップロードから最大90日で、内部テスターは最大100人、外部テスターは最大10,000人とされています。最新条件はTestFlight概要で確認し、期限切れや対象グループの選択違いを原因候補から外さないでください。
処理済みなのにテスターがインストールできない場合、最初に何を見ますか。
最初に、対象ビルドが意図したテストグループに割り当てられているかを確認します。次に招待の受信状況、テスターの利用資格、テスト端末に表示された具体的な案内を確認してください。構築ノードの不具合と決めつける前に、App Store Connect側とテスター側を分けて調査します。
SECTION 05 CI障害か配布設定かを、どの順序で切り分けますか?
次の条件分岐で、調査先と再実行の要否を決めます。
- App Store Connectに対象ビルドが見当たらず、CIにもアップロード完了を裏付ける記録がない場合:Mac上のアーカイブ工程、アップロード対象、ツールの出力を確認します。
- ビルドが存在し、状態が処理中の場合:状態と確認時点を記録し、処理完了を待って再確認します。状態変化だけを理由にCIを再実行しません。
- ビルドが無効、または要対応の表示になっている場合:エラーと交付ログを照合し、要件違反が特定できたときに限り修正して再アーカイブします。
- ビルドがテスト可能でも対象者が使えない場合:テストグループ、招待、内部・外部テストの条件、テスター側の表示を確認します。
- 同じ区間で繰り返し失敗し、ログにもMacノード側の異常がある場合:環境差、実行アカウント、ネットワーク経路、利用可能なディスク領域などを調べ、必要な変更を限定して再検証します。
CIには、アーカイブの識別情報、アップロードツールの結果、交付ログを参照できる場所、App Store Connectで確認した最終状態を一組として保存します。アップロード後の画面確認を誰が行うか、状態が止まった場合に誰へ引き継ぐかも決めておけば、担当者が交代しても同じ証拠から判断できます。
IPAのアップロード失敗、Invalid Binary、TestFlightの配布問題はどう見分けますか。
アップロード失敗は、まずCIとアップロードツールの記録で送信工程を確認します。Invalid BinaryなどはApp Store Connectのエラーとビルド状態から資格の問題を調べ、ビルドがテスト可能なのに利用者だけが使えない場合は、テストグループと招待を確認します。状態が示す工程に合わせて調査すれば、署名資産の変更や再実行を必要以上に広げずに済みます。
新しいMacノードを導入する場合も、アップロード成功だけを合格条件にしないでください。アーカイブからApp Store Connect上の状態確認、テストグループでの表示までを実際のリリース作業で検証し、どの工程の記録が取得できるかを受け入れ基準にします。CIの障害かApple側の処理かを切り分けるためのリモートMac環境の案内も、運用設計と合わせて確認できます。
既存のCIだけで運用すると、共有ノードの環境差や再現用環境の確保が課題になりやすく、障害調査中に本番の署名・ビルド作業と切り分けにくい場合があります。一方、長期にわたって常時稼働する負荷があり、物理機器や周辺機器への接続が必須なら、自社でMacを購入・管理するほうが適するケースもあります。短期間の再現検証やチーム用の隔離環境が必要なら、Macを都度購入せずに利用できるVPSNIXのリモートMacレンタルも比較対象になります。利用条件は料金案内で確認し、まずはアップロードからテストグループへの反映までを検証できるかで判断してください。