> ## Documentation Index
> Fetch the complete documentation index at: https://devdocs.xbox.com/llms.txt
> Use this file to discover all available pages before exploring further.

# プレイヤーにアドオン コンテンツへのアクセスを付与する

> エンタイトルメントとライセンス供与を使用してプレイヤーに XBOX のアドオン コンテンツへのアクセスを付与します。耐久型、消費型、バンドル、共有エンタイトルメントを含みます。

多くのタイトルは、Microsoft Store やゲーム内ストアフロントで購入できるアドオン コンテンツを提供しています。エンタイトルメントとライセンス供与は、プレイヤーにゲーム内のアドオン コンテンツへのアクセスを許可すべきかを判断するのに役立つ 2 つのシステムです。使用するアプローチは、コンテンツの種類 (耐久型、消費型、バンドルなど) とゲームの設計によって異なります。サービスから消費型のエンタイトルメントを管理する、クライアントを使用して耐久型のライセンスを取得する、またはエンタイトルメントとライセンス供与の両方を組み合わせてゲーム内のコンテンツ アクセスを制御するといった方法があります。

## エンタイトルメント

エンタイトルメントは、ゲーム、サブスクリプション、アドオンなどのデジタル製品にアクセスして使用する顧客の権利を表します。Microsoft Store で行われるすべての購入や引き換えは、Microsoft の collections サービスで追跡される 1 つ以上のエンタイトルメントとなります。エンタイトルメントで機能する製品タイプの詳細については、[適切な製品タイプを選択する](/publishing/xstore-commerce/xstore-choosing-product-type)を参照してください。

製品のエンタイトルメントは、プレイヤーが製品を直接購入する、満足させる製品 (バンドルやサブスクリプションなど) を購入する、または別のユーザーから共有されたエンタイトルメントを通じて付与されます。エンタイトルメントは、アクティブ、非アクティブ、期限切れ、取り消し済みなど、複数の状態をサポートします。

ゲーム クライアントとサービスはプレイヤーのエンタイトルメントを照会できますが、結果は異なる場合があります。

* クライアント API はアクティブな状態のエンタイトルメントのみを返せますが、すべてのエンタイトルメントの種類 (直接、共有、満足) を返すことができます。ただし、エンタイトルメントの種類はクライアントには表示されません。
* サービス API は任意の状態のエンタイトルメントを返せますが、デバイス コンテキストがないため共有エンタイトルメントを返せません。ただし、直接エンタイトルメントと満足エンタイトルメントを区別できます。

### エンタイトルメントの共有とオフライン可用性

