メインコンテンツまでスキップ

ユーザー識別ルール

最終更新 2026/10/03

ユーザーは異なるデバイスで製品を使用することもあれば、未ログインの状態で使用することもあるため、ユーザーを正確に識別するのは非常に複雑です。AEは、比較的正確で理解しやすい方式を採用しています。このドキュメントでは、ユーザー識別のルールを詳しく説明し、すばやく理解できるよう事例も紹介します。

概要

1. 1人のユーザーは、次の3つのIDで識別されます:

  • AEユーザーID(#user_id):AEシステムにおけるユーザーの一意のID
  • アカウントID(#account_id):ユーザーのログインID
  • ゲストID(#distinct_id):ユーザーが未ログイン状態のときのID

2. ユーザーの識別で最も重要なのは「AEユーザーID」です。AEシステムが受信するデータは1件ごとに、そのデータの「アカウントID」と「ゲストID」に基づいて、対応する「AEユーザーID」に関連付けられます。1件のデータに「アカウントID」と「ゲストID」の両方が含まれる場合は、「アカウントID」に基づく「AEユーザーID」への関連付けが優先されます。「アカウントID」が存在しない場合は、「ゲストID」に基づいて「AEユーザーID」に関連付けられます

3. AEのバックエンドが受信したデータに、新しい「アカウントID」が含まれる場合:

  • データに「ゲストID」が存在し、その「ゲストID」がすでに「AEユーザーID」に関連付けられているものの「アカウントID」には紐付けられていない場合は、その「アカウントID」と「ゲストID」が紐付けられ、1つの「AEユーザーID」を共有します
  • 「ゲストID」が存在しない場合、またはすでに他のアカウントIDに紐付けられている場合は紐付けが行われず、「アカウントID」は新しい「AEユーザーID」に関連付けられます

4. AEのバックエンドが新しい「ゲストID」を含むデータを受信した場合:

  • 現在のデータに「アカウントID」が存在する場合は、その「アカウントID」と紐付けられ、2つのIDは同じ「AEユーザーID」に関連付けられます
  • 現在のデータに「アカウントID」が存在しない場合は紐付けが行われず、その「ゲストID」は新しい「AEユーザーID」に関連付けられます

5. 「AEユーザーID」と「アカウントID」は1対1で対応します。「アカウントID」と「ゲストID」は1対多で紐付けられますが、1つの「ゲストID」に紐付けられる「アカウントID」は1つだけです。

1. ユーザー識別IDの種類​

AEプラットフォームでは、主に3つのユーザー識別IDを使用します。「ゲストID(#distinct_id)」、「アカウントID(#account_id)」、「AEユーザーID(#user_id)」です。この節では、これら3つのIDの意味を簡単に説明します:

1.1 ゲストID(#distinct_id)​

ゲストIDは、ユーザーが未ログイン状態のときの識別子で、ログイン前やゲーム外のデータ(登録前のデータ、広告データなど)を識別するために使用します。

クライアントSDKで接続する場合は、SDKがそのユーザーに一意のゲストIDを自動的に設定します。ユーザーのゲストIDをカスタマイズする必要がある場合は、SDKの初期化直後にidentifyを呼び出して設定してください。

警告

イベントをアップロードした後に、再度identifyを呼び出してゲストIDを変更しないでください。ユーザーを照合できない、ユーザーが重複するなどの深刻なデータ問題が発生するおそれがあります。

1.2 アカウントID(#account_id)​

アカウントIDは、ユーザーがログイン状態のときの識別子で、ログイン後のデータを識別するために使用します。ゲームの多くは「アカウント、キャラクター」の2つのディメンションでユーザーを識別します。一般的には、より小さい粒度、つまり「キャラクターID」をアカウントIDとして使用し、キャラクターのディメンションがない場合は「アカウントのログインID」をアカウントIDとして使用することをお勧めします。

クライアントSDKで接続する場合は、ユーザーの登録時やログイン時、またはキャラクターの作成時やサーバーへの入場時にloginを呼び出して、アカウントIDを設定できます。SDKはアカウントIDを保存し、以降のすべてのデータにアカウントIDが付与されます。再度loginを呼び出してアカウントIDを設定すると、新しく渡した値がアカウントIDになります。logoutを呼び出してアカウントIDをクリアすることもできます。クリア後のデータにはアカウントIDが付与されません。

1.3 AEユーザーID(#user_id)​

「AEユーザーID」は、AEシステム内部でユーザーを識別するための一意の識別IDです。正しいデータが格納される際、システムは「アカウントID」と「ゲストID」に基づいてそのデータの「AEユーザーID」を生成し、そのデータがどのユーザーに属するかを確定します。

「AEユーザーID」は、分析において非常に重要な役割を担います。イベントデータ、ユーザープロパティ、コホートやタグなどのデータテーブルは、「AEユーザーID」で関連付ける必要があります。分析モデルで計算されるユーザーの重複除外数は、実質的には「AEユーザーID」の重複除外数です。

つまり、ユーザー識別ルールとは、各データの「AEユーザーID」を生成するルールだと言えます。「AEユーザーID」を生成するロジックは、次の2つのステップに分けられます:

  1. ID関連付けテーブルの更新:データに新しい「アカウントID」または「ゲストID」が含まれる場合、AEシステムは内部のID関連付けテーブルを更新します
  2. データと「AEユーザーID」の関連付け:データ内の「アカウントID」または「ゲストID」をもとにID関連付けテーブルで対応する「ユーザーID」を検索し、各データを「AEユーザーID」に関連付けます

2. ID関連付けテーブルの更新​

AEシステム内部には、イベントテーブルやユーザーテーブルとは独立したID関連付けテーブルがあります。このテーブルには、「AEユーザーID」と「アカウントID」、「ゲストID」との関連付けが記録されています。システムが受信したデータに新しい「アカウントID」または「ゲストID」が含まれる場合、このID関連付けテーブルが更新されます。

  • データに「アカウントID」のみ、または「ゲストID」のみが含まれ、そのIDを初めて受信した場合。このとき、システムは新しい「AEユーザーID」を作成し、渡されたIDと関連付けます。

データに「アカウントID」と「ゲストID」の両方が含まれる場合は、さらにIDの紐付けの仕組みがあります。IDの紐付けとは、「アカウントID」と「ゲストID」を紐付けて、同じ「AEユーザーID」に関連付けることです。これにより、1人のユーザーのログイン前とログイン後のデータが紐付けられます。

  • 「アカウントID」と「ゲストID」をどちらも初めて受信した場合、2つのIDは紐付けられ、新しい「AEユーザーID」に関連付けられます

  • 「アカウントID」がID関連付けテーブルに存在し、「ゲストID」が新しいIDの場合は、「ゲストID」が「アカウントID」に紐付けられます。1つの「アカウントID」には複数の「ゲストID」を紐付けられます。

  • 「ゲストID」がID関連付けテーブルに存在し、「アカウントID」が新しいIDの場合は、次の2つのケースがあります:

    • 「ゲストID」がすでに他の「アカウントID」に紐付けられている場合、「ゲストID」は「アカウントID」に紐付けられず、「アカウントID」は新しい「AEユーザーID」に関連付けられます
    • 「ゲストID」が他の「アカウントID」に紐付けられていない場合、「ゲストID」は「アカウントID」に紐付けられます

データ内の「アカウントID」と「ゲストID」がいずれもID関連付けテーブルに存在する場合、ID関連付けテーブルは変更されません。

次は、データを「AEユーザーID」に関連付ける段階です。これも次の2つのルールに分かれます:

  • データに「アカウントID」または「ゲストID」のどちらか一方しかない場合は、そのIDに関連付けられた「AEユーザーID」を直接取得します
  • データに「アカウントID」と「ゲストID」の両方が含まれる場合は、「アカウントID」に関連付けられた「AEユーザーID」を取得します

簡単に言えば、ユーザーIDの関連付けの判定では、「アカウントID」の優先度のほうが高くなります。「アカウントID」がある場合は「アカウントID」に関連付けられたIDを取得し、「アカウントID」がない場合は「ゲストID」に関連付けられたIDを取得します。

4. 事例分析​

AEのユーザー識別の仕組みをより深く理解していただけるよう、この節では事例を用いて、識別ルールがどのように動作するかを具体的に説明します。事例では、バックエンドがデータを受信した後に「ユーザーID」を設定する処理を示します。各ステップにおける#user_idの値と、関連付けの仕組みに注目してください。

4.1 「ゲストID」のみの場合​

「ゲストID」しかない場合は、#distinct_idのみでユーザーIDが生成されます

#account_id#distinct_id#user_id
nullA1
nullB2
nullC3
nullA1

上記のシナリオでは、バックエンドが3つの新しい「ゲストID」を受信したため、「ユーザーID」が3回新規作成されました。4番目のステップでは、「ゲストID」"A"に対応する「ユーザーID」"1"が存在するため、「ユーザーID」は新規作成されず、以前に作成されたユーザーとみなされます。その「ユーザーID」は"1"です。

4.2 「ゲストID」がユーザーIDに紐付けられているが、「アカウントID」には紐付けられていない場合​

「ゲストID」に対応するユーザーIDがあり、「アカウントID」が紐付けられていない場合は、「アカウントID」を渡すと「アカウントID」と「ゲストID」が紐付けられます

#account_id#distinct_id#user_id
nullA1
甲A1

上記のシナリオでは、バックエンドが新しい「ゲストID」を受信したため、「ユーザーID」が新規作成されました。その後、新しい「アカウントID」を受信しました。このとき「ゲストID」は「アカウントID」に紐付けられていなかったため、新しい「アカウントID」と「ゲストID」が紐付けられました。

4.3 ゲストIDがユーザーIDに紐付けられ、かつアカウントIDにも紐付けられている場合​

「ゲストID」がすでに「ユーザーID」に関連付けられ、かつ「アカウントID」に紐付けられている場合、新しい「アカウントID」はその「ゲストID」に紐付けられません。その「アカウントID」は、以降に他の「ゲストID」との紐付けを試みることができます:

#account_id#distinct_id#user_id
甲A1
乙A2
乙B2
nullB2
nullA1
丙B3

上記のシナリオでは、「ゲストID」"A"がすでに「アカウントID」"甲"に紐付けられているため、新しい「アカウントID」"乙"は「ゲストID」"A"に紐付けられず、新しい「ユーザーID」"2"に関連付けられます。3番目のステップでは、「アカウントID」"乙"と「ゲストID」"B"が同時に渡されますが、「ゲストID」"B"はまだ「アカウントID」に紐付けられていないため、両者が紐付けられます。そのため、4番目のステップで渡された「ゲストID」"B"は「ユーザーID」"2"に関連付けられます。最後に、新しい「アカウントID」"丙"と「ゲストID」"B"が同時に渡されますが、同様に紐付けは行われず、「アカウントID」"丙"は新しい「ユーザーID」"3"に関連付けられます。ID関連付けテーブルの最終的な状態は次のとおりです:

#user_id#account_id#distinct_id
1甲A
2乙B
3丙null

5. 複雑なシナリオの分析​

最後に、複雑なシナリオでのユーザー識別を示します。理解しやすいように、主要なステップにおけるUserテーブルの構造を示しますので、各ステップの説明と照らし合わせてご確認ください:

ステップ#account_id#distinct_id#user_id
1nullA1
2甲A1
3乙A2
4nullB3
5乙B2
6丙B3
7丙C3
8乙C2
9丁D4
10nullC3

上記の複雑なシナリオを、ステップごとに分析します:

(1)新しい「ゲストID」"A"が渡され、新規作成された「ユーザーID」"1"と紐付けられます

(2)「アカウントID」"甲"が追加されます。「ゲストID」"A"はアカウントIDに紐付けられていないため、"甲"と"A"が紐付けられ、「ユーザーID」"1"に関連付けられます。

(3)「アカウントID」"乙"が追加されます。「ゲストID」"A"はすでに「アカウントID」"甲"に紐付けられているため、新規作成された「ユーザーID」"2"が"乙"に関連付けられます。このとき「アカウントID」"乙"は「ゲストID」に紐付けられていません。ID関連付けテーブルは次のとおりです:

#user_id#account_id#distinct_id
1甲A
2乙null

(4)ここで「ゲストID」"B"が追加され、新規作成された「ユーザーID」"3"が関連付けられます

(5)「アカウントID」"乙"と「ゲストID」"B"はどちらもID関連付けテーブルに存在するため、紐付けは行われません。このときのID関連付けテーブルは次のとおりです:

#user_id#account_id#distinct_id
1甲A
2乙null
3nullB

(6)「アカウントID」"丙"が追加されます。「ゲストID」"B"は「アカウントID」に紐付けられていないため、"丙"と"B"が紐付けられ、「ユーザーID」"3"に関連付けられます。このときのID関連付けテーブルは次のとおりです:

#user_id#account_id#distinct_id
1甲A
2乙null
3丙B

(7)「ゲストID」"C"が追加され、「アカウントID」"丙"と紐付けられます。このときのID関連付けテーブルは次のとおりです:

#user_id#account_id#distinct_id
1甲A
2乙null
3丙B, C

(8)「アカウントID」"乙"と「ゲストID」"C"はどちらもID関連付けテーブルに存在するため、ID関連付けテーブルは変化しません

(9)「アカウントID」"丁"と「ゲストID」"D"が追加され、両者が紐付けられて、新しい「ユーザーID」"4"に関連付けられます

(10)最後に、データには「ゲストID」"C"のみが含まれるため、関連付けられた「ユーザーID」"3"が返されます

最終的なID関連付けテーブルの構造は次のとおりです:

#user_id#account_id#distinct_id
1甲A
2乙null
3丙B, C
4丁D
このページは役に立ちましたか?