> ## 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 の統計情報にメタデータを添付して、数値と一緒にコンテキストの詳細を持たせ、リーダーボードのエントリやプレイヤーの進捗データを充実させます。

# 統計情報にコンテキストデータを追加する

このチュートリアルでは、統計情報が更新されるたびにコンテキスト情報を追加する方法を説明します。統計情報を保存するだけでは不十分な場合があります。ゲームスタジオはプレイヤーが特定のアクションをどのように実行したかについての詳細を追加したいかもしれませんし、統計情報に関連するゲーム内の機能があるかもしれません。

引き続き、競争の激しいシューティングゲームを例に説明します。この例では、ゲームは大成功を収めていますが、課題に直面しています。武器の反動を除去し、エイムアシストを改善する外部コンポーネントを使用してゲームを「ハッキング」する人々に関する苦情が多すぎるのです。そこで、ゲーム内で使用されているすべてのコンポーネントとネットワーク情報に関するより多くの情報を追跡するタスクが与えられています。

## 統計情報の作成

このシナリオへの対処方法を示すために、[統計情報でさらに多くのことを行う](/services/playfab/player-progression/statistics/doing-more-statistics)ページの統計情報の定義を使用します。この定義から、統計情報に追加される各行にメタデータを追加する方法を確認していきます。

```C# theme={null}
public static async Task CreateStatisticDefinitionAsync(PlayFabAuthenticationContext context, string statName)
{
    PlayFabProgressionInstanceAPI statsAPI = new PlayFabProgressionInstanceAPI(context);
    CreateStatisticDefinitionRequest statDefinitionRequest = new CreateStatisticDefinitionRequest()
    {
        Name = statName,
        AuthenticationContext = context,
        EntityType = "title_player_account",
        VersionConfiguration = new VersionConfiguration()
        {
            MaxQueryableVersions = 1,
            ResetInterval = ResetInterval.Manual,
        },
        Columns = new List<StatisticColumn>()
        {
            new StatisticColumn()
            {
                Name = "Distance",
                AggregationMethod = StatisticAggregationMethod.Max,
            },
             new StatisticColumn()
            {
                Name = "Caliber",
                AggregationMethod = StatisticAggregationMethod.Min,
            }
        },
    };
    
    PlayFabResult<PlayFab.LeaderboardsModels.EmptyResponse> createStatDefResult = await statsAPI.CreateStatisticDefinitionAsync(statDefinitionRequest);
}
```

このチュートリアルでは、この例から取り上げるべき重要な要素は統計情報の構造です。ご覧のとおり、複数の値を持つことができる複数の列があります。ただし、私たちの焦点は、これらの各行にコンテキスト情報を追加する方法にあります。

### 各統計情報にメタデータを追加する

プレイヤーがゲームプレイに影響を与える不正なハードウェアや、プレイヤーのパフォーマンスを向上させる可能性のある悪意のあるソフトウェアを持っているかどうかを知りたいと思います。アンチチートシステムはこのすべての情報を取得できます。ロングショット統計情報にこの情報を添付するだけで済みます。

このアクションを実行するには、UpdateStatistics API を使用します。SDK の例をここで確認できます。

```C# theme={null}
public static async Task UpdateStatisticForPlayer(PlayFabAuthenticationContext context, string statName, string entityId, int score)
{
    PlayFabProgressionInstanceAPI statsAPI = new PlayFabProgressionInstanceAPI(context);
    UpdateStatisticsRequest updateStatRequest = new UpdateStatisticsRequest()
    {
        Entity = new PlayFab.LeaderboardsModels.EntityKey()
        {
            Id = entityId,
            Type = EntityType
        },
        AuthenticationContext = context,
        Statistics = new List<PlayFab.LeaderboardsModels.StatisticUpdate>() 
        {
            new PlayFab.LeaderboardsModels.StatisticUpdate() 
            {
                Name = statName,
                Scores = new List<string> { score.ToString()},
                Metadata = "Anticheat data"
            }
        }
    };

    PlayFabResult<UpdateStatisticsResponse> updateResult = await statsAPI.UpdateStatisticsAsync(updateStatRequest);
}
```

ここで確認できる主な概念は、`StatisticUpdate` 内の `Metadata` パラメーターの使用です。これは、値自体とは別に更新されるコンテキストデータを指します。ここには、開発者にとって意味のある任意の情報を追加できます。この場合、それはアンチチートデータです。

これらの例により、トッププレイヤーからのすべての関連情報を追跡できるようになり、ゲームモデレーターが誰を BAN するかについてより良い決定を下すことができます。

## まとめ

このチュートリアルでは、次の操作の方法を学びました。

* 複数列の統計情報の作成
* 統計情報へのメタデータの追加

## 関連項目

* [基本的な統計情報を作成する](/services/playfab/player-progression/statistics/create-basic-statistics)
* [統計情報でさらに多くのことを行う](/services/playfab/player-progression/statistics/doing-more-statistics)
* [シーズナル統計情報](/services/playfab/player-progression/statistics/seasonal-statistics)
* [トランザクション書き込み](/services/playfab/player-progression/statistics/transactional-writes)
* [API リファレンス](/services/playfab/player-progression/statistics/api-reference)
* [制限](/services/playfab/player-progression/statistics/limits-statistics)
* [クォータ](/services/playfab/player-progression/statistics/quota-statistics)


## Related topics

- [統計情報でさらに多くのことを行う](/ja-jp/services/playfab/player-progression/statistics/doing-more-statistics.md)
- [基本的な統計情報を作成する](/ja-jp/services/playfab/player-progression/statistics/create-basic-statistics.md)
- [トランザクション書き込み](/ja-jp/services/playfab/player-progression/statistics/transactional-writes.md)
- [PFEntityStatisticValue](/ja-jp/services/playfab/api-references/c/pfprofilestypes/structs/pfentitystatisticvalue.md)
- [統計情報の制限](/ja-jp/services/playfab/player-progression/statistics/limits-statistics.md)
