バッチャンネル

  • ホーム
  • 記事一覧
  • タグ一覧
  • 検索
  • お問い合わせ
てばのプロフィール画像

てば

Webエンジニア・個人開発者 ⚙️
【経歴】文系大▶21卒Web系エンジニア兼PJM👨‍💻
Web開発、個人開発、日常の気づきなどを書いています。

XnRSS
てばのプロフィール

最近の投稿

【書評】西野亮廣『北極星 僕たちはどう働くか』30歳手前に現実を突きつけられた話

2026-04-11

よく使うClaude Codeスキルまとめ - おすすめスキル設定集

2026-04-07

『具体と抽象』の書評【議論がかみ合わない原因はコレだった】

2026-03-15

『仮説思考』の書評【答えから考える問題解決のコツを3つ紹介】

2026-03-07

『ユーザビリティエンジニアリング』の書評【ユーザー視点が身につく実践書】

2026-02-21

タグ

プログラミング (29)書評 (18)レビュー (14)ビジネス書 (12)キャリア (8)大学 (7)ブログ (7)大学生 (6)就活 (5)文系 (5)テックアカデミー (4)学習方法 (4)アート (4)開発ツール (3)ガジェット (3)デプロイ (3)ライフ (3)Webエンジニア (3)ラジオ (3)就職活動 (3)WordPress (3)Claude (2)環境構築 (2)ポートフォリオ (2)Netlify (2)Web開発 (2)GitHub (2)Vue.js (2)JavaScript (2)ノーコード (2)活動報告 (2)分析 (2)Laravel (2)小説 (2)スキル (1)AI (1)UXデザイン (1)iOS開発 (1)アプリ開発 (1)サブスクリプション (1)Apple (1)MCP (1)設定 (1)Mac (1)テスト (1)Markdown (1)プロフィール (1)自己紹介 (1)経歴 (1)Next.js (1)CI/CD (1)コマンド (1)CMS (1)Contentful (1)JAMstack (1)Udemy (1)MAMP (1)Electron (1)個人開発 (1)Webサービス (1)アイデア (1)Radiotalk (1)音声配信 (1)プログラミングスクール (1)PHP (1)Git (1)Heroku (1)MySQL (1)お笑い (1)

バッチャンネル

Xn
プライバシーポリシーお問い合わせサイトマップRSS

当サイトはアフィリエイト広告を利用しています

© 2026 バッチャンネル

  1. ホーム
  2. ブログ
  3. iOSアプリのサブスク検証にはサンドボックスアカウントを使おう!【完全ガイド】

iOSアプリのサブスク検証にはサンドボックスアカウントを使おう!【完全ガイド】

2025-11-09
iOS開発アプリ開発サブスクリプションApple

iOSアプリ開発でサブスクリプション機能を検証する際に必須のサンドボックスアカウント作成方法と使い方を、実際の開発現場で使える形で詳しく解説します。

※当記事にはアフィリエイトリンクが含まれる場合があります。

💭 iOSアプリのサブスクリプションを検証したいけど、自分のApple IDで課金するのは避けたい...

そんな方向けの記事になっています。

▼記事の内容

  • サンドボックスアカウントとは何か
  • サンドボックスアカウントの作成方法
  • 利用規約への同意手順(重要)
  • 実際の検証方法と注意点
  • よくあるトラブルと解決法

iOSアプリでサブスクリプション機能を実装する際、本番のApple IDで課金テストをすることは絶対に避けるべきです。そのために用意されているのが「サンドボックスアカウント」という検証専用のアカウントです。

実際にアプリを開発して気づいたんですが、この手順を知らないと本番アカウントでうっかり課金してしまうリスクがあります。この記事でサクッと把握しておいてください。

🤔 サンドボックスアカウントとは

サンドボックスアカウントは、App Store Connectで作成できる検証専用のテストアカウントです。

実際の課金は発生せず、アプリ内課金やサブスクリプションの動作を安全にテストできます。