* 製品を所有するアカウントが現在のデバイスをオフライン デバイスに指定した場合 (コンソールの **Home XBOX** または PC の **オフライン権限** を使用)、デバイス上の他のアカウントと消費型以外のエンタイトルメントを共有します。
* 消費型のエンタイトルメントは、購入したアカウントに紐付けられた直接エンタイトルメントであり、デバイス上の他のアカウントと共有できません。
* すべてのエンタイトルメント クエリにはオンライン接続が必要です。オフライン時にプレイヤーのアクセス権を判断するためにエンタイトルメントを使用しないでください。代わりに[ライセンス供与](#licensing)を使用してください。

### ゲーム クライアントでのエンタイトルメントの使用

クライアントがカタログ要求を送信するたびに、返される各 [XStoreProduct](/reference/system/xstore/xstore_members) の `IsInUserCollection` プロパティを設定するために、collections サービスへの対応する呼び出しを送信します。`IsInUserCollection` が true の場合、プレイヤーに製品を使用する権利があることを示します。ゲーム内ストアフロントで購入可能として表示するか、プレイヤーが既に「所有」しているとして表示するかを決定するときにこの値を使用してください。

アドオン コンテンツの XStoreProduct の詳細は、次の方法で取得できます。

* [XStoreQueryAssociatedProductsAsync](/reference/system/xstore/xstore_members) / [Result](/reference/system/xstore/xstore_members) - 購入可能な製品のみを返します。結果には、非表示の製品、バンドルでのみ利用可能な製品、または Microsoft Store で購入できなくなった製品は含まれません。
* [XStoreQueryProductsAsync](/reference/system/xstore/xstore_members) / [Result](/reference/system/xstore/xstore_members) - 特定の製品を照会するために使用します。この関数を使用して、単一の製品または製品のサブセットに対するエンタイトルメントの変更を確認します。

Microsoft Store で非表示または購入できなくなった製品を含む、すべてのアクティブなエンタイトルメントを collections サービスに照会するには、次を呼び出します。

* [XStoreQueryEntitledProductsAsync](/reference/system/xstore/xstore_members) / [Result](/reference/system/xstore/xstore_members)

プレイヤーがゲームから離れている間に新しいコンテンツを取得することがあるため、ゲームがフォーカスを取り戻したとき (PC) または制約状態から復帰したとき (コンソール) にエンタイトルメントの変更を確認することをお勧めします。アドオン コンテンツが外部のストアフロント (Microsoft Store、XBOX App、xbox.com) で購入可能な場合、クライアントが検出できない別のデバイスで購入が発生することがあります。

プレイヤーが Store またはインベントリ メニューにアクセスするときなど、ゲーム内の戦略的なポイントで新しいエンタイトルメントを確認してください。また、プレイヤーが製品を購入してからゲーム内でコンテンツが利用可能になるまでの遅延を減らすために、タイトルがときどき更新をポーリングすることもできます。

クライアントから製品とエンタイトルメントを照会する方法の詳細については、[基本的な Store 操作](/publishing/xstore-commerce/xstore-basic-operations)を参照してください。

### ゲーム サービスでのエンタイトルメントの使用

ゲーム サービスを使用するときは、エンタイトルメントを照会および管理するためのより高度なオプションが利用できます。可能な内容の一例:

* 発行元カタログ全体にわたるユーザーのエンタイトルメントを照会します。
* 直接エンタイトルメントと満足エンタイトルメントを区別して、プレイヤーがどのようにコンテンツを取得したかをより深く理解します。
* 将来の開始日を持つ非アクティブなエンタイトルメントを照会して、まだ予約購入状態の購入を検出します。
* 堅牢でクロスプラットフォームな消費型エコシステムを管理します ([消費型ベースのエコシステム](/publishing/xstore-commerce/xstore-consumables)を参照)。
* Clawback サービスを使用して製品の返金を検出します ([サービスから返金とチャージバックを管理する](/publishing/xstore-commerce/xstore-managing-refunds)を参照)。
* XBOX Game Pass サブスクリプションの状態を検出して、ゲーム内でサブスクライバーに特典を付与します ([サービスから XBOX Game Pass サブスクリプションのアクセスを検出する](/publishing/xstore-commerce/xstore-detecting-game-pass)を参照)。

サービス間の提供内容の詳細については、[サービスから製品を管理する](/publishing/xstore-commerce/xstore-authenticating-service)を参照してください。

### エンタイトルメントに関する考慮事項

* PC 上の開発者サンドボックスで操作する場合、クライアントは XBOX App にサインインしているアカウントの代わりにすべてのエンタイトルメント クエリを行います。
* PC 上の RETAIL で操作する場合、クライアントは Microsoft Store にサインインしているアカウントの代わりにすべてのエンタイトルメント クエリを行います。ゲームにサインインしているアカウントが Microsoft Store にサインインしているアカウントと一致しない場合、アカウントの不一致シナリオが発生することがあります (詳細については、[Store アカウントの不一致を処理する](/publishing/xstore-commerce/xstore-mismatched-accounts)を参照してください)。

エンタイトルメントに関する一般的な問題のトラブルシューティングについては、[XStore 開発のトラブルシューティング](/publishing/xstore-commerce/xstore-troubleshooting)を参照してください。

## ライセンス供与

ライセンスは、デバイス上でコンテンツにアクセスするユーザーの権利を確認するデジタル キーです。ライセンスを取得する前に、ユーザーが製品を使用する権利を持つか、製品を含むディスク (パッケージを含むゲームおよび耐久型) を挿入する必要があります。

耐久型 (パッケージの有無を問わず) を扱う際は、共有、並行性、およびオフライン可用性に関する期待に合わせるためにライセンス供与を使用してください ([ゲームの製品共有モデル](/publishing/xstore-commerce/xstore-product-sharing)を参照)。

ライセンスは、ゲームが使用するライセンス モデルに応じたデバイスの制限と並行性チェックの対象となります ([オープン ライセンスと制限的ライセンス](/publishing/xstore-commerce/xstore-open-restrictive-licensing)を参照)。プレイヤーに製品のアクティブなエンタイトルメントがあっても、デバイスで使用する有効なライセンスを取得できないことがあります。

### ライセンス共有とオフライン可用性

次の条件のいずれかが true の場合、デバイスでライセンス共有が発生します。

* 所有者のアカウントがサインインしていてオンライン接続が確立されている状態で、ゲームがライセンスを取得した。
* ゲームが所有者のアカウントのオフライン ライセンス (コンソールの **Home XBOX** または PC の **オフライン権限** としてオフライン デバイスに指定) を取得した。このシナリオでは、所有アカウントがデバイスにサインインしていなくても、他のアカウントとライセンスを共有できます。
* プレイヤーが DLC (パッケージを含む耐久型) を含むディスクを挿入し、DLC がデバイスにインストールされた。

次の条件のいずれかが true の場合、ライセンスはオフラインで利用可能です。

* 製品を所有するアカウントが現在のデバイスを「オフライン」デバイスに指定する (コンソールの **Home XBOX** または PC の **オフライン権限** を使用)。オフライン指定が有効化された後、ゲームはオンライン中に耐久型製品のライセンスを取得する必要があります。次にゲームを起動したときに、オフライン対応ライセンスを取得します。
* プレイヤーが DLC (パッケージを含む耐久型) を含むディスクを挿入し、DLC がデバイスにインストールされている。

### ゲーム クライアントでのライセンスの使用

次のフローを使用して、耐久型 (パッケージの有無を問わず) をライセンス供与できます。

* [XStoreCanAcquireLicenseForStoreIdAsync](/reference/system/xstore/xstore_members) / [Result](/reference/system/xstore/xstore_members) は、並行性チェックを呼び出さずにライセンスをプレビューします。[XStoreCanLicenseStatus](/reference/system/xstore/xstore_members) が `Licensable` の場合、ゲームは耐久型ライセンスの取得を試みることができます。このプレビュー チェックにはオンライン接続が必要です。
* [XStoreAcquireLicenseForDurablesAsync](/reference/system/xstore/xstore_members) / [Result](/reference/system/xstore/xstore_members) は、デバイスにライセンスがない、または現在のライセンスが期限切れの場合にライセンス供与サービスを呼び出してライセンスを取得します。デバイス上に製品のアクティブなライセンスが既にあるか、この API をオフラインで呼び出した場合は、キャッシュ済みのライセンスが返されます。キャッシュ済みライセンスが返された場合、現在のプレイヤーには有効でない可能性があります。
* ゲーム内のコンテンツをアンロックする前に、常に [XStoreIsLicenseValid](/reference/system/xstore/xstore_members) を呼び出してライセンスが有効かどうかを確認してください。
* 有効なライセンスを取得した場合は、[XStoreRegisterPackageLicenseLost](/reference/system/xstore/xstore_members) を使用してライセンス消失イベントをリッスンします。ライセンスが失われた場合は、ライセンスの再取得を試みてください。ライセンスを再取得できない場合は、いつコンテンツへのプレイヤーのアクセスをブロックするか、しないかを (ゲームの設計に応じて) 決定してください。
* ライセンス消失イベントを処理した後は、[XStoreUnregisterPackageLicenseLost](/reference/system/xstore/xstore_members) を呼び出し、[XStoreCloseLicenseHandle](/reference/system/xstore/xstore_members) を呼び出して古いライセンス ハンドルを解放してください。

XStoreAcquireLicenseForDurablesAsync の使用例については、[パッケージのない耐久型の使用方法](/publishing/xstore-commerce/xstore-dwob)を参照してください。

パッケージを含む耐久型 (DLC) は、ディスク上のゲーム バンドルの一部として含めることができます。ゲームがライセンスを取得する前に、ユーザーはディスクを挿入して DLC をインストールする必要があります。DLC がディスクに含まれる場合、またはゲームが [XPackage](/reference/system/xstore/xstore_members) API を使用してインストール済みパッケージを列挙している場合は、各ライセンス供与 API の \*ForPackage バリアント: [XStoreCanAcquireLicenseForPackageAsync](/reference/system/xstore/xstore_members) / [Result](/reference/system/xstore/xstore_members) および [XStoreAcquireLicenseForPackageAsync](/reference/system/xstore/xstore_members) / [Result](/reference/system/xstore/xstore_members) を使用することをお勧めします。

インストール済みパッケージの列挙と DLC のライセンス供与の例については、[ダウンロード可能なコンテンツ (DLC) の管理とライセンス供与](/publishing/xstore-commerce/xstore-dlc)を参照してください。

### ゲーム サービスでのライセンスの使用

ライセンスはデバイスに紐付けられており、ゲーム サービスから照会することはできません。ただし、クライアントは [XStoreQueryLicenseTokenAsync](/reference/system/xstore/xstore_members) / [Result](/reference/system/xstore/xstore_members) を呼び出して、ゲーム サービスを使用して追加の検証を提供できます。詳細については、[ライセンス トークンの使用](/publishing/xstore-commerce/xstore-license-tokens)を参照してください。

### ライセンス供与に関する考慮事項

* 購入が完了してから新しいライセンスを取得できるまでに遅延がある場合があります。ユーザーの[エンタイトルメント](#entitlements)への変更を確認し、耐久型製品の新しいエンタイトルメントが追加された後にライセンスを取得してください。
* サイドロードされたパッケージを展開する場合、パッケージを含む耐久型のテスト ライセンスは自動的に付与されます。パッケージを含む耐久型のライセンス供与シナリオをテストするには、代わりにライセンスの上書き、または Store からインストールされたパッケージを使用してください。詳細については、[ライセンス テストの有効化](/publishing/xstore-commerce/xstore-licensing-setup)を参照してください。
* ゲームが耐久型ライセンスを取得すると、ライセンスはデバイス上にキャッシュされます。ライセンスは、システムがライセンスの更新をトリガーするまでキャッシュから取得されます (更新を強制する API はありません)。XStoreAcquireLicense\* の繰り返し呼び出しはデバイスのキャッシュを確認し、サービスは確認しません。
* ライセンス消失コールバックは、現在のプレイヤーに別のアカウントに属するキャッシュ済みライセンスがシステムから誤って返された場合の検出に役立ちます。そのような場合、ライセンス消失イベントが直ちに発生し、XStoreAcquireLicense\* が再度呼び出されると、新しいライセンスが提供されます。
* ライセンス共有とキャッシュにより、テスト マシンがクリーンでない状態になることがあります。詳細については、[XStore 開発のトラブルシューティング](/publishing/xstore-commerce/xstore-troubleshooting)を参照してください。

## サンプル リソース

プレイヤーのエンタイトルメントを照会し、耐久型ライセンスを取得する方法を示すサンプル コードについては、次のリソースを参照してください。

* [InGameStore サンプル (GitHub)](https://github.com/microsoft/Xbox-GDK-Samples/tree/main/Samples/Live/InGameStore): 製品の取得、購入、エンタイトルメント、耐久型のライセンス供与など、XStore の機能を示す C++ サンプル。
* [DownloadableContent サンプル (GitHub)](https://github.com/microsoft/Xbox-GDK-Samples/tree/main/Samples/Live/DownloadableContent): パッケージ化された耐久型の列挙とライセンス供与など、XStore と XPackage の機能を示す C++ サンプル。
* [UnityInGameStore サンプル (GitHub)](https://github.com/microsoft/Xbox-GDK-Samples/tree/main/Samples/Unity/Live/UnityInGameStore): Unity ゲーム エンジンと Microsoft GDK API パッケージを使用して XStore の機能を示す C# サンプル。

## リファレンス API ドキュメント

* [XStore (API の内容)](/reference/system/xstore/xstore_members)
  * 関数
    * [XStoreQueryAssociatedProductsAsync](/reference/system/xstore/xstore_members)
    * [Result](/reference/system/xstore/xstore_members)
    * [XStoreQueryProductsAsync](/reference/system/xstore/xstore_members)
    * [Result](/reference/system/xstore/xstore_members)
    * [XStoreQueryEntitledProductsAsync](/reference/system/xstore/xstore_members)
    * [Result](/reference/system/xstore/xstore_members)
    * [XStoreCanAcquireLicenseForStoreIdAsync](/reference/system/xstore/xstore_members)
    * [Result](/reference/system/xstore/xstore_members)
    * [XStoreAcquireLicenseForDurablesAsync](/reference/system/xstore/xstore_members)
    * [Result](/reference/system/xstore/xstore_members)
    * [XStoreIsLicenseValid](/reference/system/xstore/xstore_members)
    * [XStoreRegisterPackageLicenseLost](/reference/system/xstore/xstore_members)
    * [XStoreUnregisterPackageLicenseLost](/reference/system/xstore/xstore_members)
    * [XStoreCloseLicenseHandle](/reference/system/xstore/xstore_members)
    * [XStoreCanAcquireLicenseForPackageAsync](/reference/system/xstore/xstore_members)
    * [Result](/reference/system/xstore/xstore_members)
    * [XStoreAcquireLicenseForPackageAsync](/reference/system/xstore/xstore_members)
    * [Result](/reference/system/xstore/xstore_members)
    * [XStoreQueryLicenseTokenAsync](/reference/system/xstore/xstore_members)
    * [Result](/reference/system/xstore/xstore_members)
  * 構造体
    * [XStoreProduct](/reference/system/xstore/xstore_members)
* [XPackage (API の内容)](/reference/system/xstore/xstore_members)

## 関連項目

[コマースの概要](/publishing/xstore-commerce/xstore-commerce-overview)<br />[XStore API リファレンス](/reference/system/xstore/xstore_members)


## Related topics

- [XStore 開発のトラブルシューティング](/ja-jp/publishing/xstore-commerce/xstore-troubleshooting.md)
- [XStoreIsLicenseValid](/ja-jp/reference/system/xstore/functions/xstoreislicensevalid.md)
- [XStoreQueryProductsResult](/ja-jp/reference/system/xstore/functions/xstorequeryproductsresult.md)
- [XStoreQueryAssociatedProductsResult](/ja-jp/reference/system/xstore/functions/xstorequeryassociatedproductsresult.md)
- [XStoreUnregisterPackageLicenseLost](/ja-jp/reference/system/xstore/functions/xstoreunregisterpackagelicenselost.md)
