AndroidアプリのIAP・サブスクリプションテスト環境と手順(エミュレータ/ライセンステスター/Play Console)

概要

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

テスト環境の全体像

環境インストール元課金環境Googleサーバー接続実機必要
Android StudioエミュレータAndroid Studioローカル完結不要不要
ライセンステスター(実機)Google Play(内部テスト)Sandbox(無課金)必要必要
内部テストトラックGoogle Play(内部テスト)Sandbox(無課金)必要必要
本番Google Play Store本番(実費)必要必要

テスト進行のフロー

stateDiagram-v2
    direction TB

    state "Android Studio エミュレータ" as Local {
        direction LR
        Rapid: ローカル完結 (static responses)
        Fast: 最速・ロジック検証
    }

    state "ライセンステスター + 内部テスト" as Internal {
        direction LR
        Console: Play Consoleに商品登録
        Server: Googleサーバー接続
        Free: 実際の決済なしでテスト可
    }

    state "クローズド / オープンテスト" as Closed {
        direction LR
        Final: リリース直前の最終確認
        Group: 特定/不特定多数のユーザー
    }

    state "本番リリース (製品版)" as Prod {
        direction LR
        Live: 全ユーザー公開
        Real: 実際の課金発生
    }

    [*] --> Local : 開発初期・UI/UX確認
    Local --> Internal : aabをアップロード / テスター登録
    Internal --> Closed : テスト範囲の拡大
    Closed --> Prod : 製品版へ昇格
    Prod --> [*]

iOSとの主な違い

項目iOSAndroid
サンドボックスの分離設定の専用欄で完全分離アカウント切り替えが必要でやや複雑
ローカルテストStoreKit Testing(シミュレータOK)エミュレータ+Play Billing Library
テスト用アカウントSandboxテスターアカウントライセンステスター登録
確実性普段使い端末でも安全専用端末 or エミュレータ推奨

⚠️ AndroidはiOSほどアカウントの分離構造がきれいではないため、専用端末またはAndroid Studioエミュレータの使用が安全。

1. Android Studioエミュレータによるテスト

概要

Android Studio上のエミュレータでGoogleサーバーに接続せずIAPをテストできる仕組み。実装の初期段階に最適。

メリット

  • Google Play Consoleへの商品登録が不要 → 実装の最初の段階から使える
  • 実機不要
  • ネット環境不要
  • 購入失敗・ネットワークエラーなど再現しにくいシナリオを強制的に起こせる

セットアップ手順

1. Android Studio → AVD Manager で仮想デバイスを作成(Google Playストア対応イメージを選択)
2. Play Billing Library をアプリに追加

// build.gradle dependencies { implementation ‘com.android.billingclient:billing:7.x.x’ }

// build.gradle
dependencies {
implementation 'com.android.billingclient:billing:7.x.x'
}

3. テスト用のSkuDetailsをローカルで定義して動作確認

テスト用レスポンスの制御

BillingClientのテストでは以下のレスポンスコードを任意に返せる:

レスポンスコード内容
BillingResponseCode.OK購入成功
BillingResponseCode.USER_CANCELEDユーザーキャンセ
BillingResponseCode.BILLING_UNAVAILABLE課金機能利用不可
BillingResponseCode.ITEM_ALREADY_OWNED購入済み
BillingResponseCode.ITEM_NOT_OWNED未購入(復元時)

2. ライセンステスター+内部テストトラック(実機)

概要

Google Playが提供するSandbox環境を使い、実機でIAPをテストする方法。実際の購入操作を行っても課金は発生しない。

事前準備(1回だけ)

Step 1:アプリをGoogle Play Consoleにアップロード

AndroidはiOSのXcode Runと異なり、ライセンステストを使うために少なくとも一度Google Play Consoleにビルドをアップロードする必要がある

graph TD
    subgraph Local_PC ["Android Studio (ローカル)"]
        A[Android Studio] --> B{Build メニュー}
        B --> C[Generate Signed Bundle / APK]
        C --> D[Android App Bundle 'AAB' を選択]
        D --> E[KeyStore / 署名鍵の入力]
        E --> F[AABファイルの生成完了]
    end

    F -- "ブラウザでアップロード" --> G

    subgraph Google_Play_Console ["Google Play Console (クラウド)"]
        G[内部テスト / Internal Testing] --> H[新しいリリースを作成]
        H --> I[AABファイルをアップロード]
        I --> J[リリースノートの入力]
        J --> K[リリースの確認と保存]
        K --> L[内部テストとして公開]
    end

    style F fill:#f96,stroke:#333,stroke-width:2px
    style L fill:#00c853,stroke:#333,stroke-width:2px