サンドボックスアカウントの特徴

  • 課金が発生しない(テスト環境専用なので実際のお金は使わない)
  • サブスクリプションの期間が短縮される(例: 1ヶ月 → 5分)
  • 何度でも購入・キャンセル・復元のテストができる
  • 本番のApp Storeには影響しない

なぜ必要なのか?

iOSアプリのサブスクリプション機能を実装する際、以下のような検証が必要になります。

  • サブスクリプションの購入フロー
  • 購読状態の確認
  • 自動更新の動作
  • サブスクリプションのキャンセル
  • 購入の復元機能

これらを自分のメインのApple IDでテストするのは危険です。誤って課金してしまったり、テストデータが本番アカウントに残ってしまう可能性があります。

📋 サンドボックスアカウントの作成方法

STEP1: App Store Connectにアクセス

  1. App Store Connectにアクセス
  2. デベロッパーアカウントでログイン

STEP2: サンドボックステスターの作成

Webブラウザから作成

  1. App Store Connectのトップページで「ユーザーとアクセス」をクリック
  2. 上部タブから「Sandbox」を選択
  3. 「+」ボタンまたは「テスターを追加」をクリック
  4. 以下の情報を入力します

入力項目は以下の通りです:

  • メールアドレス(実在しなくてOK。例: test-sandbox@example.com)
  • パスワード(8文字以上、英数字と記号を含む)
  • 名・姓(テスト用の適当な名前でOK)
  • 国または地域(日本、またはテストしたい地域)
  1. 「保存」をクリック

STEP3: 作成完了の確認

サンドボックステスターの一覧に、作成したアカウントが表示されていればOKです。

メールアドレスは実在しなくて大丈夫ですが、後で使うので覚えやすいものにしておくのがおすすめです。パスワードも必ずメモしておいてください。

✅ 利用規約への同意(超重要!)

サンドボックスアカウントを作成しただけでは使えません。利用規約への同意が必要です。

この手順を忘れると、アプリ内課金のテスト時に「このApple IDはまだApp Storeで使用されたことがありません」というエラーが出ます。

STEP1: Apple IDサイトでログイン

  1. ブラウザで https://account.apple.com/ にアクセス
  2. 作成したサンドボックスアカウントのメールアドレスとパスワードでログイン
  3. 利用規約が表示されるので、すべて同意してください

必ずサンドボックスアカウントでログインしてください。メインのApple IDでログインしないように注意。

STEP2: iCloud.comでも同意

続いて、iCloud.comでも利用規約に同意します。

  1. ブラウザで https://www.icloud.com/ にアクセス
  2. サンドボックスアカウントでログイン
  3. ここでも利用規約が表示されるので、同意してください

これで、サンドボックスアカウントの準備が完了しました。

なぜ2箇所で同意が必要なのか?

Apple IDとiCloudは密接に連携しており、それぞれで利用規約への同意が必要になります。両方で同意しないと、アプリ内課金のテスト時にエラーが発生する可能性があります。

🧪 実際の検証方法

サンドボックスアカウントの準備ができたら、実際にアプリで検証してみましょう。

事前準備: デバイスからサインアウト

重要: テストを開始する前に、iOSデバイスのApp Storeから一度サインアウトしてください。

  1. iOSデバイスの「設定」アプリを開く
  2. 一番上の自分の名前をタップ
  3. 「メディアと購入」をタップ
  4. 「サインアウト」をタップ

注意: ここではApp Storeからのみサインアウトします。iCloudからサインアウトする必要はありません。

テスト手順

STEP1: アプリをビルドして実機にインストール

開発中のアプリを実機にインストールします。

Xcode 12以降はStoreKit設定ファイル(.storekit)でシミュレータでも基本テストができますが、最終確認は実機でやるのが無難です。ビルド方法はフレームワーク(ネイティブiOS、React Native、Flutterなど)によって変わります。

STEP2: サンドボックスアカウントでサインイン

アプリを起動し、サブスクリプション購入画面に移動します。プランを選択して「購入」をタップすると、Apple IDのサインイン画面が表示されます。

ここで作成したサンドボックスアカウントのメールアドレスとパスワードを入力してください。メインのApple IDでサインインしないこと、また「設定」アプリから事前にサインインするのではなく、購入時にその場でサインインするのがポイントです。

