概要
iOSアプリのIAP(In-App Purchase)・サブスクリプション機能をテストするための手順と環境をまとめたドキュメント。
—
テスト環境の全体像
| 環境 | インストール元 | 課金環境 | Appleサーバー接続 | 実機必要 |
|—|—|—|—|—|
| StoreKit Testing | Xcode(シミュレータ) | ローカル完結 | 不要 | 不要 |
| Sandbox(実機) | Xcode USB Run | Sandbox(無課金) | 必要 | 必要 |
| TestFlight | TestFlightアプリ | Sandbox(無課金) | 必要 | 必要 |
| 本番 | App Store | 本番(実費) | 必要 | 必要 |
テスト進行のフロー
“`
StoreKit Testing(ローカル完結・最速・シミュレータOK)
↓ 商品をApp Store Connectに登録したら
Sandbox実機テスト(Xcode USB Run)
↓ リリース直前の最終確認
TestFlight
↓
本番リリース
“`
—
1. StoreKit Testing(Xcode)
概要
Xcode上でシミュレータ(または実機)を使い、Appleのサーバーに一切接続せずIAPをテストできる仕組み。Xcode 12 / iOS 14から導入。
メリット
- App Store Connectへの商品登録が不要 → 実装の最初の段階から使える
- シミュレータで動作するため実機不要
- ネット環境不要
- 購入失敗・ネットワークエラーなど再現しにくいシナリオを強制的に起こせる
セットアップ手順
1. Xcodeプロジェクトに `.storekit` ファイルを追加
2. ファイル内にProduct ID・価格・サブスク期間などをローカルで定義
3. Xcode → Edit Scheme → Run → Options → StoreKit Configuration で該当ファイルを指定
“`
MyApp.xcodeproj
└─ MyApp.storekit ← ここに商品を定義
“`
トランザクション管理
“`
Xcode → Debug → StoreKit → Manage Transactions
“`
ここでトランザクションを手動で承認・拒否・削除できる。
—
2. Sandbox実機テスト(Xcode USB Run)
概要
Appleが提供するSandbox環境を使って、実機でIAPをテストする方法。実際の購入操作を行っても課金は発生しない。
iOSのアカウント構造
| サインイン箇所 | 用途 | テスト時の扱い |
|—|—|—|
| 設定 → Apple ID(最上部) | iCloud・FaceTime・普段のApp Store | 触らない |
| 設定 → App Store → Sandboxアカウント | IAP/サブスクのテスト専用 | ここだけ切り替える |
> ⚠️ 普段使いのApple IDとSandboxアカウントは完全に独立したデータベースで管理されている。本番購入済みのアイテムはSandboxに影響しない。逆もしかり。
事前準備(1回だけ)
1. App Store ConnectでSandboxテスターアカウント(専用Apple ID)を作成
2. 招待メールを確認・認証を完了させる
3. 実機の `設定 → App Store → SANDBOXアカウント` にサインイン
テスト手順
1. XcodeからUSB接続した実機に `Run` でインストール
2. アプリ内で「購入」ボタンをタップ
3. Appleの標準購入ダイアログが表示される
4. 「[Sandbox] ~でサインイン」と表示されることを確認 ← Sandbox環境の証拠
5. Sandboxアカウントのパスワードを入力
6. 購入完了(実費ゼロ)
サブスクリプションの更新間隔(Sandbox)
| 実際の期間 | Sandboxでの短縮期間 |
|—|—|
| 1週間 | 3分 |
| 1ヶ月 | 5分 |
| 2ヶ月 | 10分 |
| 3ヶ月 | 15分 |
| 6ヶ月 | 30分 |
| 1年 | 1時間 |
よくある躓きポイント
| 症状 | 原因 | 対処 |
|—|—|—|
| Sandboxダイアログが出ない | Sandboxアカウント未設定 | 設定 → App Store → Sandboxアカウントを確認 |
| 購入がずっとペンディング | Sandboxサーバの一時不調 | 少し待つかアプリ再起動 |
| 「このApple IDは未確認」エラー | テスターのメール認証が未完了 | App Store Connectで招待メールを確認・認証 |
| 本番購入になってしまった | 本番App Storeからインストールしたものと混在 | Xcodeから直接Runし直す |
—
3. TestFlight
概要
Appleが提供する公式のベータテスト配布プラットフォーム。App Storeに正式リリースする前に、テスターに実機でアプリを試してもらうための仕組み。課金環境はSandboxと同じ(実費ゼロ)。
TestFlightとApp Storeの違い
> TestFlightはApp Storeとは別のチャネル。 インストールはApp Storeではなく、専用の「TestFlightアプリ」から行う。
テスターの種類
| 種類 | 対象 | 人数上限 | Appleの審査 |
|—|—|—|—|
| 内部テスター | App Store Connectのメンバーのみ | 100名 | 不要 |
| 外部テスター | チーム外も可 | 10,000名 | 初回のみ必要(1〜2日) |
自分1人で自己テストする場合は内部テスターのみでOK。
アップロード手順(開発者側)
1. `Xcode → Product → Archive`
2. Archivesウィンドウで `Distribute App → TestFlight & App Store`
3. App Store Connectへ自動アップロード(処理に数分〜15分かかる)
4. App Store Connect → TestFlight タブでビルドを確認
5. 初回のみ:輸出コンプライアンス(暗号化の有無)の質問に回答
6. 内部テスターに自分のApple IDを登録
テスター側の手順
1. 招待メールのリンクをタップ
2. App StoreからTestFlightアプリ(無料)をインストール
3. TestFlightアプリからベータ版アプリをインストール
4. TestFlightアプリ内からフィードバック送信も可能
注意事項
- TestFlightビルドは90日間有効。期限が来ると自動で使用不可になる
- 新しいビルドをアップロードすれば90日リセット
- Sandboxアカウントの設定手順はSandbox実機テストと同じ
—
環境別まとめ
| フェーズ | 推奨環境 | 理由 |
|—|—|—|
| IAP実装の初期開発 | StoreKit Testing | App Store Connect登録前でも開発できる |
| 実機での動作確認 | Sandbox(Xcode USB Run) | 実際の購入フロー確認 |
| リリース直前の最終確認 | TestFlight | 本番に最も近い環境 |
最小構成(個人開発)
- iOS:普段使い端末 + Sandboxアカウント(専用欄で設定) → 端末を分けなくても安全に運用可能
- テスト端末として旧iPhoneが1台あると、OSバージョン違いのテストや初回起動確認にも使えて便利