"多くのAmplitude分析はユニークユーザーの正確なトラッキングに依存します。これは多くの場合、思うより複雑です。プロダクトの性質により、ユーザーは自分の意思でログインまたはログアウトし、匿名でブラウジングし、複数のデバイスを使用していることがあります。
ユニークユーザーの正確なカウントを割り出すため、Amplitudeは、デバイスID、ユーザーIDおよびAmplitude IDの組み合わせを使用した解決法を採用しています。この記事では、そのプロセスの仕組みとこれらの各プロパティが持つ役割についてご説明します。
上記の通り、Amplitudeは、デバイスID、ユーザーIDおよびAmplitude IDという3つの異なるIDのシステムを使用してユーザーをトラックします。
ユーザーIDを設定するには、SDKドキュメンテーションに概要を示したsetUserIdメソッドを使用します。
様々なシナリオでAmplitudeがAmplitude IDをどのように生成するかを詳細にご説明します。
Amplitudeに広告主用の識別子(IDFA for iOS)と広告識別子(AdID for Android)をデバイスIDに使用するように指示することができます。詳細は、関連するSDKインスタレーションガイドをご覧ください。これにより、デバイスIDがインストール全体で保持されます。
iOSユーザーはデバイス上でIDFAをいつでもリセットできます。iOS 10では、ユーザーが広告のトラッキングを制限している場合、これによりすべて0からなるIDFAが生成されます。Amplitudeは代わりにデバイスIDをIDFVまたはランダム生成された文字列として設定します。
Androidユーザーはデバイス上のAdIDをいつでもリセットできます。
注意: AppleによるiOS 14のIDFAの変更について疑問がある場合は、こちらの記事をご覧ください。
2つの異なるドメイン間での匿名の動作をトラックできます。例えば、次の2つのドメインがあると想定してください:
サイト1で開始しサイト2にナビゲートする匿名ユーザーをトラックするには、サイト1からのデバイスIDをパラメータとしてサイト2に渡す必要があります。この後、渡されたデバイスIDでSDKを再初期化する必要があります。
amplitude.options.deviceId
からデバイスIDを取得します。amplitude.init('YOUR\_API\_KEY', null, {deviceId:'$DEVICE_ID'})
でAmplitude SDKを初期化します。このセクションでは、ユニークユーザーをトラックする際にAmplitudeが遭遇する一般的な状況についていくつか見ていきます。各状況について、AmplitudeがデバイスIDまたはユーザーIDを使用して、どのように新規のAmplitude IDを生成するか、または代わりに使用可能な既存のAmplitude IDの有無をどう判断するのかをご説明します。
プロダクトがユーザーIDを割り当てない場合、Amplitudeが特定のデバイスIDを初めて確認すると、Amplitude IDが生成されます。
デバイスID | ユーザーID | Amplitude ID |
---|---|---|
A | null | 1 |
B | null | 2 |
B | null | 2 |
C | null | 3 |
A | null | 1 |
C | null | 3 |
このセットには3人のユニークユーザーがいます。
ここでは、最初のイベントはデバイスAから発生しています。このデバイスの記録はないため、Amplitudeは新規のAmplitude ID「1」を割り当てました。
2つ目のイベントはデバイスBから発生しています。このデバイスの記録はないため、Amplitudeは新規のAmplitude ID「2」を割り当てました。
3つ目のイベントもデバイスBから発生しています。このデバイスの記録は既にAmplitudeにあるため、Amplitude ID「2」が割り当てられました。同じロジックがデバイスCにも当てはまります。
プロダクトがユーザーIDを割り当てる場合、ユーザーIDが使用されるまで、Amplitudeはそのデバイスで匿名で記録された過去のすべてのイベントが単一のユーザーのものであると仮定します。これらの両方のケースにAmplitude IDが使用されます。
デバイスID | ユーザーID | Amplitude ID |
---|---|---|
G | null | 4 |
G | null | 4 |
G | John | 4 |
このセットには1人のユニークユーザーがいます。
ここでは、最初の2つのイベントがデバイスGで匿名で記録され、Amplitude ID「4」が割り当てられています。3つ目のイベントはデバイスGから受け取った、ユーザーIDを含む最初のイベントです。AmplitudeはそのユーザーIDに同じAmplitude IDを匿名のイベントとして割り当てます。これにより、これら3つのすべてのイベントをJohnというユーザーが行ったということができます。
Amplitude IDを割り当てる際に、AmplitudeはデバイスIDよりもユーザーIDを優先します。
デバイスID | ユーザーID | Amplitude ID |
---|---|---|
K | Zack | 5 |
L | Zack | 5 |
このセットには1人のユニークユーザーがいます。
ZackというユーザーがデバイスKでイベントを発動し、Amplitude ID「5」が割り当てられました。ZackのユーザーIDが任意のデバイスで表示される度に、AmplitudeはデバイスIDに関わりなく自動的にAmplitude ID「5」を割り当てます。
少なくとも1つのユーザーIDが既にデバイスに関連付けられていることが確認された後にそのイベントが匿名で送信された場合、Amplitudeはその匿名のイベントが最後の既知のユーザーにより発動されたとみなして、そのユーザーのAmplitude IDを割り当てます。
デバイスID | ユーザーID | Amplitude ID |
---|---|---|
R | Jane | 6 |
R | null | 6 |
R | Mary | 7 |
R | null | 7 |
R | null | 7 |
このセットには2人のユニークユーザーがいます。
ここでは、JaneがデバイスRで最初のイベントを発動し、Amplitude ID「6」が割り当てられました。次のイベントは匿名で送信されましたが(たぶんJaneがログアウトした)、Janeが最後の既知のユーザーであるため、Amplitude ID「6」が割り当てられました。
3つ目のイベントはMaryがデバイスRで発動し、Amplitude ID「7」が割り当てられました。次の2つのイベントは匿名で発動され、AmplitudeはAmplitude ID「7」を割り当てました。Maryは最後の既知のユーザーであるため、これら2つのイベントを発動したとみなされました。
ユーザーを明示的にログアウトするか、またはイベントを匿名で記録したい場合は、ユーザーIDをnull
に設定し、新規のデバイスIDを再度生成する必要があります。その方法は、iOSまたはAndroid SDKドキュメンテーションの手順に従ってください。
デバイスID | ユーザーID | Amplitude ID |
---|---|---|
Y | David | 8 |
Z | null | 9 |
Z | David | 8 |
Z | null | 8 |
ここでは、DavidがデバイスYでイベントを発動し、Amplitude ID「8」が割り当てられました。
次に、匿名ユーザーがデバイスZでイベントを発動しました。このデバイスに関連付けられているユーザーは存在しないため、Amplitude ID「9」が割り当てられました。
次にDavidがデバイスZでプロダクトにログインしました。このイベントにはAmplitude ID「8」が割り当てられました。Amplitude ID「8」はDavidのAmplitude IDであるためです。
最後に、デバイスZでイベントが匿名で発動しました。このイベントにはAmplitude ID「8」が割り当てられました。Davidは最後の既知のユーザーであるため、イベントがDavidが発動したとみなされました。
このシナリオでは、デバイスZに1つのユーザーIDのみが関連付けられているにも関わらず、デバイスZの匿名のイベントには2つのAmplitude IDが割り当てられています。AmplitudeはAmplitude ID「8」と「9」がいずれも単一のユーザー(David)を参照していると解釈しています。 この場合、Amplitudeはこれら2つのIDを統合するため、1人のユーザーのみがカウントされます。この統合は、Amplitude ID「9」が割り当てられたイベントにユーザーIDが割り当てられていない場合にのみ起こります。
**注意:**Redshiftを使用している場合、データは不変であるため、匿名のイベントの生データはAmplitude ID「9」を含んでいます。詳しくは、下記の統合されたユーザーのセクションをご覧ください。
匿名ユーザー(デバイスIDのみを持つ)が実際はAmplitude IDを持つ識別されたユーザーであるとAmplitudeが判断した場合、統合されたユーザーの問題が起こります。
例えば、ユーザーが新しいデバイスを入手した場合、ユーザーはサインインする前にイベントをプロダクトに匿名で記録します。Amplitudeはこれらの匿名のイベントが新規ユーザーから発動されたものとみなすため、これらのイベントは新しいAmplitude IDにマップされます。
一方、ユーザーが既存のアカウントにログインすると、後続のすべてのイベントはそのユーザーの既存のAmplitude IDにマップされます。 このため次のような問題が起こります:
Amplitudeは、Amplitude IDのリストを「統合された」Amplitude ID(Amplitudeが同じユーザーから発動されたとみなしたAmplitude ID)の内部マッピングと相互参照して、この問題を解決します。これはダッシュボードでクエリする場合に発生します。ユーザーの統合IDはユーザーのユーザーアクティビティのページに統合時間と一緒に表示されます。
重要な注意:
ユーザーが統合された場合、イベントIDのカウントがデバイス単位で継続します。
デバイスID | ユーザーID | Amplitude ID | イベントID |
---|---|---|---|
A | null | 8 | 1 |
A | David | 8 | 2 |
A | David | 8 | 3 |
B | null | 9 | 1 |
B | David | 8 | 2 |
B | David | 8 | 3 |
プロダクトデータが完全に消去された場合(ユーザーがアプリを削除したりアンインストールした場合など)、イベントIDは「1」にリセットされます。ユーザーがアプリを削除またはアンインストールすると、Amplitudeは通常は新規のデバイスIDを生成し、続いて新規の統合がトリガーされます。
ユーザーが統合されると、新しいユーザープロパティの値で元のユーザープロパティの値が上書きされるため、変更することが想定されていなかったユーザープロパティの値(「開始バージョン」、「初期UTMパラメータなど)が「失われる」ことがあります。有料会員で上記の問題の影響がある方は、弊社サポートチームまでお問い合わせください。
"
Need help? Contact Support
Visit Amplitude.com
Have a look at the Amplitude Blog
Learn more at Amplitude Academy
© 2025 Amplitude, Inc. All rights reserved. Amplitude is a registered trademark of Amplitude, Inc.