TestFlightの使い方:iPhoneアプリを申請前にテストする
著者:Mehdi Azizi
更新・8 分
内部・外部テスター、ベータ版審査、公開リンク、90日間有効なビルド。TestFlightの仕組みと申請前の確認リストをやさしく解説します。
TestFlightとは?何に使うの?
TestFlightは、App Storeでリリースする前のアプリを実機のiPhoneにインストールできるAppleのサービスです。App Store Connectにビルドをアップロードしてテスターを招待すると、テスターはApp Storeで無料配布されているTestFlightアプリからインストールします。テスターには2種類あります。内部テスターはチームメンバー最大100人で、Appleの審査はありません。外部テスターは最大10,000人で、メールか公開リンクで招待します。こちらは最初のビルドでベータ版審査が必要です。各ビルドは90日間テストできます。
| 項目 | 内部テスター | 外部テスター |
|---|---|---|
| 最大人数 | 100 | 10,000 |
| アカウントへのアクセス | あり(ロールを付与) | なし |
| 招待方法 | 内部グループに追加 | メールまたは公開リンク |
| Appleのベータ版審査 | なし | 最初のビルドで実施 |
| 対象 | 自分、共同経営者、身近な人 | 友人、初期ユーザー |
TestFlightを使うには有料のApple Developerアカウントが必要です。無料アカウントではこのサービスを利用できません。このガイドはすべて、標準プログラムのアカウントを持っている前提で進めます。なお、AppleのEnterpriseプログラムではTestFlightを使えません。
僕のアプリでは、EAS Submitでアップロードしたビルドはすべて、審査に出す前にTestFlightと自分のiPhoneを通しています。開発中には見えない問題が見つかるのは、まさにここです。
TestFlightにビルドをアップロードする
ビルドとは、アプリをコンパイルして署名したものです。署名が正しくないと、アップロード時にITMS-90034で拒否されます。TestFlightに表示させるには、App Store Connectにアップロードする必要があります。Expoならeas build --platform iosのあとにeas submit --platform iosを実行します。ITMS-90725を避けるため、十分に新しいビルドイメージを使いましょう。Expoのドキュメントによると、Appleの処理が終わるとビルドがTestFlightに表示され、通常10〜15分かかります。これはすべてWindows PCからでもできます。全体の流れはMacなしでiOSアプリを公開するガイドで詳しく解説しています。
初回によくつまずくポイントが2つあります。
- ビルド番号はアップロードのたびに変える必要があります。 同じバージョンで同じ番号のビルドを2つアップロードすると拒否されます。EASなら自動インクリメントを有効にすれば、もう気にしなくて済みます。
- 暗号化に関する質問。 暗号化の使用についての質問に答えるまで、ビルドはコンプライアンス情報が不足しているステータスのまま止まります。毎回App Store Connectで答えてもいいですし、アプリの設定で一度だけ宣言しておくこともできます。
内部テスター:待たずにチームでテスト
内部テスターは、ロールを付与されたApp Store Connectアカウントのユーザーです。Appleは最大100人まで認めていて、それぞれ複数のデバイスにアプリをインストールできます。上限は30台です。
大きなメリットは、ベータ版審査がないことです。ITMS-90717のような自動エラーがなくビルドの処理が終われば、内部グループに追加した時点で使えるようになります。自分自身や、アカウントへのアクセスを渡す共同経営者や身近な人に向いたグループです。
制約は、App Store Connectアカウントのユーザーとして追加しなければならないことです。知らない人には向きません。
外部テスターとベータ版審査
外部テスターはアカウントへのアクセスが一切不要です。メールか公開リンクで最大10,000人まで招待できます。友人、初期ユーザー、コミュニティに向いたグループです。
その代わり、Appleが公開前にビルドをチェックします。あるバージョンの最初のビルドを外部グループに追加すると、ベータ版審査に回ります。同じバージョンの以降のビルドは、必ずしもフル審査が必要になるわけではありません。
提出前に、App Store Connectでテスト情報の入力を求められます。
- ベータ版の説明:テスターに何を確認してほしいかを伝えます。
- フィードバック用のメールアドレス
- 連絡先情報:Appleがあなたに連絡できるようにするためです。
ベータ版審査はApp Storeの審査ではありません。TestFlightで承認されたビルドでも、公開時にリジェクトされることがあります。
ベータ版審査はビルドがルールを守っているかを確認しますが、最終審査ではストアページ、サブスクリプション、法的文書、体験全体も見られます。よくあるリジェクト理由はAppleがアプリをリジェクトする理由にまとめているので、頭に入れておきましょう。
公開リンクでテスターを招待する
公開リンクは、まだ知り合いではない人にアプリをテストしてもらう一番簡単な方法です。Appleの手順は次のとおりです(画面の表記は英語)。
- App Store Connectでアプリを開き、TestFlightタブを開きます。
- External Testingの下で外部グループを選びます。
- Create Public Linkをクリックします。
- 誰でも参加できるようにするならOpen to Anyone、特定のデバイスやiOSバージョンに絞るならFilter by Criteriaを選びます。
- 必要ならSet Limitでテスター数の上限を設定します。
あとはメッセージ、SNS、メールなど、好きな場所でリンクを共有します。相手はTestFlightアプリをインストールし、リンクを開いて招待を承認します。
広く配る前に知っておきたいことが2つあります。
- 上限を設定しましょう。 リンクが想定以上に広まっても、テスター数をコントロールできます。
- 公開リンクのテスターは匿名です。 App Store Connectに表示されるのはインストール日、セッション、クラッシュだけです。誰が何をテストしたか知りたいなら、メールで招待しましょう。
TestFlightのビルドはいつまで使える?
ビルドは90日間テスターに提供されます。それを過ぎると期限切れになり、テスターは開けなくなります。ベータ期間がそれより長いなら、期限前に新しいビルドをアップロードするだけです。
実際には、もっと頻繁に新しいビルドを出すことになります。重要な修正のたびです。グループに追加した新しいビルドはテスターに通知され、TestFlightアプリから入手できます。
テスターからフィードバックを集める
TestFlightにはフィードバック機能があります。テスターはアプリ内でスクリーンショットを撮り、注釈を付けて送信できます。アプリがクラッシュするとクラッシュレポートが届き、テスターは状況を書き添えることもできます。すべてApp Store Connectで確認できます。
便利ですが、特定のクラッシュを理解するには足りません。僕のアプリでは、原因のコード行までエラーを報告してくれるSentryと、ユーザーがどこで離脱するかがわかるPostHogを入れています。どちらもTestFlightのビルドでも本番と同じように動きます。
TestFlightでサブスクリプションをテストする
アプリでサブスクリプションを販売するなら、本当に動くかを確認する場所がTestFlightです。TestFlightのビルドでの購入はAppleのテスト環境を通ります。テスターに課金されることはありません。更新は加速されていて、実際の期間に関係なく、各サブスクリプションは1日1回、1週間で最大6回更新されます。
最低限、表示される価格が正しいか、購入でアプリがきちんと解放されるか、再インストール後に復元ボタンでサブスクリプションが戻るかを確認しましょう。僕はアプリのサブスクリプション管理にRevenueCatを使っています。App Store Connectの商品設定からペイウォールまでの全体の組み立ては、iOSのアプリ内サブスクリプションのページで解説しています。
Appleに提出する前にテストすべきこと
これは僕が審査に出す前に毎回使っているリストです。どの項目も、避けられるリジェクト理由かクラッシュに対応しています。
初回起動
- アプリを削除し、TestFlightから再インストールして開きます。審査担当者がやるのと同じことです。
- オンボーディングを飛ばさず最後まで進めます。
- すべての権限(通知、カメラ、位置情報)を拒否し、それでもアプリが動くか確認します。
お金まわり
- ペイウォールに価格、期間、利用規約とプライバシーポリシーへのリンクが表示されている。
- 購入も復元も動作する。
- 設定したすべての商品が審査担当者から見える。ガイドライン2.1は、App内課金が完全で、見えて、動作することを求めています。
厳しい条件
- 機内モードと低速回線:真っ白な画面ではなく、わかりやすいメッセージを出す。
- サポートする最小と最大のiPhone:何も切れず、キーボードで何も隠れない。僕はSolysで、小さいiPhoneで画面が切れていたせいでリジェクトされました。
- アプリを多言語化しているなら、長いテキスト。
審査担当者向けの資料
- ログインが必要なアプリなら、審査メモにデモアカウントを書き、バックエンドを稼働させておく。ガイドライン2.1で明確に求められています。
- アプリが何をするか、メイン機能がどこにあるかを2文で説明する審査メモ。
それでもリジェクトされたら、Appleにリジェクトされたアプリのページで、1週間を無駄にせず返信する方法を解説しています。ストアページからリリースまで公開の全体像を知りたいなら、App Storeにアプリを公開するを読んでください。
ビルドで埋める検証シート
16シナリオの検証シートをCSV形式でダウンロードできます。準備、実行する操作、期待する結果、確認した証拠を分けて記録できます。Numbers、Excel、Googleスプレッドシートに読み込み、各テストのバージョン、デバイス、結果を記入してください。
架空の読書記録アプリなら、「ページを保存する」だけでは不十分です。24ページと記録し、アプリを完全に終了してから再起動し、その値が残っているか確認します。実行していないテストは「未テスト」のままにします。アプリにサブスクリプションがないなら、購入シナリオには理由を添えて「該当なし」と書きます。
このシートはあくまで自分用に調整する出発点で、お墨付きではありません。実際に確認した操作の流れを審査担当者に説明するためのApp Review用メモやその他の無料テンプレートもあわせてどうぞ。
TestFlightからApp Storeへ
TestFlightは、アプリが現実のものになる段階です。本物のiPhoneで動き、本物の人の手に渡ります。iOS Kitの流れでは2番目のステップです。アプリの中核を作り、TestFlightで自分のiPhoneでテストしてから、サブスクリプションをつなぎ、公開準備に進みます。
TestFlightのあとはAppleの審査です。Apple Review Kitには、提出前の僕のチェックリストと審査担当者向けのメモをまとめています。トップページでは、Claude Codeでモバイルアプリを作る4つのステップを紹介しています。
Appleがアプリを承認すると保証できる人はいません。決めるのはAppleです。
よくある質問
TestFlightでiPhoneアプリをテストするには?
App Store Connectにビルドをアップロードし、テスターグループに追加します。Expoなら、EAS BuildでコンパイルしてEAS Submitでアップロードします。Expoによると、Appleの処理後、通常10〜15分でTestFlightに表示されます。テスターはApp Storeで無料のTestFlightアプリからインストールします。有料のApple Developerアカウントが必要です。
テスターを招待するTestFlightリンクを作るには?
App Store Connectでアプリの TestFlightタブを開き、External Testingの下でグループを選んでCreate Public Linkをクリックします。Open to AnyoneかFilter by Criteriaを選び、Set Limitで上限を設定します。公開リンクのテスターは匿名のままです。誰が何をテストしたか知りたいなら、メールで招待しましょう。
TestFlightのベータ版審査はApp Storeの審査の代わりになりますか?
なりません。ベータ版審査はビルドがルールを守っているかを確認しますが、最終審査ではストアページ、年齢制限指定、サブスクリプション、法的文書、体験全体も見られます。そのため、TestFlightで承認されたビルドでも公開時にリジェクトされることがあります。ベータ版審査が発生するのは外部テスターだけで、あるバージョンの最初のビルドが対象です。内部テスターには審査はありません。
TestFlightには何人のテスターを招待できますか?
内部テスターは最大100人、外部テスターは最大10,000人まで招待できます。内部テスターはApp Store Connectアカウントのメンバーで、ベータ版審査はなく、1人あたり最大30台のデバイスにインストールできます。外部テスターはメールか公開リンクで招待し、最初のビルドのベータ版審査を経てから使えます。各ビルドは90日間テストできます。
TestFlightで課金されずにサブスクリプションをテストできますか?
できます。TestFlightのビルドでの購入はAppleのテスト環境を通るので、テスターに課金されることはありません。更新は加速されていて、実際の期間に関係なく、各サブスクリプションは1日1回、1週間で最大6回更新されます。最低限、表示価格、アプリの解放、再インストール後の復元を確認しましょう。全体の組み立てはiOSのアプリ内サブスクリプションで解説しています。
Appleに提出する前にTestFlightで何を確認すべきですか?
審査担当者と同じようにTestFlightからアプリを再インストールし、オンボーディングを最後まで進めます。すべての権限を拒否し、購入と復元をテストしたうえで、機内モード、サポートする最小と最大のiPhoneで試します。ログインが必要なアプリなら、審査メモにデモアカウントを用意し、バックエンドを稼働させておきましょう。