> ## 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 サービス Title Storage の概要

> XBOX サービス Title Storage とは何か、その機能、ストレージ タイプとクォータ、スロットル制限、およびクラウド ゲーム データでサポートされるデータ形式について学習します。

このトピックでは、XBOX サービス Title Storage とは何か、その機能について説明し、それらの構成方法を示します。
XBOX サービス Title Storage サービスは、プレイヤーごとまたはゲームごとの大量のデータのためにクラウド ストレージを提供します。プレイヤー統計やアセットの格納に使用できます。すべての XBOX プラットフォーム上で実行されるゲームで Title Storage を使用できます。

<a name="ID4EW" />

## XBOX サービス Title Storage の機能

XBOX サービス Title Storage には、次のような高レベルの機能が含まれます。

* プレイヤー、タイトル、さまざまなプラットフォーム間で共有できる

* JSON、バイナリ、および構成ファイルをサポートする

<a name="ID4ETB" />

## ストレージの種類

| ストレージ タイプ          | クォータ (Managed Partners) | クォータ (Creators Program) | 目的                                                                         | プラットフォーム                                                                          | プレイヤー             |
| ------------------ | ----------------------- | ----------------------- | -------------------------------------------------------------------------- | --------------------------------------------------------------------------------- | ----------------- |
| Trusted Platform   | プレイヤーあたり 256 MB         | プレイヤーあたり 64 MB          | セーブされたゲームや、プレイ/一時停止/再開のためのゲーム状態など、プレイヤーごとのデータ。セキュリティが高いが、プラットフォームに制限があります。 | すべてのプラットフォームが読み取れますが、書き込めるのは XBOX One ファミリー (以降)、XBOX 360、または Windows Phone のみです。 | 公開または所有者のみに設定可能。  |
| Universal Platform | プレイヤーあたり 64 MB          | プレイヤーあたり 64 MB          | セーブされたゲームや、プレイ/一時停止/再開のためのゲーム状態など、プレイヤーごとのデータ。                             | すべてのプラットフォームが読み取り・書き込みできます。                                                       | 公開または所有者のみに設定可能。  |
| Global             | 256 MB                  | 256 MB                  | 名簿、マップ、チャレンジ、アート リソースなど、すべての人が読み取れるデータ。                                    | XBOX Developer Portal または Partner Center 経由でのみ書き込み可能。すべてのプラットフォームが読み取れます。         | すべてのプレイヤーが読み取れます。 |

## スロットル制限

タイトルが 1 分間に行える読み取りと書き込みの数に制限はありませんが、通常、1 時間セッションあたり平均して 1 分間に 1 回を超えることはできません。たとえば、タイトルはセッションの開始時に 60 回の読み取りまたは書き込みを行うことができますが、その時間の残りの部分ではそれ以上行えません。要求のスロットルが必要になった場合に備えて、タイトルは後で追加の呼び出しを行わないよう堅牢化する必要があります。

<Note>タイトルに追加の読み取りや書き込みなど、特別なパーティション要件がある場合は、Microsoft の担当者にお問い合わせください。</Note>

<a name="ID4ECF" />

## データの種類

このセクションでは、サポートされる 3 種類について説明します。

