# User Reporting の設定

> Customize user reports with fields, metadata, attachments, and metrics to match your game's feedback needs.

User Reporting のデフォルト設定は通常の使用には適していますが、プロジェクトが発展するにつれて、特定のニーズに合わせて変更したくなる場合があります。アプリケーションに合った独自の UI をビルドして、カスタムフィールドを導入したり、ユーザーレポートフォームの外観を変更したりできます。パッケージで提供されているサンプルは実用的ですが、出発点として機能します。

ユーザーレポートには、メタデータ、イベント、サンプリングされた指標、スクリーンショット、添付ファイルなどの有用な情報が含まれます。例えば、ユーザーのゲームセーブファイルをユーザーのレポートに添付したり、プレイヤーが特定のアクションを実行するたびにイベントをログに記録したりできます。パフォーマンス重視のゲームプレイの状況において、パフォーマンス指標をサンプリングすることもできます。

レポートに含まれる各種のデータの最大値を設定するには、API を使用します。**UserReportExample** ファイル (Unity プロジェクトにインポートされたサンプル内にあります) では、レポートにデータを追加するさまざまな方法のデモが提供されています。

例えば、以下の設定をカスタマイズして、レポートに含まれる特定のデータの種類の最大値を制限できます。

* `FramesPerMeasure`: メジャーとは、指標の収集される各サンプルでカバーされるフレームのセットです。デフォルトのメジャーの長さは 60 フレームです。
* `MaximumMeasureCount`: メジャーとは指標のサンプルでカバーされるフレームのセットであり、レポート内のメジャーの最大数をカウントします。初期値は 300 メジャーです。
* `MaximumEventCount`: この制限は、レポートに含まれるイベントの数に適用されます。初期値は 100 イベントです。
* `MaximumScreenshotCount`: レポートに添付されるスクリーンショット数の上限。初期値は 10 スクリーンショットです。
* `MetricsGatheringMode`: 指標の収集モードを表します。フレーム/秒 (Graphics.FramesPerSecond) などの一部の指標は、デフォルトの設定である Automatic モードを使用してレポートに加えることができます。Manual を使用すると独自のカスタム指標のみがレポートに含まれますが、Disabled を使用するとサンプリングされた指標がレポートにまったく送信されなくなります。

これらの設定に制限はありませんが、値を大きく設定するほど、収集されたデータがレポートのサイズに影響します。特に、高解像度の大きいスクリーンショットを使用すると、レポートのサイズがすぐに大きくなる可能性があります。

ユーザーレポートの設定を行うには、`UserReportingService.Instance..Configure(UserReportingClientConfiguration configuration)` メソッドを以下のように呼び出します。

```cs
var customConfig = new UserReportingClientConfiguration(5, 5, 100, 100, MetricsGatheringMode.Automatic);
UserReportingService.Instance.UserReporting.Configure(customConfig);
```

## レポートの作成と送信##create-and-sending-reports

レポートを作成するには、`UserReportingService.Instance.UserReporting.CreateNewUserReport();` を呼び出します。

レポートを送信するには、`UserReportingService.Instance.SendUserReport(Action<float> progressUpdate, Action<bool> result)` を呼び出します。

サンプルの例をよく見て、アクションパラメーターを十分に理解してください。レポートの送信は必須ではありませんが、送信することをお勧めします。

## メタデータの追加##add-metadata

ユーザーレポートにデフォルトで含まれるデバイスメタデータと共に表示される、ゲームの特定のデータを収集するには、メタデータを使用します。

カスタムメタデータを追加するには、`UserReportingService.Instance.AddMetadata(string name, string value)` メソッドを呼び出します。

メタデータを追加しても、パフォーマンスへの影響はほとんどありません。

## イベントのログ記録##log-events

カスタムイベントをログに記録するには、`UserReportingService.Instance.LogEvent(UserReportEventLevel level, string message)` メソッドを呼び出します。

イベントをログに記録しても、パフォーマンスへの影響はほとんどありません。