Step 2:ライセンステスターを登録

Google Play Console
→ 設定(左メニュー)
→ ライセンステスト
→ テスターのGoogleアカウントを追加

✅ 自分のGoogleアカウントをここに追加すれば、購入操作をしても実費ゼロ。

Step 3:内部テストトラックにテスターを追加

Google Play Console
→ 内部テスト
→ テスター → リストを作成 → メールアドレスを追加
→ テスターへの招待リンクを発行

Step 4:実機でテスト用ビルドをインストール

1. テスター招待リンクをブラウザで開く
2. 「テスターになる」をタップ
3. Google Playからアプリをインストール

テスト手順

1. テスト用ビルドをGoogle Playからインストール
2. アプリ内で「購入」ボタンをタップ
3. Googleの標準購入ダイアログが表示される
4. 「テスト注文」と表示されることを確認 ← Sandbox環境の証拠
5. 購入完了(実費ゼロ)

サブスクリプションの更新間隔(Sandbox)

実際の期間Sandboxでの短縮期間
1週間5分
1ヶ月5分
3ヶ月10分
6ヶ月15分
1年30分

アカウントの注意点

状況推奨対応
普段使い端末でテストしたいライセンステスターに普段使いのGoogleアカウントを登録
より確実にしたい専用のGoogleアカウントを作成して専用端末に設定
本番購入との混在を避けたい専用端末を用意するのが最も安全

⚠️ AndroidはPlay Storeのデフォルトアカウントによって挙動が変わることがある。複数アカウントを使う場合はデフォルトアカウントがライセンステスター登録済みのアカウントになっているかを確認。

よくある躓きポイント

症状原因対処
「テスト注文」が表示されず本番になるライセンステスター未登録 or デフォルトアカウントが別Play ConsoleでGoogleアカウント登録を確認
購入ダイアログが出ない内部テストトラックからインストールしていない招待リンク経由でインストールし直す
商品が見つからないエラーPlay Consoleでの商品設定が未完了Play Console → 収益化 → 商品を有効化
購入後に権限が付与されないレシート検証のバックエンド処理の問題Google Play Developer APIのレスポンスを確認

3. Google Play Consoleのテストトラック

トラックの種類

トラック対象人数上限Play審査用途
内部テスト招待制100名不要(数分で反映)開発者・QA向け
クローズドテスト(アルファ)招待制無制限必要限定ベータ
オープンテスト(ベータ)公開無制限必要広範なベータ
製品版全ユーザー無制限必要本番リリース

自分1人でテストする場合は内部テストトラックのみでOK。

iOSのTestFlightとの対応関係

iOSAndroid備考
TestFlight(内部テスター)内部テストトラック審査不要・即時反映
TestFlight(外部テスター)クローズドテスト初回審査あり
App Store本番製品版本番リリース

環境別まとめ

フェーズ推奨環境理由
IAP実装の初期開発Android StudioエミュレータPlay Console登録前でも開発できる
実機での動作確認ライセンステスター+内部テストトラック実際の購入フロー確認
リリース直前の最終確認内部テストトラック(クローズドテスト)本番に最も近い環境

最小構成(個人開発)

  • Android Studioエミュレータで実装初期の動作確認
  • 自分のGoogleアカウントをライセンステスター登録 → 普段使い端末でもSandboxテスト可能
  • ただし確実性を求めるなら旧Androidスマホ1台を専用テスト機として確保するのが理想

iOS試験手順との比較まとめ

項目iOSAndroid
ローカルテストStoreKit Testing(Xcode)Play Billing Library(Android Studio)
テスト用アカウント設定箇所設定 → App Store → SandboxアカウントPlay Console → ライセンステスト
普段使い端末での安全性◎(完全分離)△(デフォルトアカウント依存)
初回アップロードの要否不要(Xcode RunでOK)必要(Play Consoleへの登録が前提)
ベータ配布ツールTestFlight内部テストトラック
サブスク短縮間隔1ヶ月→5分1ヶ月→5分(同じ)
← ITQ Lab トップに戻る