> ## 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.

# パブリッシャー データの使用

> SetPublisherData、GetPublisherData、および関連する API を使用して、PlayFab スタジオ内の複数のタイトルにわたって構成とプレイヤーのキー値データを共有します。

このチュートリアルでは、Publisher (Studio) データの作成と使用方法について説明します。

Publisher データは、共通の情報を共有する必要がある複数のゲームがある場合など、*複数のタイトルにまたがる* データです。

<Note>
  このカテゴリには、複数のゲームにまたがるプレイヤー データも含まれます。PlayFab はデータをキー/値ペア (KVP) として保存します。
</Note>

これらの API のほとんどは、専用サーバーから、または PlayFab サービス内の CloudScript 関数を介してプログラムが呼び出す必要があるサーバー API です。

* Publisher 固有のカスタム KVP を更新するにはサーバー API **[SetPublisherData](xref:titleid.playfabapi.com.server.title-widedatamanagement.setpublisherdata)** を、取得するには **[GetPublisherData](xref:titleid.playfabapi.com.server.title-widedatamanagement.getpublisherdata)** を使用します。
* プレイヤー向けの Publisher 固有のカスタム KVP を作成または更新するには **[UpdateUserPublisherData](xref:titleid.playfabapi.com.client.playerdatamanagement.updateuserpublisherdata)** を、取得するには **[GetUserPublisherData](xref:titleid.playfabapi.com.client.playerdatamanagement.getuserpublisherdata)** を使用します。
* ユーザー向けの読み取り専用の Publisher 固有のカスタム KVP を更新するにはサーバー API **[UpdateUserPublisherReadOnlyData](xref:titleid.playfabapi.com.server.playerdatamanagement.updateuserpublisherreadonlydata)** を、取得するにはクライアント API **[GetUserPublisherReadOnlyData](xref:titleid.playfabapi.com.client.playerdatamanagement.getuserpublisherreadonlydata)** を使用します。
* ユーザー向けの内部 Publisher 固有のカスタム KVP を更新するにはサーバー API **[UpdateUserPublisherInternalData](xref:titleid.playfabapi.com.server.playerdatamanagement.updateuserpublisherinternaldata)** を、取得するには **[GetUserPublisherInternalData](xref:titleid.playfabapi.com.server.playerdatamanagement.getuserpublisherinternaldata)** を使用します。

サーバー API は、専用サーバーから、または PlayFab サービスを介した CloudScript 関数から呼び出す必要があります。これは、PlayFab サーバー API がシークレット キーの提供を要求するため、意図された設計です。

<Tip>
  ゲーム クライアント内からのサーバー API の使用は *推奨されません*。サーバー API を使用する必要がある場合、この種の機能には CloudScript を使用してください。
</Tip>

Publisher データの値はコピーされ、PlayFab クラスター サーバー内の潜在的に *数百* のマシンに配布されます。このプロセスの一部として、このデータはキャッシュされ、それらのキャッシュを更新するのに最大 *15 分* かかることがあります。

<Note>
  Publisher データは *グローバル定数/静的データ* に最適で、*グローバル変数* として適していないか信頼できません。
</Note>

## Publisher データ