## サンプリング指標の追加##add-sampling-metrics

カスタムサンプリング指標を追加するには、`UserReportingService.Instance.SampleMetric(string name, double value)` メソッドを呼び出します。

`SampleMetric` メソッドは、パフォーマンスにあまり影響を与えずにフレームごとに呼び出すように設計されています。しかし、上記のメソッドをフレームごとに呼び出すと、個別の名前ごとにレポートのサイズが大幅に増加する可能性があります。

## スクリーンショットの追加##add-screenshots

レポートにスクリーンショットを追加するには、`UserReportingService.Instance.TakeScreenshot(int maximumWidth, int maximumHeight)` メソッドを呼び出します。スクリーンショットは、ダッシュボードでレポートの一部として表示されます。

オプションで、`UserReportingService.Instance.TakeScreenshot(int maximumWidth, int maximumHeight, object source)` を使用してスクリーンショットのソース (Camera や RenderTexture など) を指定できます。

画像は、ソースに関係なく、maximumWidth および maximumHeight パラメーターで定義されたサイズ内に収まるまで縮小されます。

最大幅と最大高さを選択する場合、ユーザーレポートは 10MB 未満である必要があります。最後に撮影されたスクリーンショットが、ダッシュボード内でそのレポートのサムネイルとして使用されます。

**ノート**: スクリーンショットの撮影はパフォーマンスに影響を与えます。ユーザーへの悪影響を避けるため、スクリーンショットはパフォーマンスが重要でないとき (例えば、プレイヤーがアイドル状態のとき) に撮影するようにしてください。

## 添付ファイルの追加##add-attachments

動画やシーングラフなどの添付ファイルを追加します。

添付ファイルは Base64 オブジェクトとしてエンコードされます。

添付ファイルを追加するには、`UserReportingService.Instance.AddAttachmentToReport(string title, string filename, byte[] data)` を使用します。

## レポートのディメンションの編成##organize-report-dimensions

Unity Dashboard でユーザーレポートをフィルター処理するには、ディメンションを使用します。ディメンションプロパティに項目を追加することで、レポートを送信する前にディメンションと指標をレポートに追加できます。ディメンションや指標には、それぞれ名前と値があります。以下を呼び出すことで、レポートに新しいディメンションを追加できます。

`UserReportingService.Instance.AddDimensionValue(string dimension, string value);`

例えば、以下のディメンションを持つ 3 つのレポートがあるとします。

| **名前**              | **値**              |
| ------------------- | ------------------ |
| Platform (プラットフォーム) | Android            |
| Version (バージョン)     | 2                  |
| Category (カテゴリ)     | Graphics (グラフィックス) |
| Platform (プラットフォーム) | WindowsPlayer      |
| Version (バージョン)     | 1                  |
| Language (言語)       | English (英語)       |
| Platform (プラットフォーム) | WindowsPlayer      |
| Version (バージョン)     | 1                  |
| Platform.Version    | WindowsPlayer.1    |

ダッシュボードには以下のフィルタリングオプションが表示されます。

| **ディメンション名**        | **ディメンション値**       |
| ------------------- | ------------------ |
| Category (カテゴリ)     | Graphics (グラフィックス) |
| Language (言語)       | English (英語)       |
| Platform (プラットフォーム) | Android            |
| Platform (プラットフォーム) | WindowsPlayer      |
| Platform.Version    | WindowsPlayer: 1   |
| Version (バージョン)     | 1                  |
| Version (バージョン)     | 2                  |

レポートごとに異なるディメンションを追加することもできます。例えば、ローカライズされたレポートにのみ SystemLanguage をディメンションとして追加したい場合があります。

また、ユーザーはレポートのサマリーに 1 つのハッシュタグを追加できます。このハッシュタグはディメンションとして表示されます。

例えば、サマリー "I fell through the floor #FloorBug" は以下のように表示されます。

| **ディメンション名** | **ディメンション値** |
| ------------ | ------------ |
| ハッシュタグ       | FloorBug     |