STEP3: 購入フローの確認

サインインすると、購入確認ダイアログが表示されます。

  • 「環境: Sandbox」という表示があることを確認
  • 「購入」をタップ
  • 実際の課金は発生しません

STEP4: 購入完了を確認

アプリ側で購入完了の処理が実行されることを確認します。

  • 購読状態が「有効」になっているか
  • プレミアム機能が使えるようになっているか
  • レシート検証が正しく動作しているか

⏱️ サンドボックス環境の期間短縮

サンドボックス環境では、サブスクリプションの期間が大幅に短縮されます。

本番環境サンドボックス環境
1週間3分
1ヶ月5分
2ヶ月10分
3ヶ月15分
6ヶ月30分
1年1時間

5分待つだけで自動更新・期限切れ・再購読の動作を一通り確認できます。

なお、サンドボックスでは最大6回まで自動更新され、それ以降は自動的にキャンセルされます。

⚠️ よくあるトラブルと解決法

エラー1: 「このApple IDはまだApp Storeで使用されたことがありません」

利用規約に同意していないのが原因です。

  1. https://account.apple.com/ でサンドボックスアカウントでログイン
  2. https://www.icloud.com/ でもログインして利用規約に同意
  3. デバイスを再起動して再テスト

エラー2: 購入ができない・エラーが出る

メインのApple IDでサインインしている場合は「設定」→「App Store」からサインアウトして、購入時のダイアログでサンドボックスアカウントを入力してください。

サブスクリプション商品IDの設定ミスの可能性もあります:

  1. App Store Connectでサブスクリプション商品を確認
  2. XcodeのプロダクトIDと一致しているか確認
  3. 商品のステータスが「Ready to Submit」または「承認済み」になっているか確認

エラー3: 「Cannot connect to iTunes Store」

ネットワークか接続の問題です。

  1. Wi-Fi接続を確認(モバイルデータではなくWi-Fi推奨)
  2. デバイスを再起動
  3. Appleのシステム状況ページで障害がないか確認

エラー4: レシート検証が失敗する

サンドボックス環境用の検証URLを使っていないのが原因です。

解決法

レシート検証では、環境に応じて異なるURLを使用する必要があります。

// 本番環境
let productionURL = "https://buy.itunes.apple.com/verifyReceipt"

// サンドボックス環境
let sandboxURL = "https://sandbox.itunes.apple.com/verifyReceipt"

推奨実装: まず本番URLで検証を試み、ステータスコード21007が返ってきたらサンドボックスURLで再試行する方法(StoreKit 1)

func verifyReceipt(receiptData: Data) {
    // まず本番環境で検証
    verifyWithURL(productionURL, receiptData: receiptData) { result in
        if result.status == 21007 {
            // サンドボックス環境のレシートの場合
            verifyWithURL(sandboxURL, receiptData: receiptData) { sandboxResult in
                // サンドボックス環境での検証結果を処理
            }
        }
    }
}

StoreKit 2について

上記のコード例は従来のStoreKit 1に基づくものです。Appleは現在、よりモダンで安全なStoreKit 2の使用を推奨しています。

StoreKit 2は async/await ベースでAPIがシンプルになり、JWS形式のトランザクション情報でサーバー実装も楽になります。新規プロジェクトであればStoreKit 2を使うのが無難です。詳細はApple公式ドキュメントをご確認ください。

🔄 サンドボックスアカウントの管理

複数アカウントの作成

異なる地域や条件でテストしたい場合、複数のサンドボックスアカウントを作成できます。

用途例

  • 日本のユーザー用テストアカウント
  • 米国のユーザー用テストアカウント
  • 異なる価格帯をテストするアカウント

アカウントの削除

不要になったサンドボックスアカウントは削除できます。

  1. App Store Connect → ユーザーとアクセス → Sandbox
  2. 削除したいアカウントを選択
  3. 「削除」をクリック

パスワードのリセット

