iOSアプリをテスターに配布するには、TestFlight(内部テスターは即時、外部テスターは短いBeta App Reviewの後)を使うか、登録済みデバイス向けのad hocビルドを使います。Androidなら、Google Playのテストトラック(内部・クローズド・オープン)、単発リンク向けのPlay内部アプリ共有、または署名済みAPKをFirebase App Distributionや直接ダウンロードで共有できます。どれが適切かは、テスターが誰か、人数、ビルドをストアのインフラ経由にする必要があるかどうかで変わります。
このガイドでは、各オプションを比較し、Capacitorアプリでそれぞれをセットアップする方法を示し、テスターがよく遭遇するエラーをまとめます。
配布方法の選択
| メソッド | プラットフォーム | 最大テスター数 | テスターが受け取る前のレビュー | テスターに必要なもの | 最適な用途 |
|---|---|---|---|---|---|
| TestFlight内部テスト | iOSと | チームメンバー100名 | いいえ | App Store Connect ユーザー、TestFlight アプリ | チーム |
| TestFlight 外部テスター | iOSと | 10,000 | ベータ版アプリの審査 (バージョンの初回ビルド) | メール招待または公開リンク、TestFlight アプリ | ベータユーザー、クライアント |
| アドホック | iOSと | デバイスタイプごとに年間100台まで | いいえ | 登録済みUDID、デベロッパーモード | 少人数のQAチーム、Appleの審査なし |
| Play 内部テスト | Androidでは | 100 | フルレビュー不要、通常数分で利用可能 | メールリストに登録されたGoogleアカウント | チーム |
| Play クローズドテスト | Androidでは | メールリストまたはGoogle グループ | はい | Googleアカウント、オプトインリンク | ベータユーザー、12人のテスター要件 |
| Play オープンテスト | Androidでは | 無制限または上限あり | はい | リスティングでオプトイン | パブリックベータ |
| Play 内部アプリ共有 | Androidでは | リンクを知っている全員 | いいえ | Google アカウント、設定が有効 | 迅速なQAビルド、任意の code バージョン |
| Firebase App Distribution | 両方 | 大規模 | いいえ | メール招待; iOSは登録済みUDIDが必要 | クロスプラットフォームQA |
| APKの直接リンク | Androidでは | 誰でも | いいえ | 不明なソースを許可 | 高速な社内テスト |
基本ルール:
- ストアにリリースするビルドと同じものか? TestFlight と Play のトラックを使用。テスターが使うバイナリがそのまま昇格される。
- 毎日の QA ビルドか? 両ストアの社内テスト、または Firebase App Distribution。
- 数分で Web レイヤーの変更をテストしたいか? 新しいバイナリではなく、テストチャネルに live update を配信する。
配布前:署名
すべてのテストビルドには署名が必要。
- iOSと テストビルドには、 App Store Connect プロファイル(TestFlight)または Ad Hoc プロファイル(直接インストール)。どちらも Apple Distribution 証明書を使用します。参照: iOS証明書とプロビジョニングプロファイルの解説.
- Androidでは Play トラック向けのビルドは、アップロードキーで署名された AAB です。直接インストールには、任意のリリースキーで署名された APK が必要です。デバッグ APK もインストールできますが、動作が異なり(デバッグ可能、署名が異なる)、後から Play ビルドでアップグレードすることはできません。
iOS: TestFlight
ビルドをアップロード
Xcode から: 製品 > アーカイブ、次に Distribute App > App Store Connect > Upload。コマンドラインまたは CI からは、次をエクスポートします .ipa App Store ConnectのAPIキーを使ってアップロードするか、クラウドビルドサービスに任せます。
2026年4月以降、アップロードにはXcode 26以降でのビルドが必須です。
このキーを以下に追加します: ios/App/App/Info.plist アプリが標準のHTTPS暗号化のみを使用している場合は、ビルドのたびにApp Store Connectで輸出コンプライアンスの質問を求められないようにします:
<key>ITSAppUsesNonExemptEncryption</key>
<false/>
処理には数分から1時間程度かかります。ビルドの準備ができるとメールが届きます。
内部テスト
- App Store Connectでアプリを開き、 TestFlight > 内部テストからグループを作成します。
- チームメンバーを追加します。メンバーにはApp Store Connectのロール(Admin、App Manager、Developer、Marketingなど)が必要です。最大100名まで追加できます。
- 有効にする 自動配布 これで、新しいビルドがすべてグループに追加されます。
- テスターは、App Storeから TestFlight アプリをインストールし、招待を承認します。
審査は不要です。アップロードから端末に届く最速の方法です。
外部テスト
- TestFlight > 外部テスト > + でグループを作成します。
- メールアドレスでテスターを追加するか、 公開リンク を有効にして、必要に応じてテスター数を制限できます。
- ビルドをグループに追加し、詳細を入力します。 テスト情報 (テスト内容、フィードバック用メールアドレス、ベータ版アプリの説明、必要に応じてデモ用ログイン情報)。
- 提出: ベータ版Appレビュー。各バージョンの最初のビルドは審査され、通常は1日以内に完了します。同じバージョンの後続ビルドは、完全な審査なしで配信されることがよくあります。
外部テストでは最大10,000人のテスターをサポートしています。テスターはTestFlightから直接、スクリーンショット付きのフィードバックを送信でき、App Store Connectで確認できます。
TestFlightの制限事項
- ビルドの有効期限は 90日間.
- テスターには、ビルドがサポートするiOSバージョンが必要です(Capacitor 8にはiOS 15以降が必要です)。
- TestFlightビルドは本番のApp Store署名を使用するため、プッシュ通知には 本番 APNs環境。
- TestFlightでのアプリ内課金はsandbox環境を使用するため、課金は発生しません。
iOS: Ad hoc配布
Ad hocビルドは、TestFlightやAppleの審査を通さず、Apple Developerポータルに登録済みのデバイスに直接インストールできます。
- 各テスターのUDIDを収集します。テスターは自分の端末で、次のツールを使って取得できます: iOS UDID 検索ツール、またはデバイスを接続した状態でFinderやXcodeから確認できます。
- デバイスを以下で登録します: Certificates, Identifiers & Profiles > Devices.
- 以下を作成: Ad Hoc プロビジョニングプロファイルを対象デバイス込みで作成し、ダウンロードします。
- ビルド:
.ipaそのプロファイルで(Xcode: Distribute App > Release Testing(Ad Hocの新しい名称です)。 - インストール:
- 以下を
.ipaFinderでデバイスにドラッグするか、 Xcode > Window > Devices and Simulators. - または、
itms-servicesHTTPS経由でマニフェストをホストし、テスターがリンクをタップできるようにします。Firebase App Distributionなどのサービスが代行します。
- 以下を
- iOS 16以降では、以下をインストールするには
.ipaMac(XcodeまたはApple Configurator)からのインストールが必要です デベロッパモード デバイス上で行います(設定 > プライバシーとセキュリティ)。itms-servicesリンクからインストールする場合は不要です。詳細は iOSでデベロッパモードを有効にする方法を.
新しいテスターを追加するには、UDIDの登録、プロファイルの再生成、および再ビルドが必要です。デバイススロット(デバイスファミリーごとに100個)はメンバーシップの年次更新時にのみリセットされるため、不用意にデバイスを登録しないでください。
Android: Google Play テストトラック
Play Consoleには本番のほかに3つのテストトラックがあります。いずれもアップロードキーで署名したAABが必要です。
内部テスト
- テスト > 内部テスト > テスター: メールリストを作成します(最大100件のメールアドレス)。
- 新しいリリースを作成、AABをアップロードし、リリースノートを追加して、保存してロールアウトします。
- 以下をコピー オプトインリンク して、テスターに送信します。テスターが承諾すると、Play Store からインストールできます。
内部リリースは通常数分で利用でき、完全なレビューを待つ必要はありません。まったく新しいアプリの初回リリースは、Google がアプリを処理するため、時間がかかることがあります。
クローズドテスト
クローズドトラックはレビューされ、メールリストまたは Google Groups をサポートします。これは、 14日間で12人のテスター という、2023年11月13日以降に作成された個人開発者アカウントが本番環境へアクセスする前に適用されるルールです。Google Groups を使用すると、テスターが参加しやすくなります。詳細は Apple と Google Play の開発者アカウントの作成方法.
オープンテスト
Playストアの公開リストから誰でも参加できます。ストアの公開が完了したら、パブリックベータに活用してください。オープンテスターからのフィードバックは非公開であり、パブリックな評価には影響しません。
私たちの Androidベータテストガイド 各トラックをより詳しく比較します。
Android: 内部アプリ共有
内部アプリ共有は、Play Store経由で任意のAPKやAABをデバイスに入れる最速の方法です。バージョンcodeのルールも審査も不要です。
- Play Consoleで、次を開きます: 内部アプリ共有 (「テスト」内)でアップローダーを追加します。
- APKまたはAABをアップロードすると、リンクが発行されます。
- テスターはPlay Storeアプリを開き、設定に移動して、 Play ストアのバージョン を7回タップしてデベロッパー向けオプションを表示し、オンにします。 内部アプリ共有.
- テスターはリンクを開いてインストールします。
バージョンコードを上げなくて済むので、プルリクエストビルドのQAに便利です。
Android: APK直接配布とFirebase App Distribution
APK直接配布
署名済みリリースAPKをビルドします。新しい Capacitor プロジェクトには release 署名設定がないため、 assembleRelease そのままではインストールできない未署名のAPKが生成されます。まず signingConfigs.release ブロック(keystore のパスとパスワード。通常は次から読み取る key.properties)を android/app/build.gradle 追加し、 buildTypes.release.signingConfig 最初にそれを指定します。
bun run build
bunx cap sync android
cd android && ./gradlew assembleRelease
共有 android/app/build/outputs/apk/release/app-release.apk リンク経由で。テスターは、ブラウザまたはファイルマネージャーに、提供元不明のアプリのインストールとファイルを開くことを許可する必要があります。すでにPlay Store版がインストールされている場合は、署名が異なるため、先にアンインストールする必要があります。USB経由でインストールすることもできます。 adb install -r app-release.apk ( Androidで開発者向けオプションを有効にする方法を参照).
2026年9月30日より、ブラジル、インドネシア、シンガポール、タイの認定Androidデバイスでは、認証済み開発者が登録したパッケージ名を持つアプリのみインストール可能になります(2027年に全世界展開予定)。テスターがこれらの国にいる場合は、Android Developer ConsoleまたはPlay Consoleでパッケージ名を登録してください。経由のインストールは adb 影響を受けません。
Firebase App Distribution
Firebase App Distributionは両プラットフォームに対応しており、メールでの招待送信や、誰がどのビルドをインストールしたかの追跡が可能です。
bun add -g firebase-tools
firebase login
firebase appdistribution:distribute android/app/build/outputs/apk/release/app-release.apk \
--app 1:1234567890:android:abc123def456 \
--groups "qa-team" \
--release-notes "Fix checkout crash"
- Androidテスターは、メールのリンクまたはApp Testerアプリからインストールします。
- iOSテスターは引き続きad hoc(またはdevelopment)プロファイルに含まれている必要があります。App Distributionは招待を承諾した時点でUDIDを収集しますが、登録と再ビルドは自身で行う必要があります。
- AAB配布には、FirebaseプロジェクトとGoogle Playの連携が必要です。
テスターにリンクを渡すクラウドビルド
すべてのCIランナーでMacと署名の管理を行いたくない場合は、 Capgo のビルド Capacitor アプリをクラウドでビルドします。テストビルドではストアへの提出をスキップし、バイナリをアップロードすると、QR code 付きの期限付きダウンロードリンクを取得できます:
# Android APK/AAB for testers, no Play upload
bunx @capgo/cli@latest build request com.example.app \
--platform android --no-playstore-upload --output-upload --output-retention 2d
# iOS ad hoc build (no App Store submission)
bunx @capgo/cli@latest build request com.example.app \
--platform ios --ios-distribution ad_hoc --output-upload
# iOS build uploaded to TestFlight for external groups
bunx @capgo/cli@latest build request com.example.app \
--platform ios --ios-testflight-groups "Beta Testers"
追加 --output-record build.json CIでリンクを読み取り、それを使って bunx @capgo/cli@latest build last-output --path build.json --field outputUrl プルリクエストやチャットに投稿できます。 Capgo Build ドキュメント すべてのオプションを一覧表示します。
Web変更時の再ビルドをスキップ
Capacitor アプリの変更の多くはWebレイヤーで行われます。テキスト修正のためにバイナリを再ビルドして再配布するのは、TestFlightの処理とレビューで丸一日を無駄にします。これなら、 Capgo Live Updatesテスターはインストールしたビルドをそのまま使い、新しいJavaScript bundleをテストチャネルにプッシュするだけで済みます:
bunx @capgo/cli@latest bundle upload --channel beta
プルリクエストごとに専用チャネルを割り当て、QAが同じインストール済みアプリ上でチャネルを切り替えられるようにもできます。詳細は すべてのプルリクエストをインストール可能なプレビューに変換.
トラブルシューティング
iOS ad hoc で「インストールできません」と表示される。 デバイスのUDIDがプロファイルに含まれていないか、プロファイルが期限切れです。以下で確認してください: security cms -D -i profile.mobileprovision.
iOS でアプリが起動直後に終了する。 デベロッパーモードがオフ(ad hoc/development ビルド)、またはプロファイルが期限切れです。
TestFlight のビルドが「処理中」のまま進まない。 最大1時間待機してください。失敗した場合はメールに理由が記載されます。多くの場合、使用目的の説明文字列(NSCameraUsageDescription など)の不足、またはアイコンの問題です。
TestFlight の「コンプライアンス情報不足」 App Store Connect で輸出コンプライアンスの質問に回答するか、以下を追加: ITSAppUsesNonExemptEncryption まで Info.plist.
Androidで「アプリがインストールされていません」と表示される。 署名が異なるバージョンが既にインストールされているか、APKが未署名または破損しています。既存のアプリをアンインストールしてください。
テスターがオプトインした後、Play Storeにアプリが表示されない。 数分待って、招待されたアカウントでサインインしているか、リリースが対象のトラックに展開されていて、その国で利用可能かを確認してください。
アップロード時に「バージョン code は既に使用されています」と表示される。 バージョンアップ versionCode における android/app/build.gradle。ただし、Internal app sharingは例外です。
TestFlightでプッシュ通知が届かない。 TestFlightは本番APNs環境を使用します。以下を確認してください: aps-environment entitlementとプッシュプロバイダーの環境設定。
小規模チーム向けの推奨セットアップ
- マージのたびに自動配信されるTestFlightの内部グループと、Playの内部テストトラック。
main. - ベータユーザー向けのTestFlight外部グループとPlayのクローズドテストトラックを、毎週更新。
- Live Update による
betaビルド間のWeb限定修正用チャンネルで。 - ベータ版が安定したら、同じビルドを両ストアの製品版へ昇格させ、 初回アプリ審査ガイド.