---
title: "12ヶ月コミットメントプランの設定"
description: "App Store ConnectとAdaptyで月次サブスクリプションに12ヶ月のコミットメントを設定し、カスタムペイウォールに追加してサンドボックスでテストする方法を説明します。"
---

> **AI agents**: to search Adapty docs faster and with fewer tokens, install the Adapty skills: `npx adapty skills install --yes`

:::important
コミットメントプランを提供するには、年間App Storeサブスクリプション、[カスタムペイウォール](paywalls)、およびAdapty SDK v4.3以降が必要です。フローではこのプランを表示できません。
:::

年間プロダクトに[12ヶ月コミットメントプラン](app-store-12-month-commitment)を追加することで、サブスクライバーに年間サブスクリプションを月払いで契約させることができます。設定はApp Store ConnectとAdaptyの両方で行います。

## 始める前に \{#before-you-begin\}

コミットメントプランを実装する前に、以下を確認してください。

- **適切な市場をターゲットにする**: コミットメントプランはアメリカでは利用できません。ドイツ、イスラエル、南アフリカ、トルコでは、サブスクライバーはApple Supportを通じて即時解約できます。
- **適切なOSバージョンをターゲットにする**: サブスクライバーにはiOS 26.4以降、またはiPadOS、macOS、tvOS、visionOSの同等バージョンが必要です。Xcode 26.5以降でアプリをビルドしてください。
- **適切な価格帯をターゲットにする**: 12回の月額支払いの合計額は、年間一括サブスクリプションの1倍から1.5倍の範囲である必要があります。
- **Adapty SDK v4.3以降を使用する**: それより古いSDKのアプリバージョンでは、ユーザーは一括プランのみ購入できます。
- **プロダクトIDを読み取るコードを更新する**: Webhook、インテグレーション、データエクスポート、サーバーサイドAPIは、コミットメントプランの購入を`<product_id>:monthly`として報告します。プロダクトIDを処理するコードがある場合は、最初のコミットメントプランの購入が発生する前にロジックを更新してください。

## App Store Connect の設定 \{#1-app-store-connect-configuration\}

1. App Store Connectで年間サブスクリプションを開くか、**1 Year**の期間で[新しいサブスクリプションを作成](app-store-products)します。
2. **Availability**セクションで、**1 Year Upfront**と**Monthly with 12-Month Commitment**に同じ国を追加します。Appleは、一括請求が利用可能な国でのみコミットメント請求を提供しています。逆は必須ではありません。つまり、コミットメントプランのない国で一括プランを提供することは可能です。
3. **Subscription Prices**セクションで、まだ設定されていない場合は、基本テリトリーの一括価格を設定します。コミットメントプランのみをユーザーに表示する場合でも、Appleは一括価格を必須としています。
4. 基本テリトリーの月額価格を設定します。月額価格は一括価格の1/12〜1/8の範囲内である必要があります。例えば、一括価格が€59.99の場合、月額価格は€5.00〜€7.49が設定可能です。

App Store Connect は、基準地域の価格をもとに他の国の価格を自動計算します。

