# 関係

> Understand the different types of player relationships tracked by Friends.

Friends サービスは、さまざまな種類の関係を管理します。通常、大抵のユーザー関係は頻繁には変更されません。しかし、関係が更新された場合、多くのユーザーは、できるだけ早くそれを把握したいと考えます。Friends SDK では、効率性を高めるため、起動時にユーザーのすべての関係を一度に取得したうえで、プッシュ通知を使用してそのリストを最新状態に保ちます。

関係とは、2 人のユーザー間のステータスのことです。関係ステータスの中には、両方のユーザーの同意が必要なものもあれば、一方のユーザーの同意だけで成立するものもあります。Friends SDK は、さまざまな関係を自動的にグループ化し、各種類の関係のコレクションを公開します。Friends SDK は、さまざまな関係を自動的にグループ化し、各種類の関係のコレクションを公開します。関係の種類には、友達リクエスト、友達、ブロックがあります。

* **友達リクエスト** コレクションには、受信した友達リクエストと送信した友達リクエストがすべて含まれます。関係メンバーの **ロール** プロパティによって、それが受信と送信のどちらであるかを識別します。[友達リクエスト](./friend-requests.md) を参照してください。保留中の友達リクエスト (受信と送信の両方) の最大数は 10 です。
* **友達** コレクションには、ユーザーのアクティブな友達全員が含まれます。[友達リスト](./friends-list.md) を参照してください。アクティブな友達の最大数は 50 です。
* **ブロック** コレクションには、ユーザーがブロックしたユーザー全員が含まれます。[ブロックリスト](./block-list.md) を参照してください。アクティブなブロックの最大数は 10 です。

> **Note:**
>
> **ノート**: 関係によって数の上限が異なる場合があります。上限が低すぎて目的を果たせない場合、[Unity サポート](https://support.unity.com) に問い合わせてご相談ください。

Friends サービスは、すべての関係を同様に処理します。各関係のさまざまなプロパティを使用して、その関係の処理方法を決定できます。各関係には 1 人以上のメンバー (プレイヤー) がいます。各メンバーは、その関係におけるそのメンバーの役割を識別するための追加プロパティを持っている場合があります。例えば、`FRIEND_REQUEST` 関係には必ず 2 人のメンバーがいます。

1. `SOURCE` ロールを持つメンバー (送信者)。
2. `TARGET` ロールを持つメンバー (受信者)。

ただし、`FRIEND_REQUEST` 関係が `FRIEND` 関係に変化すると、メンバーロールは `NONE` になります。

SDK には、サービスの使い勝手を高めるために、特定の操作に利用できるラッパー API がいくつか用意されています。

例えば、`SendFriendRequestAsync` メソッドを呼び出すと、`CreateRelationship` API が呼び出されて、ターゲットユーザーとの間に新しい `FRIEND_REQUEST` 関係が作成されます。

ターゲットユーザーからの `FRIEND_REQUEST` 関係がすでに存在する場合、新しい `FRIEND` 関係が作成されます。`SendFriendRequestAsync` を呼び出すと、状態に応じて、`FRIEND_REQUEST` 関係または新しい `FRIEND` 関係が作成されます。

> **Note:**
>
> **ノート**: 関係ステータスはユーザーの [プレゼンスステータス](./presence.md) とは別のものです。

2 人のユーザーが [友達](./friends.md) 関係にある場合、各ユーザーは相手のユーザーの友達リストに存在します。この種類の関係では両方のユーザーの同意が必要ですが、関係作成の端緒として必要なのは、一方のユーザーが [友達リクエスト](./friend-requests.md) を送信することだけです。

一方のユーザーが他方のユーザーを ([ブロックリスト](./block-list.md) に追加して) ブロックしている場合、2 人のユーザーはブロック関係にあります。この種類の関係に必要なのは、ブロックを実行するユーザーの同意だけです。