Publisher データは、タイトルのセットに対して静的データを保存するために使用されます。各エントリは、([ユーザー パブリッシャー データ](#user-publisher-data) とは対照的に) プレイヤーなどの PlayFab エンティティに *バインドされません*。

### Publisher データの設定

次のスニペットは、サーバー API を使用して Publisher データを設定する方法を示します。

<Note>
  この操作には管理者 API の対応するものがあります。
</Note>

```csharp theme={null}
public void ServerSetPublisherData() {
    PlayFabServerAPI.SetPublisherData(new SetPublisherDataRequest() {
            Key = "SomeKey",
            Value = "SomeValue"
        },
        result => Debug.Log("Complete setting publisher data"),
        error => {
            Debug.Log("Got error setting publisher data");
            Debug.Log(error.GenerateErrorReport());
        }
    );
}
```

### Publisher データの取得

次のスニペットは、クライアント API を使用して Publisher データを取得する方法を示します。

<Note>
  この操作にはサーバーおよび管理者 API の対応するものがあります。
</Note>

```csharp theme={null}
public void ClientGetPublisherData() {
    PlayFabClientAPI.GetPublisherData(new GetPublisherDataRequest(),
    result => {
        if (result.Data == null || !result.Data.ContainsKey("SomeKey")) Debug.Log("No SomeKey");
        else Debug.Log("SomeKey: " + result.Data["SomeKey"]);
    },
    error => {
        Debug.Log("Got error getting publisher data");
        Debug.Log(error.GenerateErrorReport());
    });
}
```

## User Publisher データ

User Publisher データは、PlayFab ユーザー (プレイヤー) にバインドされる Publisher データを導入するために使用できます。

通常の Publisher データとは異なり、クライアント アプリケーションが User Publisher データを変更することが可能です。

PlayFab は、クライアント API の観点から User Publisher データに対して 3 つの保護レベルを公開します:

1. 通常の User Publisher データは、クライアント アプリケーションに対して読み取りと書き込みのアクセスを公開します。

   * クライアント、サーバー、管理者 API 経由で設定。
   * クライアント、サーバー、管理者 API 経由で取得。
   * クライアント API は、現在ログインしているプレイヤーの Publisher データのみ設定できます。

2. 読み取り専用 User Publisher データは、クライアント アプリケーションに対して読み取りアクセスを公開します。

   * サーバーおよび管理者 API 経由で設定。
   * クライアント、サーバー、管理者 API 経由で取得。

3. 内部 User Publisher データは、クライアント アプリケーションへのアクセスを公開せず、ユーザー データのシークレット部分を保存するために使用されます。

   * サーバーおよび管理者 API 経由で設定。
   * サーバーおよび管理者 API 経由で取得。

### User Publisher データの設定

次のスニペットは、クライアントおよびサーバー API を使用して 3 種類のすべての Publisher データを設定する方法を示します。

```csharp theme={null}
// Use Client API to set User Publisher Data for current user
public void ClientSetUserPublisherData() {
    PlayFabClientAPI.UpdateUserPublisherData(new UpdateUserDataRequest() {
         Data  = new Dictionary<string, string>() {
             { "SomeKey", "SomeValue" }
         }
    },
    result => Debug.Log("Complete setting Regular User Publisher Data"),
    error =>
    {
        Debug.Log("Error setting Regular User Publisher Data");
        Debug.Log(error.GenerateErrorReport());
    });
}

// Use Server API to set Read-Only User Publisher Data for selected user
public void ServerSetUserPublisherReadOnlyData() {
    PlayFabServerAPI.UpdateUserPublisherReadOnlyData(new UpdateUserDataRequest() {
         PlayFabId = "< PlayFab Player Id >",
         Data  = new Dictionary<string, string>() {
             { "SomeKey", "SomeValue" }
         }
    },
    result => Debug.Log("Complete setting Read-Only User Publisher Data"),
    error =>
    {
        Debug.Log("Error setting Read-Only User Publisher Data");
        Debug.Log(error.GenerateErrorReport());
    });
}

// Use Server API to set Internal User Publisher Data for selected user
public void ServerSetUserPublisherInternalData() {
    PlayFabServerAPI.UpdateUserPublisherInternalData(new UpdateUserInternalDataRequest() {
         PlayFabId = "< PlayFab Player Id >",
         Data  = new Dictionary<string, string>() {
             { "SomeKey", "SomeValue" }
         }
    },
    result => Debug.Log("Complete setting Internal User Publisher Data"),
    error =>
    {
        Debug.Log("Error setting Internal User Publisher Data");
        Debug.Log(error.GenerateErrorReport());
    });
}
```

### User Publisher データの取得

次のスニペットは、クライアントおよびサーバー API を使用して 3 種類のすべての Publisher データを取得する方法を示します。

```csharp theme={null}
// Use Client API to get Regular User Publisher Data for selected user
public void ClientGetUserPublisherData() {
    PlayFabClientAPI.GetUserPublisherData(new GetUserDataRequest() {
        PlayFabId = "<PlayFab Player Id>"
    }, result => {
        if (result.Data == null || !result.Data.ContainsKey("SomeKey")) Debug.Log("No SomeKey");
        else Debug.Log("SomeKey: " + result.Data["SomeKey"]);
    },
    error => {
        Debug.Log("Got error getting Regular Publisher Data:");
        Debug.Log(error.GenerateErrorReport());
    });
}

// Use Client API to get Read-Only User Publisher Data for selected user
public void ClientGetUserPublisherReadOnlyData() {
    PlayFabClientAPI.GetUserPublisherReadOnlyData(new GetUserDataRequest() {
        PlayFabId = "<PlayFab Player Id>"
    }, result => {
        if (result.Data == null || !result.Data.ContainsKey("SomeKey")) Debug.Log("No SomeKey");
        else Debug.Log("SomeKey: " + result.Data["SomeKey"]);
    },
    error => {
        Debug.Log("Got error getting Read-Only Publisher Data:");
        Debug.Log(error.GenerateErrorReport());
    });
}

// Use Server API to get Internal User Publisher Data for selected user
public void ServerGetUserPublisherInternalData() {
    PlayFabServerAPI.GetUserPublisherInternalData(new GetUserDataRequest() {
        PlayFabId = "<PlayFab Player Id>"
    }, result => {
        if (result.Data == null || !result.Data.ContainsKey("SomeKey")) Debug.Log("No SomeKey");
        else Debug.Log("SomeKey: " + result.Data["SomeKey"]);
    },
    error => {
        Debug.Log("Got error getting Internal Publisher Data:");
        Debug.Log(error.GenerateErrorReport());
    });
}
```

## 関連項目

* [Title Data クイックスタート](/services/playfab/live-service-management/game-configuration/titledata/quickstart)
* [CloudScript クイックスタート](/services/playfab/live-service-management/service-gateway/automation/cloudscript/quickstart))


## Related topics

- [Title Data クイックスタート](/ja-jp/services/playfab/live-service-management/game-configuration/titledata/quickstart.md)
- [プレイヤー データ](/ja-jp/services/playfab/player-progression/player-data/index.md)
- [プレイヤーパブリッシャーデータを使用して複数タイトルのプレイに報酬を付与する](/ja-jp/services/playfab/player-progression/player-data/using-player-publisher-data.md)
- [XR-013 Microsoft アカウントとパブリッシャー アカウントの関連付け](/ja-jp/publishing/certification/xr/xr-013.md)
- [FMA XR-013: Microsoft アカウントとパブリッシャーアカウントのリンク](/ja-jp/publishing/certification/fma/xr-013.md)