* [バイナリ情報](#ID4ENF)
* [JSON 情報](#ID4EUF)
* [構成情報](#ID4ECAAC)

<a name="ID4ENF" />

#### バイナリ情報

バイナリ情報には、画像、サウンド、カスタム データなどが含まれます。データは HTTP 経由で送信する必要があるため、バイナリ データは HTTP が受け付ける文字にエンコードする必要があります。たとえば、データを 16 進文字列に変換したり、base64 エンコードを使用したりできます。Title Storage はエンコードされたデータを処理しないため、Title Storage からの読み取りおよび Title Storage への書き込みの際、ゲームはエンコードとデコードで同じ方式を使用する必要があります。

<a name="ID4EUF" />

#### JSON 情報

JSON 情報には、構造化データ (キーと値のペア) が含まれます。JavaScript など、JSON オブジェクトをサポートする言語で JSON オブジェクトを使用できます。JSON ファイルからデータを取得する場合、ゲームは `selectQuery` パラメーターを指定して、構造内の特定のアイテムを返せます。たとえば、次の情報を含む JSON ファイルを使用できます。

```json theme={null}
{
"difficulty" : 1,
"level" :
    [
        { "number" : "1", "quest" : "swords" },
        { "number" : "2", "quest" : "iron" },
        { "number" : "3", "quest" : "gold" },
        { "number" : "4", "quest" : "queen" }
        ],
"weapon" :
    {
            "name" : "poison",
            "timeleft" : "2mins"
    }
}
```

<Note>セキュリティ上の理由から、JSON データの最初の要素は配列であってはなりません。ルートに配列を含む JSON データが送信された場合、サービスによって拒否されます。</Note>

ゲームは JSON 構造の一部を `selectQuery` として選択できます (たとえば、`weapon.name`)。その後、次の内容を受け取ります。

```json theme={null}
{
    "name" : "poison"
}
```

<a name="ID4ECAAC" />

#### 構成情報

構成 blob は、グローバル タイトル ストレージに格納されるデータ構造です。構成 blob の形式は、JSON オブジェクトの形式に似ています。構成 blob には、いくつかの候補の中から設定を返す仮想ノードを含めることができます。仮想ノードは、タイトルやロケールなど、特定の状況に応じた設定を提供するのに役立ちます。仮想ノードには、値のリストと、その値の中から選択するための条件を含む複数の可能な設定が含まれます。次の例では、`defaultCardDesign` 設定は、仮想ノード内の値のいずれかを取ることができます。

```json theme={null}
{
    "defaultCardDesign":
    {
    "_virtualNode":
    {
        "_selectBy":"titleId",
        "_sourceNodes":
        [
        {"_selector":"123456799", "_data":"RobotUnicornCard.png,binary"},
        {"_selector":"default", "_data":"StandardCard.png,binary"}
        ]
    }
    },
}
```

ゲームがこのファイルを読み取ると、システムは `\_sourceNodes` 配列内の値のいずれかを選択します。この場合、アイテムはゲームのタイトル ID に基づいて選択されます。たとえば、ゲーム `12456799` をプレイしているプレイヤーには、次の内容が表示されます。

```json theme={null}
{
    "defaultCardDesign":"RobotUnicornCard.png,binary",
    "_sourceNodes":["defaultCardDesign:titleID:1234567899"]
}
```

そのゲームをプレイしていないプレイヤーには、次の内容が表示されます。

```json theme={null}
{
    "defaultCardDesign":"StandardCard.png,binary",
    "_sourceNodes":["defaultCardDesign:titleID:default"]
}
```

ゲームは、要求内のパラメーターに一致するカスタム セレクターを定義できます。たとえば、この構成 blob 内の次の JSON オブジェクトについて考えます。

```json theme={null}
{
    "defaultCardDesign":
    {
        "_virtualNode":
        {
            "_selectBy":"custom:gameMode",
            "_sourceNodes":
            [
                {"_selector":"silly", "_data":"RobotUnicornCard.png,binary"},
                {"_selector":"serious", "_data":"SeriousCard.png,binary"},
                {"_selector":"default", "_data":"StandardCard.png,binary"}
                ]
        }
    },
    "backgroundColor":"green",
    "dealerHitsOnSoft17":true
}
```

ゲームは、返すアイテムを選択するために `customSelector` パラメーターに文字列を渡します。たとえば、2 番目のオプションを取得するには、ゲームは `selectQuery` として `gameMode.serious` を要求します。

<a name="ID4E5EAC" />

## XBOX サービス Title Storage を使い始めるには

1. どの種類のデータを格納するかを決定します。例としては、セーブされたゲーム、ゲーム状態、デイリー チャレンジ、ゲーム マップ、アート リソースが挙げられます。

2. どのタイトルとプラットフォームがデータにアクセスする必要があるかを決定します。Title Storage は、単一のプラットフォーム上の単一のタイトルからのクラウド データ アクセス、および複数のプラットフォーム上の複数のタイトルからのクラウド データ アクセスをサポートしています。
