> ## 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 GDPR - プレイヤー データの削除

> GDPR 準拠のために PlayFab プレイヤー データを削除する方法。DeleteMasterPlayerAccount を使用してアカウントを削除する方法や、アカウントを保持したままデータをクリアする方法など。

# プレイヤー データの削除

この記事では、PlayFab からプレイヤーのデータを削除する 2 つの主な方法について説明します。[プレイヤー アカウント全体を削除](#delete-a-player-account) するか、[アカウントを削除せずにデータのみを削除](#delete-account-data-without-deleting-the-account) することができます。

## プレイヤー アカウントを削除する

<Warning>
  Master Player アカウントを削除すると、PlayFab からそのプレイヤーに関連するすべてのデータが削除され、これはゲームからプレイヤーを削除することと同義です。DeleteMasterPlayerAccount API には、プレイヤーに関連するデータを選択的に削除するメカニズムはありません。データを削除しつつプレイヤー アカウントを保持するオプションについては、\[イベント データの削除] と \[カスタム データの削除] を参照してください。
</Warning>

Master Player アカウントとそのデータの削除は、すべての SDK で利用可能な [DeleteMasterPlayerAccount](https://learn.microsoft.com/en-us/rest/api/playfab/admin/account-management/delete-master-player-account) Admin API を使用して実現できます。[すべてのデータを必ず見つけてください](/services/playfab/data-analytics/privacy-compliance/playfab-gdpr-deleting-and-exporting-player-data) を必ずお読みください。

プレイヤーを削除するリクエストを行うと、PlayFab はコア システムからプレイヤーの個人情報を素早く削除してから、キュー処理エージェントにリクエストを送信します。エージェントは、補助システムおよびサブプロセッサーから、そのプレイヤーに関する残りの情報の削除を実行します。

この API はすぐに戻り値を返し、`JobReceiptId` を提供します。これは記録用に保存する必要があります。JobReceiptId は、PlayFab がプレイヤーを削除するリクエストを受け取ったことを検証するものです。

削除が完了すると、タイトル用に構成された通知メール アドレスにメールが送信されます。これには、API から最初に返された同じ `JobReceiptId` が含まれます。タスクの完了は PlayStream イベントもトリガーします。

Webhook 機能を使用して、選択したエンドポイントでこれらのイベントを受信するように登録し、必要に応じて処理できます。イベントには、`JobReceiptId` を含む JSON blob が含まれています。

以下の例は、[C# SDK](/services/playfab/sdks/c-sharp) で Admin API を使用する方法を示しています。別の SDK を使用したい場合は、[PlayFab SDKs](/services/playfab/sdks/playfab-sdk-intro) のリストから選択してください。

```csharp theme={null}
public static async void StartDeleteMasterPlayerExample(Action<PlayFabError> callback)
{
    var task = await PlayFabAdminAPI.DeleteMasterPlayerAccountAsync(new DeleteMasterPlayerAccountRequest()
    {
        PlayFabId = PlayFabId
    });

    if(task.Error != null)
    {
        callback(task.Error);
    }

    var jobReceiptId = task.Result.JobReceiptId;
    var AffectedTitleList = task.Result.TitleIds; 
    foreach (var title in AffectedTitleList)
    {
        Console.WriteLine(string.Format("Delete Player - Title Affected: {0}", title));
    }

}
```

<Note>
  この削除は *元に戻せない* ため、プレイヤーが削除リクエストの範囲と影響に納得していることを確認することをお勧めします。
</Note>

アクションが確認されたら、次のコードを使用して Master Player アカウントの削除を進めます。

```csharp theme={null}
//Make sure we are 100% sure we want to do this.
if ( confirm successful ) {
   //create a variable to store a list of titles the player has already been removed from.
   listOfTitlesRemovedFrom
   //Hang on to the receipts from successful deletes.
   listOfReceipts
   foreach(title in <all my titles>){

       //You only need to remove the Master Player once per namespace, so check that you have not
       //already performed this action in the namespace, or you will get an error that
       //the player is already queued for deletion.
       if(title not in listOfTitlesRemovedFrom){
           foreach(pfid in PlayFabIdList){

              //Note: you should do some error handling around this API call.
              response = title.DeleteMasterPlayerAccount(pfid)
              foreach(titleId in response.titleids){
                listOfTitlesRemoved.add(titleId)
              }
              listOfReceipts.add(response.jobreceiptid)
           }
       }
   }

   //Save listOfReceipts somewhere as proof of deletion.

}
```

## アカウントを削除せずにアカウント データを削除する

プレイヤーのアカウントに関連するイベント データを削除するには、次のリストを参考にしてください。

### イベント データの削除

イベント データには、PlayStream イベントとテレメトリが含まれます。イベント データはトランザクション型で、ユーザー アクティビティから生成されます。

#### PlayFab Insights

PlayFab Insights は、PlayFab がイベント データを代理で保存する完全マネージド ソリューションです。

プレイヤーが要求した場合、[DeleteMasterPlayerEventData](https://learn.microsoft.com/en-us/rest/api/playfab/admin/account-management/delete-master-player-event-data) API を使用して Insights データを削除できます。これにより、PlayFab Insights 内のプレイヤーに関連して保存されたデータのみが削除され、他のすべてのデータはそのまま残ります。

### カスタム データの削除

カスタム データは、プレイヤーに任意のデータを関連付けることを可能にする幅広いカテゴリの機能を指します。PlayFab はゲーム ロジックからデータを操作する方法を提供しますが、それ以外の方法でデータを解釈したり理解したりすることはありません。

#### レガシー プレイヤー データ

次の API を使用して、さまざまなタイプのプレイヤー データを編集および削除できます:

[UpdateUserData](https://learn.microsoft.com/en-us/rest/api/playfab/server/player-data-management/update-user-data)、[UpdateUserInternalData](https://learn.microsoft.com/en-us/rest/api/playfab/server/player-data-management/update-user-internal-data)、[UpdateUserReadOnlyData](https://learn.microsoft.com/en-us/rest/api/playfab/server/player-data-management/update-user-read-only-data)、[UpdateUserPublisherData](https://learn.microsoft.com/en-us/rest/api/playfab/server/player-data-management/update-user-publisher-data)、[UpdateUserPublisherInternalData](https://learn.microsoft.com/en-us/rest/api/playfab/server/player-data-management/update-user-publisher-internal-data)、[UpdateUserPublisherReadOnlyData](https://learn.microsoft.com/en-us/rest/api/playfab/server/player-data-management/update-user-publisher-read-only-data)

これらの各 API は **KeysToRemove** パラメーターを取り、これはプレイヤーのプロファイルから削除するプレイヤー データ キーのリストを受け取ります。

#### エンティティ オブジェクト

[エンティティ オブジェクト](/services/playfab/live-service-management/game-configuration/entities/entity-objects) は、SetObjects API を使用して削除できます。リクエスト ボディの Objects 配列内で、削除する各オブジェクトについて、ObjectName を指定し、DeleteObject を true に設定してエントリを作成します。以下はサンプル リクエスト ボディです。

```HTTP theme={null}
{ 
    "Entity": { 
        "Id": "<The ID of the target entity>", 
        "Type": "<either ‘title_player_account’, ‘master_player_account’, or ‘character’>" 
    }, 
    "Objects": [ 
        { 
            "ObjectName": "<Name of object to delete>", 
            "DeleteObject": true 
        } 
    ] 
} 
```

#### エンティティ ファイル

[エンティティ ファイル](/services/playfab/live-service-management/game-configuration/entities/entity-files) は、[DeleteFiles](https://learn.microsoft.com/en-us/rest/api/playfab/data/file/delete-files) API を使用して削除します。
