TestFlight: iOSベータテストとビルド管理

著者: IT Sectr 公開日: 2026-04-11 読了時間: 9 分

TestFlight — iOS、iPadOS、watchOS、tvOSアプリケーションのベータテストのためのApple公式サービスです。TestFlightを通じて、開発者は最大10,000人の外部テスターにプレリリースビルドを配布し、App Storeに公開することなくフィードバックやクラッシュレポートを収集できます。Apple Developer Documentation, 2025によると、App Storeのアプリの80%以上がリリース準備段階でTestFlightを使用しています。

主なポイント

  • TestFlight — テスターにアプリのベータ版を配布するためのAppleのプラットフォーム
  • 最大10,000人の外部テスターと1チーム最大100人の内部メンバー
  • Xcodeとの統合とApp Store ConnectによりIDEから直接ビルドをアップロード可能
  • 自動収集 テスターからのクラッシュログ、フィードバック、診断データ
  • TestFlightなしでは App Store外でのiOSビルド配布にはEnterprise証明書またはjailbreakが必要

TestFlightとは

TestFlight は、App Storeに公開せずにテスト用のiOSアプリケーションを配布する正当かつ唯一の公式方法です。このサービスは、2014年にAppleが同名の企業を買収した後に開始されました。TestFlight以前は、開発者はシーズンあたり100デバイスの制限があるAd Hoc配布を使用していましたが、TestFlightはこの制限を撤廃し、プロセスを数クリックに簡素化しました。

TestFlightが必要な理由

iOSには厳格なセキュリティポリシーがあります。アプリケーションはApp Storeを通じて、または特別な証明書を使用してのみデバイスにインストールできます。TestFlightは、開発者とテスターの間のプロキシとして機能することでベータテストの問題を解決します。Appleがビルドを基本的な要件に対してチェックし、その後テスターはApp StoreからTestFlightアプリを通じてアプリケーションを受け取るため、署名されていないファイルを信頼する必要がありません。

TestFlight vs Ad Hoc vs Enterprise

App Store外でiOSアプリケーションを配布するには3つの方法があります。Ad Hoc(100デバイスの制限、各デバイスのUDIDが必要)、Enterprise(無制限の社内配布、$299/年のApple Enterprise証明書が必要)、TestFlight(最大10,000人のテスター、無料、UDID収集不要)。TestFlightはベータテストに最適な選択肢で、Ad Hocはデバイス固有のテストに、Enterpriseは企業アプリケーションに適しています。

TestFlightの仕組み

TestFlight を通じてビルドを公開するプロセスは5つのステップで構成されます。Xcodeでのビルド、Archive Organizerを介したApp Store Connectへのアップロード、Appleの処理、テスターの招待、TestFlightアプリを介したアプリのインストール。各ステップはプロジェクトの複雑さに応じて数分から1時間かかります。

Appleのビルド要件

ビルドは配布証明書と有効なプロビジョニングプロファイルで作成する必要があります。Appleは証明書の有効性、バンドル識別子の一致、プライベートAPIの不在、正しいアイコン(1024×1024)、App Storeアイコンの存在をチェックします。ビルドがチェックに合格しない場合、TestFlightは問題の説明とともにエラーを表示します。

ビルドの処理

アップロード後、ビルドはAppleの自動検証(バイナリコードの静的解析、デジタル署名の検証、プライベートAPIの使用とマルウェアのスキャン)を受けます。処理には最初のビルドで15分から2時間かかり、以降のビルドでは通常150分かかります。処理状況はApp Store ConnectのActivityに表示されます。

swift
// Swift AppDelegateでのTestFlight設定
import UIKit

@main
class AppDelegate: UIResponder, UIApplicationDelegate {
    func application(
        _ application: UIApplication,
        didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?
    ) -> Bool {
        // 確認: TestFlightを介してアプリがインストールされているか
        if Bundle.main.appStoreReceiptURL?.lastPathComponent
            == "sandboxReceipt" {
            print("TestFlight経由のベータ版")
        }
        return true
    }
}

内部テスターと外部テスター

TestFlight はテスターを内部テスター(Internal Testers)と外部テスター(External Testers)の2つのグループに分けます。違いは参加者数、ビルドへのアクセス、Appleによるレビューの必要性です。適切なグループを選ぶことでテストプロセスが加速し、App Storeポリシーに準拠します。

