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

# ユーザー生成コンテンツ (UGC) クイックスタート

> サービス間呼び出しを使用して下書きコンテンツ アイテムに接続し、公開し、プレイヤーが作成したコンテンツをゲーム内で表示する PlayFab UGC のクイックスタート。

# ユーザー生成コンテンツ (UGC) クイックスタート

このガイドの目的は、直接的なサービス間呼び出しを使用して UGC をすばやく始める方法を説明することです。下書き UGC コンテンツ アイテムに接続し、それらのアイテムを公開してから、検索して見つける方法を段階的に示します。

## エンティティ トークンを取得する

UGC は PlayFab エンティティで動作するように設計されているため、最初のステップは [LoginWithCustomID](https://learn.microsoft.com/en-us/rest/api/playfab/client/authentication/login-with-custom-id) を使用してエンティティ トークンを取得することです。この例はサービス呼び出しを示しています。

```json theme={null}
{
  "CustomId": "exampleUser",
  "CreateAccount": true,
  "TitleId": "DC7B"
}
```

## Blob URL を作成する

UGC システムは、タイトルの UGC に関連付けられたすべてのコンテンツ (ファイルと画像) を格納するために [Azure Blob Storage](https://learn.microsoft.com/en-us/azure/storage/blobs/storage-blobs-introduction) を使用します。コンテンツをアップロードするには、まず [CreateUploadUrls](https://learn.microsoft.com/en-us/rest/api/playfab/economy/catalog/create-upload-urls) API を呼び出し、ファイル名とサイズ (バイト単位) を渡して新しい blob を作成する必要があります。たとえば、テキスト ファイルと PNG 画像をアップロードしたい場合は、次をリクエスト本文に渡します。

```json theme={null}
{
  "Files": [
    {
      "FileName": "HelloWorld.txt",
      "FileSize": 12
    },
    {
      "FileName": "PlayFabLogo.png",
      "FileSize": 20725
    }
  ]
}
```

レスポンスには、各コンテンツの `Id` と `Url` が含まれます。

```json theme={null}
{
    "code": 200,
    "status": "OK",
    "data": {
        "UploadUrls": [
            {
                "Id": "[Content ID]",
                "Url": "[Content Url + '?' + Token]",
                "FileName": "HelloWorld.txt"
            },
            {
                "Id": "[Image ID]",
                "Url": "[Image Url + '?' + Token]",
                "FileName": "PlayFabLogo.png"
            }
        ]
    }
}
```

## 下書き UGC アイテムを作成する

`"Type":"ugc"` パラメーターを使用して [CreateDraftItem](https://learn.microsoft.com/en-us/rest/api/playfab/economy/catalog/create-draft-item) API を呼び出すことで、"下書き" UGC アイテムを作成します。作成者は公開前に下書きアイテムをレビューおよびアクセスできます。下書きアイテムを作成するには、次が必要です。

* X-EntityToken ヘッダーには、前の呼び出しからの `EntityToken`。
* アイテムの `CreatorEntityKey.Id` には、前の呼び出しからの `Entity.Id`。
* アイテムの sourceId にはタイトルの `TitleId`。

この呼び出しは次のようになります。

```json theme={null}
{
  "Item": {
   "Type": "ugc",
    "Title": {
      "NEUTRAL": "Neutral Title Test",
      "en-GB": "en-gb Title",
      "en-US": "en-us Title"
    },
    "Description": {
      "NEUTRAL": "Neutral Description Test",
      "en-GB": "en-gb Description",
      "en-US": "en-us Description"
    },
    "startDate": "2018-10-18T20:01:26.1520582Z"
  }
}
```

これにより、`Id` を含む作成された下書きアイテムが返されます。後で使用できるように `Id` を保存します。

```json theme={null}
       "Item": {
            "SourceEntity": {
                "Id": "1184A",
                "Type": "title",
                "TypeString": "title"
            },
            "SourceEntityKey": {
                "Id": "1184A",
                "Type": "title",
                "TypeString": "title"
            },
            "Id": "44857e2b-c93b-4054-80be-7890028201ff",
            "Type": "ugc",
            "Title": {
              "NEUTRAL": "Neutral Title Test",
              "en-GB": "en-gb Title",
              "en-US": "en-us Title"
            },
          ...
        }
```

## プレイヤーの下書きアイテム ID を取得する

特定のプレイヤーの下書きアイテム ID を取得するには、[GetEntityDraftItems](https://learn.microsoft.com/en-us/rest/api/playfab/economy/catalog/get-entity-draft-items) API を使用できます。Title Entity はこの API を `Entity` パラメーターにプレイヤー ID を渡して呼び出すことができ、API はその特定のプレイヤーの下書きアイテムのリストを返します。`Entity` パラメーターを渡せるのは Title Entity のみです。プレイヤー エンティティは `Entity` パラメーターなしで API を呼び出すことができ、API は呼び出しを行っているプレイヤーが作成した下書きアイテムのリストを返します。

```json theme={null}
{
  "Count": 2,
  "Entity": {
    "Id": "C88F55C6A734B1DC",
    "Type": "title_player_account",
    "TypeString": "title_player_account"
  }
}
```

## UGC アイテムを公開する

アイテムが下書き状態になったら、[PublishDraftItem](https://learn.microsoft.com/en-us/rest/api/playfab/economy/catalog/publish-draft-item) を使用して公開状態にプッシュできます。UGC アイテムが公開されると、検索可能になり、公開で利用可能になります。`CreateDraftItem` レスポンスから返されたアイテム `Id` を使用する必要があります。

```json theme={null}
{
"Id": "44857e2b-c93b-4054-80be-7890028201ff"
}
```

## UGC アイテムの公開ステータスを取得する

アイテム `Id` を使用して、[GetItemPublishStatus](https://learn.microsoft.com/en-us/rest/api/playfab/economy/catalog/get-item-publish-status) API を使用して UGC カタログ内のアイテムの公開ステータスを取得できます。

```json theme={null}
{
"Id": "44857e2b-c93b-4054-80be-7890028201ff"
}
```

可能な公開 `Result` の値は次のとおりです。

* `Unknown`
* `Pending`
* `Succeeded`
* `Failed`
* `Canceled`

アイテムを再公開すると、公開されたアイテムが現在の下書きアイテムに合わせて更新されます。

## 検索を行う

公開呼び出しが成功すると、すべてのプレイヤーが公開カタログでアイテムにアクセスできます。[`SearchItems` API](https://learn.microsoft.com/en-us/rest/api/playfab/economy/catalog/search-items) は、提供されたパラメーターを使用して公開されたカタログ (UGC アイテムを含む) に対する検索を実行し、ページ分割された結果のセットを返します。`Filter`、`OrderBy`、および `Select` フィールドは、クエリ標準として OData を使用します。

```json theme={null}
{
  "Search": "Test",
  "Count": 2
}
```

## 関連項目

[最初のユーザー生成コンテンツを公開する](/services/playfab/economy-monetization/economy-v2/tutorials/publish-ugc)


## Related topics

- [PlayFab ユーザー生成コンテンツ](/ja-jp/services/playfab/economy-monetization/economy-v2/ugc/overview.md)
- [最初のユーザー生成コンテンツを公開する](/ja-jp/services/playfab/economy-monetization/economy-v2/tutorials/publish-ugc.md)
- [XR-018 ユーザー生成コンテンツ](/ja-jp/publishing/certification/xr/xr-018.md)
- [PlayFab Economy v2 ドキュメント](/ja-jp/services/playfab/economy-monetization/index.md)
- [FMA: XR-018 ユーザー生成コンテンツ](/ja-jp/publishing/certification/fma/xr-018.md)