詳しい手順については、Apple の[12ヶ月コミットメント付き月次サブスクリプションの提供](https://developer.apple.com/help/app-store-connect/manage-subscriptions/set-availability-for-an-auto-renewable-subscription#offer-monthly-subscriptions-with-12-month-commitment)ガイドをご覧ください。

## 2. Adaptyの設定 \{#2-adapty-configuration\}

カスタムペイウォールにコミットメントプランを表示するには、Adaptyで年間プロダクトに対してこの機能を有効にしてください。カスタムペイウォールを使用していない場合は、この手順をスキップできます。

1. 年間プロダクトを開きます。まだ存在しない場合は、App Store Connectで設定したサブスクリプションを[作成して接続](create-product#create-product-and-connect-existing-store-products)してください。Adaptyから新しいプロダクトをプッシュしないでください。コミットメントプランのない別のサブスクリプションが作成されてしまいます。
2. **App Store** タブを開き、**Offer monthly payments with a 12-month commitment** を選択します。

3. ポップアップで、**Monthly price, USD** リストから App Store Connect に合わせた分割払い価格を選択します。リストには許可された範囲内の App Store の価格ポイントのみが表示されます。この価格は参照値であり、Adapty が App Store Connect に送信することはありません。

## 3. オファーの設定 \{#3-set-up-offers\}

App Store Connect では、各請求プランにそれぞれ独自の初回オファー、プロモーションオファー、ウィンバックオファー、オファーコードがあります。アップフロントプランのオファーはコミットメントプランには適用されません。

- **無料トライアルとその他の初回オファー**: App Store Connect でコミットメントプランのオファーを設定します。Adapty は[初回オファー](app-store-offers#introductory-offers)を自動的に適用します。初回オファーが終了すると、サブスクライバーの12ヶ月コミットメントが開始されます。
- **プロモーションオファーとウィンバックオファー**: App Store Connect でコミットメントプランの[プロモーションオファー](app-store-offers#promotional-offers)または[ウィンバックオファー](app-store-offers#win-back-offers)を設定します。次に[Adapty にオファーを追加](create-offer)し、**App Store plan** を **Monthly with 12-month commitment** に設定します。ペイウォールの行には、その請求プランに対応するオファーのみが表示されます。カスタムペイウォールを使用しない場合は、Adapty にオファーを追加する必要はありません。
- **オファーコード**: App Store Connect でコミットメントプランのオファーコードを設定します。

## 4. カスタムペイウォールへの追加 \{#4-add-to-a-custom-paywall\}

:::warning
Appleは購入前に分割払い価格と年間合計金額の両方を表示することを義務付けています。
:::

1. カスタムペイウォールで、[年間プロダクトを追加し](add-product-to-paywall)、**Billing plan** を **Monthly** に設定します。同じペイウォールで一括払いプランも販売する場合は、**Upfront** の請求プランで年間プロダクトを再度追加してください。
   - 一括払いプランを購入するユーザーに対して（古いSDKバージョンを使用している場合や、コミットメントプランが適用されない場合）代わりに一括払いオファーを提供するには、**Fallback offer** でそれを選択します。
2. アプリ内では、`product.subscriptionPricingTerms` から価格を表示します。コミットメントプランを購入できるユーザーには、Adapty SDKがそのプランの価格を返します。それ以外のユーザーには、SDKが一括払いプランの価格を返します。
   - SDKが返したプランを確認するには、`product.subscriptionPricingTerms?.billingPlan` をチェックします。コミットメントプランの場合は `.monthly`、一括払いプランの場合は `.upFront` となります。
   - 分割払い価格を表示するには、`subscriptionPricingTerms.localizedBillingPrice` と `subscriptionPricingTerms.billingPeriod` を使用します。
   - 年間合計を表示するには、`subscriptionPricingTerms.commitmentInfo.localizedPrice` と `subscriptionPricingTerms.commitmentInfo.period` を使用します。コミットメントプランの場合、`product.localizedPrice` と `product.subscriptionPeriod` も同じ年間値を返します。

ユーザーが以下の場合、コミットメントプランを購入できません：

- **OSバージョンまたは国が非対応**: ユーザーのAppleデバイスが26.4より古いシステムバージョンで動作しているか、そのプランがユーザーのApp Store国では利用できません。Adapty SDKは代わりに前払いプランの価格を返します。
- **既存の前払いサブスクリプション**: StoreKitにより、ユーザーがすでにサブスクリプション済みと判定されました。プランを切り替えるには、サブスクライバーはAppleのサブスクリプション設定を使用します。
- **[プロモーションされたアプリ内課金](making-purchases#in-app-purchases-from-the-app-store)**: ユーザーがApp Storeでプロダクトを選択すると、Adapty SDKがアプリ内での購入を開始します。この場合、SDKは前払いプランのみをサポートします。

コミットメントプランの提供を停止するには、カスタムペイウォールで年間プロダクトの **Billing plan** を **Upfront** に設定するか、**Monthly** の行を削除してください。Adapty では **Offer monthly payments with a 12-month commitment** チェックボックスをオフにすることはできません。既存のサブスクライバーは、App Store Connect で年間サブスクリプションの **Remove Monthly Billing** をクリックしない限り、毎年新しいコミットメントで更新されます。すでにコミットしたサブスクライバーは、コミットメント期間が終了するまで支払いを続けます。

## 5. サンドボックスでプランをテストする \{#5-test-the-plan-in-a-sandbox\}

[サンドボックステストガイド](test-purchases-in-sandbox)に従って、2つのサンドボックスアカウントでテストします。

- **コミットメントプランを提供している国のアカウント**: ペイウォールには、合計金額と並んで月額料金付きのコミットメントプランが表示されます。購入後、サンドボックスユーザーのプロファイルには年間プロダクトのアクセスレベルが付与されます。
- **USアカウント**: ペイウォールには前払いプランのみが表示されます。

ウェブフックまたはServer-side APIからプロダクトIDを処理するコードがある場合は、コミットメントプランの購入が `<product_id>:monthly` として受信されることを確認してください。

購入ロジックをローカルでテストするには、[Xcode の StoreKit Testing](local-sk-files) 26.5 以降を使用してください。StoreKit Testing での購入は Adapty には届きません。

## トラブルシューティング \{#troubleshooting\}

- **月払いのチェックボックスが表示されない**: **Offer monthly payments with a 12-month commitment** チェックボックスは、App StoreプロダクトIDを持つ **Annual** プロダクトにのみ表示されます。プロダクトに **Price (USD)** が設定されるまでは無効のままです。
- **コミットメントプランで無料トライアルや他のオファーがユーザーに表示されない**: App Store Connectでは、各オファーは1つの料金プランに紐づけられます。コミットメントプランに[オファーを設定](#3-set-up-offers)してください。プロモーションオファーまたはウィンバックオファーの場合は、Adaptyでオファーの **App Store plan** を **Monthly with 12-month commitment** に設定してください。
- **すべてのユーザーに一括払い価格が表示される**: 以下の両方を確認してください：
  - アプリがXcode 26.5以降でビルドされていること。それより古いバージョンのXcodeでは、Adapty SDKは常に一括払いプランの価格を返します。
  - カスタムペイウォールで、年間プロダクトの **Billing plan** が **Monthly** になっていること。
- **一部のユーザーに一括払い価格が表示される**: そのユーザーは[コミットメントプランを購入できません](#4-add-to-a-custom-paywall)。
- **ペイウォールに分割払い価格ではなく年間合計金額が表示される**: コミットメントプランの場合、`product.localizedPrice` は年間合計金額を返します。分割払い価格を表示するには、`subscriptionPricingTerms.localizedBillingPrice` を使用してください。