内部テスター(Internal)

Apple Developer Programチームの最大100人の参加者。内部テスターを招待するには、App Store ConnectでApple IDを追加するだけで、すぐにすべてのビルドにアクセスできるようになります。Appleのレビューは不要です。毎日のスモークテストと早期段階の機能検証に最適です。

外部テスター(External)

開発チームに所属しない最大10,000人の参加者。外部テスター向けの最初のビルドは基本的なAppleレビュー(通常12日)を受けます。コア機能に影響を与えない変更を含む後続のビルドは、再レビューなしで通過できます。外部テスターはメールまたは公開リンクを通じて招待されます。

パラメータ内部テスター外部テスター
最大数10010,000
Appleレビュー不要最初のビルド — 必須
招待方法チームのApple IDメール / 公開リンク
ビルドの有効期限90日90日
ビルドアクセスすべて一度にアクティブなグループのみ

TestFlightへのビルドアップロード方法

TestFlight へのビルドのアップロードは、Xcode、Application Loader、またはxcrunを使用したコマンドラインで実行できます。最も一般的な方法は、プロジェクトアーカイブを作成した後のXcode Archive Organizerを使用する方法です。代替方法はCI/CDパイプライン向けのFastlaneによる自動化です。

Xcodeによる手動アップロード

アーカイブを作成し(Product → Archive)、Organizerを開き、アーカイブを選択してDistribute Appをクリックします。配布方法としてTestFlightを選択し、証明書とプロビジョニングプロファイルを指定します。XcodeがビルドをApp Store Connectにアップロードし、処理後に表示されます。最初のアップロードにかかる時間は1020分です。

Fastlaneによる自動化

Fastlane はTestFlightへのビルドアップロードを自動化するための最も人気のあるツールです。fastlane pilotコマンドは、Xcodeを開かずにビルドをアップロードしテスターを管理します。FastlaneをCI/CDサーバーと統合すると、すべてのテストに合格した後、自動的にTestFlightにビルドを公開できます。

ruby
# Fastfile — TestFlightへのビルドアップロード
default_platform(:ios)

lane :beta do
    # matchによる証明書の取得
    match(type: "appstore")

    # ビルドと署名
    build_app(
        scheme: "MyApp",
        export_method: "app-store",
        workspace: "MyApp.xcworkspace"
    )

    # TestFlightにアップロード
    pilot(
        skip_waiting_for_build: true,
        distribute_external: false,
        notify_external_testers: false
    )
end

Fastlane pilot は自動的にIPAをApp Store Connectにアップロードし、処理を待機し(skip_waiting_for_build = falseの場合)、選択したテスターグループにビルドを割り当てます。distribute_external: trueコマンドは、処理後すぐにビルドを外部テスターに送信します。

コマンドラインによるアップロード

Fastlaneなしでも、xcrunを使用できます。xcrun altool --upload-app --file path/to/app.ipa --username YOUR_APPLE_ID --password @keychain:AC_PASSWORDaltool はCI環境向けにAppleがサポートしており、グラフィカルインターフェースは必要ありません。パスワードはキーチェーンまたはアプリ固有のパスワードを介して渡されます。プレーンテキストのパスワードは使用しないでください。

TestFlightでのフィードバック収集と診断

TestFlight は、組み込みのフィードバックフォーム、自動クラッシュログ収集、使用状況メトリクス、スクリーンショットなど、いくつかのフィードバックメカニズムを提供します。チームは、ベータテスト用のサードパーティSDKを統合することなく、App Store Connectですべてのデータを取得できます。

組み込みフィードバックフォーム

テスターはTestFlightアプリを開き、ビルドを選択してSend Feedbackをクリックします。フォームではテキストフィードバックの送信、スクリーンショットの添付、重要度の指定が可能です。すべてのフィードバックはApp Store ConnectのTestFlight → Feedbackに収集されます。開発者がフィードバックに返信すると、テスターはTestFlightアプリで通知を受け取ります。

クラッシュログと診断

アプリがクラッシュすると、TestFlightは自動的にクラッシュレポート(コールスタック、OSバージョン、デバイスモデル、クラッシュ時刻)を収集します。クラッシュログはXcode Organizer(Crashes)とApp Store Connect(TestFlight → Crashes)で利用できます。シンボル化されたクラッシュログを取得するには、ビルドと一緒に、またはXcodeを介して個別にdSYMファイルをアップロードする必要があります。

