iOSアプリのIAP・サブスクリプションテスト環境と手順(StoreKit/Sandbox/TestFlight)

概要

iOSアプリのIAP(In-App Purchase)・サブスクリプション機能をテストするための手順と環境をまとめた備忘録ドキュメントです。

テスト環境の全体像

環境インストール元課金環境Appleサーバー接続実機必要
StoreKit TestinXcode(シミュレータ)ローカル完結不要不要
Sandbox(実機)Xcode USB RunSandbox(無課金)必要必要
TestFlightTestFlightアプリSandbox(無課金)必要必要
本番App Store本番(実費)必要必要

テスト進行のフロー

stateDiagram-v2
    direction TB

    state "StoreKit Testing" as SK {
        direction LR
        Local: ローカル完結
        Fast: 最速・シミュレータ可
    }

    state "Sandbox実機テスト" as SB {
        direction LR
        Connect: App Store Connect同期
        Real: 実機(USB Run)
    }

    state "TestFlight" as TF {
        direction LR
        Final: リリース直前確認
        External: 外部テスター可
    }

    state "本番リリース" as Prod {
        direction LR
        Live: 全ユーザー公開
        Official: Apple審査通過後
    }

    [*] --> SK : 開発初期・ロジック確認
    SK --> SB : ASCに商品登録完了
    SB --> TF : ビルドをアップロード
    TF --> Prod : 審査提出・承認
    Prod --> [*]

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 TestingApp Store Connect登録前でも開発できる
実機での動作確認Sandbox(Xcode USB Run)実際の購入フロー確認
リリース直前の最終確認TestFlight本番に最も近い環境

最小構成(個人開発)

  • iOS:普段使い端末 + Sandboxアカウント(専用欄で設定) → 端末を分けなくても安全に運用可能
  • テスト端末として旧iPhoneが1台あると、OSバージョン違いのテストや初回起動確認にも使えて便利
← ITQ Lab トップに戻る