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

# コンテンツ配信ネットワーク クイックスタート

> レガシー PlayFab CDN からキーによってゲーム アセットを保存および提供します。フォルダー パス、エッジ キャッシング動作、およびアップロード、上書き、削除の遅延を含みます。

<Info>
  PlayFab CDN はレガシー機能で、以前に CDN を構成したタイトルが少なくとも 1 つあるアカウントでサポートされています。コンテンツ管理ソリューションに関心のある新規 PlayFab 開発者には、Azure CDN の使用をお勧めします。開始するには、[Azure CDN ドキュメント](https://learn.microsoft.com/en-us/azure/cdn/) を参照してください。
</Info>

PlayFab コンテンツ配信ネットワーク (CDN) は、ファイル名 (*キー* とも呼ばれます) で一意に識別されるファイルとして個々のアセットを保存します。これは、キーによってアセットを追加、更新、削除、および取得することを意味します。

PlayFab CDN では、フォルダーごとにアセットを区分できます。アセットへのフォルダー パスは、*アセット キー* の一部になります。

次の例は、`Android` という名前のフォルダー内に保存された有効なアセット キーです。

`Android/Image.png`。

ユーザーがアセットを取得する際、リクエストは最も近いエッジ ロケーションに自動的にルーティングされるため、可能な限り最高のパフォーマンスでコンテンツが配信されます。

ただし、これにより、次の例のようなファイル管理アクションに遅延が生じる可能性があります:

* **ファイルのアップロード**: ファイルはすぐに利用可能になります。

* **ファイルの上書き**: 新しいファイルで上書きされるまで、古いファイルが最大 24 時間、ユーザーに表示されます。

* **ファイルの削除**: 削除コマンドがすべてのエッジ ロケーションから削除するまで、ファイルは最大 24 時間存在し続けます。

## アセットのアップロード

ユーザーがアセットを取得できるようにするには、事前に CDN にアップロードする必要があります。これは **Game Manager** で行えます:

* 左側のメニューから **\[Content]** を選択します。
* **\[File Management]** タブを選択します。
* 次に、**\[Upload Files]** を選択します。

<img src="https://mintcdn.com/microsoft-4404708b/MjJ0-cTsb1bpaMcX/images/playfab/data-analytics/legacy/content-delivery-network/tutorials/game-manager-content-file-management-upload-files.png?fit=max&auto=format&n=MjJ0-cTsb1bpaMcX&q=85&s=8434341dcd92836b082c55dbaa661e4b" alt="Game Manager - Content - File Management - Upload Files" width="2560" height="1184" data-path="images/playfab/data-analytics/legacy/content-delivery-network/tutorials/game-manager-content-file-management-upload-files.png" />

次のことができます:

* 複数の **ファイル (1)** を選択します。
* 選択したすべてのファイルがリスト **(2)** に表示されます。
* **\[Upload Files]** ボタン **(3)** を選択して、ファイルを送信します。

<img src="https://mintcdn.com/microsoft-4404708b/MjJ0-cTsb1bpaMcX/images/playfab/data-analytics/legacy/content-delivery-network/tutorials/game-manager-choose-and-upload-files.png?fit=max&auto=format&n=MjJ0-cTsb1bpaMcX&q=85&s=7c6bbd20066b2a6c40bdc062c8ec9603" alt="Game Manager - ファイルを選択してアップロード" width="924" height="580" data-path="images/playfab/data-analytics/legacy/content-delivery-network/tutorials/game-manager-choose-and-upload-files.png" />

* アップロードされたファイルがリスト **(1)** に表示されます。

* *フォルダー* を管理することもできることに注意してください。
  * フォルダーを作成するには、**\[New Folder]** ボタン **(2)** を選択します。

* **フォルダー名 (1)** を入力します。

* **\[Create Folder]** ボタン **(2)** を選択します。

<img src="https://mintcdn.com/microsoft-4404708b/MjJ0-cTsb1bpaMcX/images/playfab/data-analytics/legacy/content-delivery-network/tutorials/game-manager-create-new-folder.png?fit=max&auto=format&n=MjJ0-cTsb1bpaMcX&q=85&s=b25109c958f0156cb00fd5a84d75ddbd" alt="Game Manager - 新しいフォルダーを作成" width="913" height="240" data-path="images/playfab/data-analytics/legacy/content-delivery-network/tutorials/game-manager-create-new-folder.png" />

これにより、ツリー内に新しいフォルダーが作成されます。次に、このフォルダーを選択して、通常どおりにファイルをアップロードできます。

または、admin SDK を使用してコードでアセットをアップロードすることもできます。これは 2 段階のプロセスです:

1. まず、[GetContentUploadUrl](xref:titleid.playfabapi.com.admin.content.getcontentuploadurl) を呼び出して、アップロードを承認する事前署名済み URL を取得します。
2. 次に、URL を使用して `HTTP PUT` リクエストを行い、データと (オプションで) コンテンツ タイプを指定します。

事前署名済み URL を取得する方法を示す以下のスニペットの使用を検討してください。

```csharp theme={null}
public void UploadFileToCDN(string key, byte[] content, string contentType = "binary/octet-stream") {
    GetUploadUrl(key, contentType, presignedUrl => {
        PutFile(presignedUrl, content, contentType);
    });
}

void GetUploadUrl(string key, string contentType, Action<string> onComplete) {
    PlayFabAdminAPI.GetContentUploadUrl(new GetContentUploadUrlRequest() {
        ContentType = contentType,
        Key = key
    }, result => onComplete(result.URL),
    error => Debug.LogError(error.GenerateErrorReport()));
}

void PutFile(string presignedUrl, byte[] content, string contentType = "binary/octet-stream") {
    // Implement your own PUT HTTP request here.
    // - Must use PUT method
    // - Must set content type Header
}
```

その後、PlayFab Game Manager で結果を確認できます。ファイルがリストにあることを確認してください。

## アセットの取得

コードでアセットをダウンロードする方法は、アセットのアップロードと同じです。前述のとおり、これは 2 段階のプロセスです。

1. まず、[GetContentDownloadUrl](xref:titleid.playfabapi.com.client.content.getcontentdownloadurl) を呼び出して、ダウンロードを承認する事前署名済み URL を取得します。
2. 次に、事前署名済み URL を使用して `HTTP GET` リクエストを行い、データを取得します。

プロセスの基本を示す以下のスニペットの使用を検討してください。

```csharp theme={null}
public void DownloadFileFromCDN(string key) {
    GetDownloadUrl(key, presignedUrl =>
    {
        GetFile(presignedUrl);
    });
}

void GetDownloadUrl(string key, Action<string> onComplete) {
    PlayFabClientAPI.GetContentDownloadUrl(new GetContentDownloadUrlRequest() {
        Key = key,
        ThruCDN = true
    }, result => onComplete(result.URL),
    error => Debug.LogError(error.GenerateErrorReport()));
}

void GetFile(string preauthorizedUrl) {
    // Implement your own GET HTTP request here.
}
```

前述のように、CDN ではファイル更新に関して遅延が発生する可能性があります。開発中には、最新の最新ファイルを強制的に取得することが有用な場合があります。

[GetContentDownloadUrl](xref:titleid.playfabapi.com.client.content.getcontentdownloadurl) 呼び出しでは、`ThruCDN` パラメーターを `False` に設定できます。返される URL は、キャッシュされていない最新のファイルを指します。

<Note>
  公開されたゲーム クライアントでは、このオプションを *絶対に* 使用しないでください!
</Note>


## Related topics

- [ユーザー生成コンテンツ (UGC) クイックスタート](/ja-jp/services/playfab/economy-monetization/economy-v2/ugc/quickstart.md)
- [レポート クイックスタート](/ja-jp/services/playfab/data-analytics/learn-data/reports/quickstart.md)
- [PlayFab データと分析のドキュメント](/ja-jp/services/playfab/data-analytics/index.md)
- [クイックスタート (Windows) - Party とマルチプレイヤー](/ja-jp/services/playfab/sdks/unified-sdk/quickstart-windows-party.md)
- [クイックスタート](/ja-jp/services/playfab/economy-monetization/economy-v2/quickstart.md)