使用状況の監視

TestFlightはインストール数、アクティブテスター数、セッション数、クラッシュ数などのメトリクスを表示します。分析は毎日更新され、テスターのエンゲージメントを評価するのに役立ちます。1週間テスターがアプリを開かなかった場合、グループとのコミュニケーションやビルドの品質を再検討する必要があります。

TestFlightからApp Store公開へ

TestFlight はApp Store公開プロセスの不可欠な部分です。TestFlightでベータテストを通過した同じビルドは、再ビルドすることなくAppleのレビューに提出できます — App Store Connectでボタンをクリックするだけです。これにより、本番ビルドがテスト済みビルドと異なるリスクが排除されます。

App Reviewに提出

App Store Connectで、テストを通過したビルドを選択しSubmit for Reviewをクリックします。AppleはTestFlightと同じビルドを使用するため、再アップロードは必要ありません。レビュー時間は通常13日です。ビルドが却下された場合は、問題を修正し、新しいビルドをTestFlightにアップロードしてプロセスを繰り返します。

リリース前の最終ビルド

レビューに提出する前に、TestFlightでの最終テストラウンド後2448時間待つことをお勧めします。この時間により、テスターは自動テストをすり抜ける可能性のある重要なバグを発見できます。TestFlightのリリース候補(RC)ビルドは、成熟したiOSチームの標準的なプラクティスです。

公開後の対応

TestFlightビルドは、App Storeでリリース版が公開されると、新しいインストールが自動的にできなくなります。すでにベータ版をインストールしたテスターは、リリース公開後30日間は引き続き使用できますが、その後アプリは開かなくなります。テスターがApp Store版にアップデートするようにしてください。

よくある質問

TestFlightの開発者向け費用は?

TestFlight はApple Developer Program($99/年)のメンバーには完全に無料です。ビルド数やテスター数に関係なく、サービスの利用に追加料金は発生しません。Apple開発者サブスクリプションのみを支払います — TestFlightはデフォルトで含まれています。

TestFlightはAndroidアプリでも使用できますか?

いいえ、TestFlightはAppleエコシステム限定のサービスです。Androidには同様のツール — Google Play ConsoleのInternal TestingおよびOpen Testingトラックがあります。Androidでのベータ版公開にはFirebase App DistributionやDeployGateも使用されています。

TestFlightでのビルド処理時間は?

アップロード後の最初のビルドの処理には15分から2時間かかります。以降のビルドはより高速に処理され — 通常150分です。処理時間はAppleサーバーの負荷に依存します。ステータスはApp Store ConnectのActivityセクションで追跡できます。

TestFlightのビルド数に制限はありますか?

各ビルドはアップロードから90日間テストに利用できます。ビルド数に制限はありませんが、同時にアクティブにできるビルドは最大30個です。古いビルドは期限切れまたは上限に達すると自動的に削除されます。

Apple IDなしでテスターを招待する方法は?

TestFlightでのテスト参加にはApple IDが必要です。外部テスターはメールリンクで招待されます — 初めてリンクを開くと、Apple IDがない場合に作成を促す画面が表示されます。ソーシャルネットワークやブログで配布するための公開リンクも利用できます。

まとめ

  • TestFlight — Apple Developer Programメンバー向け無料のApple公式ベータテストサービス
  • 最大10,000人の外部および100人の内部テスター、UDID収集や手動デバイス設定不要
  • 自動収集 TestFlightアプリによるクラッシュログ、フィードバック、診断データ
  • ビルドアップロード Xcode、Application Loader、xcrun altool、Fastlaneで可能
  • 同じビルドをTestFlightからApp Storeレビューに提出 — テスト版とリリース版に差がない
  • 90日間のビルド利用可能期間、同時に最大30のアクティブビルド
  • 推奨: FastlaneとCI/CDによるTestFlightへの自動ビルドアップロードを設定し、各ビルドを定期的にテスト

ターンキー方式のモバイルアプリケーションを開発します

IT Sectrは2017年からスタートアップや企業向けにiOS・Androidアプリケーションを開発しています。私たちがご相談に乗り、最適なソリューションをご提案します。

プロジェクトについて相談

こちらもお読みください