パスワードを忘れた場合は、App Store Connectから再設定できます。

  1. Sandboxテスター一覧でアカウントを選択
  2. 「パスワードを編集」
  3. 新しいパスワードを入力して保存

💡 開発効率を上げるTips

Tip1: 専用のテストアカウント表を作成

複数のサンドボックスアカウントを管理する場合、スプレッドシートなどで管理すると便利です。

メールアドレスパスワード国/地域用途
test-jp@example.comPass1234!日本通常検証
test-us@example.comPass1234!アメリカ米国価格検証
test-trial@example.comPass1234!日本トライアル検証

Tip2: Xcodeのログで購入フローを確認

Xcodeのコンソールログを確認することで、購入処理の詳細を把握できます。

// StoreKitのトランザクションログを出力
func paymentQueue(_ queue: SKPaymentQueue, updatedTransactions transactions: [SKPaymentTransaction]) {
    for transaction in transactions {
        print("Transaction state: \(transaction.transactionState.rawValue)")
        print("Product ID: \(transaction.payment.productIdentifier)")
    }
}

Tip3: TestFlightでのテスト

App Store Connectの「Sandbox」タブでサンドボックステスターを作成すると、TestFlightでもそのアカウントを使用できます。

より本番に近い環境でサブスクリプションをテストできます。

🎯 まとめ

ハマりやすいのは利用規約への同意を忘れることです。account.apple.comとicloud.comの両方で同意しないと購入時にエラーになります。ここさえ押さえておけば、あとは手順通りに進めるだけです。

サブスクリプション機能はApp Store審査でも確認される箇所なので、リリース前にサンドボックスでしっかり動作確認しておきましょう。

それでは、今回はこの辺で。

📚 参考リンク

  • Testing In-App Purchases - Apple Developer
  • Sandbox testing - App Store Connect Help
  • StoreKit - Apple Developer Documentation
  • Not able login to simulator using the newly created sandbox account - Reddit

最後まで読んでいただきありがとうございました!てば(@basabasa8770)でした!

この記事をシェア

XFacebooknoteLINE
てばのプロフィール画像

てば

Webエンジニア・個人開発者 ⚙️
【経歴】文系大▶21卒Web系エンジニア兼PJM👨‍💻
Web開発、個人開発、日常の気づきなどを書いています。

XnRSS
てばのプロフィール

最近の投稿

【書評】西野亮廣『北極星 僕たちはどう働くか』30歳手前に現実を突きつけられた話

2026-04-11

よく使うClaude Codeスキルまとめ - おすすめスキル設定集

2026-04-07

『具体と抽象』の書評【議論がかみ合わない原因はコレだった】

2026-03-15

『仮説思考』の書評【答えから考える問題解決のコツを3つ紹介】

2026-03-07

『ユーザビリティエンジニアリング』の書評【ユーザー視点が身につく実践書】

2026-02-21

タグ

プログラミング (29)書評 (18)レビュー (14)ビジネス書 (12)キャリア (8)大学 (7)ブログ (7)大学生 (6)就活 (5)文系 (5)テックアカデミー (4)学習方法 (4)アート (4)開発ツール (3)ガジェット (3)デプロイ (3)ライフ (3)Webエンジニア (3)ラジオ (3)就職活動 (3)WordPress (3)Claude (2)環境構築 (2)ポートフォリオ (2)Netlify (2)Web開発 (2)GitHub (2)Vue.js (2)JavaScript (2)ノーコード (2)活動報告 (2)分析 (2)Laravel (2)小説 (2)スキル (1)AI (1)UXデザイン (1)iOS開発 (1)アプリ開発 (1)サブスクリプション (1)Apple (1)MCP (1)設定 (1)Mac (1)テスト (1)Markdown (1)プロフィール (1)自己紹介 (1)経歴 (1)Next.js (1)CI/CD (1)コマンド (1)CMS (1)Contentful (1)JAMstack (1)Udemy (1)MAMP (1)Electron (1)個人開発 (1)Webサービス (1)アイデア (1)Radiotalk (1)音声配信 (1)プログラミングスクール (1)PHP (1)Git (1)Heroku (1)MySQL (1)お笑い (1)