はじめに
このページでは、ユーザIDがどのようにサイトをまたがってあるいは複数のブラウザやデバイスをまたがってトラッキングされているか、Cxense APIから得られる値や測定値がどのような意味を持つのか、そしてこれらの情報によって他のアナリティクス製品から得られる値との違いが説明できるのかについて説明し、さらには陥りやすい"落とし穴"や誤解についてもカバーしています。他のドキュメントですでにカバーされている部分もありますので、その場合にはここでは簡単な説明に留めて他のドキュメントを参照することにします。このページと併せて Retrieving user data も参照してください。
以下で「クロスサイトトラッキング」とは、foo.comサイトを訪れたユーザがbar.comサイトを訪れたユーザと同じであることを判別することを指します。「クロスデバイストラッキング」とは、デバイスA(例えばある携帯電話)を使っているユーザが別のデバイス(例えばあるラップトップPC)を使っているユーザと同じであることを判別することを指します。同一デバイス上の異なるブラウザを使用した場合も異なるデバイスを使用したことと同様に扱います。
ユーザIDの表現方法
ユーザには複数のIDが付与されています。曖昧さを排除するため、IDはtypeとvalueのペアで表現されます:
-
type ― 値(value)の衝突を避けるための名前空間としての役割を持ちます。例えば、二人のユーザがともにユーザ番号「5」を持っていたとしても、一方はAシステムによって付番されたもので、他方はBシステムによって付番されたものかもしれません。typeを持つことによりこのようなケースを区別することができます。typeにはカスタマープリフィックスが用いられ、お客様ごとの名前空間を確保しています。また、Cxenseが付与したユーザIDのためには"cx"という特別なtypeが使われます。
-
value ー 個々のユーザを参照するためのユーザIDの値です。typeとともに用いられることで一意に特定することが出来ます。
ユーザのプライバシとIDの種類
Cxenseは故意に個人を特定できる情報を収集あるいは保持することはありません。以下に記載する全てのIDやIDの種別は匿名(anonymous)のものです(メールアドレスのような匿名でない情報は可逆ではないハッシュ関数によって匿名化することができます)。
Cxenseでは3種類のIDを扱います:
-
1stパーティおよび3rdパーティクッキー – システムが付与するクロスサイトのID
-
インターナルクロスサイトID – システムが生成する。複数のクッキーが一つのクロスサイトIDに紐付けられる
-
外部クロスデバイスID – お客様によって提供されるユーザID。複数のクロスサイトIDが一つのクロスデバイスIDに紐付けられる
簡便化のため、インターナルクロスサイトIDを「CxenseユーザID」「グローバルユーザID」「グローバルID」あるいは単に「ユーザID」と呼んだり、また外部クロスデバイスIDのことを「外部ユーザID」「外部ID」「カスタマユーザID」呼ぶことがあります。
クロスサイトユーザID
Cxenseのシステムはいくつかの1stパーティおよび3rdパーティクッキーを使用し、匿名のユーザIDを取得しています。使われているクッキーとその意味についてはこちらのページを参照してください。ここで重要なのはこれらの値によって、異なるサイトを跨いだユーザのトラッキングは可能となりますが、異なるブラウザやデバイスを跨いだトラッキングはできないことです。同じユーザが別のデバイスを使用したり別のブラウザをインストールすると、それまでのクッキー値とは異なるため、別のIDが付与されることになります。したがってCxenseのユーザIDとはデバイスIDあるいはブラウザIDと言ってもよいもので、このIDによる測定値は異なるデバイスやブラウザをカウントするものであり、個々の人をカウントするものではありません。
クロスサイトユーザIDの取得と使用
Cxenseが付与するユーザIDはいくつかのAPIで取得することができます。例えば /traffic/data や /dmp/traffic/data における userId フィールドです。しかし一方で、cx.js の cX.getUserId() から得られるユーザIDはサイト毎に付与されたクッキーIDですが、それを用いてAPIを読んだ場合でも自動的にクロスサイトユーザIDにマッピングされます。このため、type "cx" の指定ではどちらのユーザIDを使用することができ、どちらの値でもシステム側は問題なく理解することができます。このタイプのIDは /profile/user, /profile/user/segment および Traffic APIのユーザIDフィルタで type 'cx' として、また /profile/user/external/link, /profile/user/external/link/update で cxid として用いることができます。
クロスデバイスユーザID
ユーザをブラウザやデバイスを跨いでトラッキングするために、カスタマプリフィックスと紐付けられたID(外部ID)とCxenseユーザIDとをマッピングを定義する方法を提供しています。IDのマッピングは cx.js の cX.addExternalId() 関数を用いるか、/profile/user/external/link/update APIを用いて定義することができ、またマッピング情報は /profile/user/external/link APIで取得することができます。幾つかのAPIではこの外部IDが返され(例えば、/traffic/data, /dmp/traffic/data (externalUserIds) や /profile/user (identities) )、ユーザIDフィルタではこのIDを使うことができます。さらには以下のAPIでは外部IDのみを扱います: /traffic/user, /profile/user/external/read, /profile/user/external/update, /profile/user/external/delete
クロスサイトでのユーザ数、クロスブラウザ/デバイスでのユーザ数
ほとんどの Traffic や DMP API(例えば /traffic や /dmp/traffic)は uniqueUsers を返しますが、その数はAPIリクエストのフィルタ条件に合致するクロスサイトユーザIDの数であり、物理的なユーザ数ではありません。
現時点では、外部IDをカウントするには /traffic/user を用いるか(ただし返却できるユーザID数に上限があります)、/traffic/data の出力をパースしてIDの数を数える方法しかありません。/traffic/data を用いる方法の場合、implodeUsers フィルタを使用することで殆どの重複する外部ユーザIDのイベントを省くことができます(クロスサイトIDごとに1イベント)。
また、Cxenseシステムでの計測値と他のベンダでの計測値との差異についてはこちらで説明しています。
よくある誤解
以下ではいくつかのよくある誤解や陥りやすい誤りについて解説します。
ユニーク外部ID vs. uniqueUsers
外部IDは複数のクロスサイトIDにマッピングされるため、/traffic APIで返される uniqueUsers の値は /traffic/user APIで返される外部ユーザIDの数よりも大きくなります。実際、/traffic/user の応答の uniqueUsers はいくつのクロスサイトIDが外部IDにマッピングされているかを示します。さらには、/traffic/user で返される外部IDの数がAPIの上限よりも少ない場合には、/traffic/userの応答の uniqueUsers 値の合計は /traffic の応答と等しくなります。
IDマッピングによる誤判定
/traffic/user にNOTフィルタを使って外部IDを取得した際には以下のような問題が生じることがあります。例えば「バルセロナからアクセスしたことがないユーザ」を意図して以下の様なフィルタを掛けてみます:
|
このAPIから返されたIDを個別に調べるため、 /traffic/event で "groups":["city"] としてユーザIDフィルタを掛けてみます。すると、上記の条件で返されたユーザIDであるにも関わらず、バルセロナに行ったことがあるユーザが含まれていることがあります。この原因は、外部IDにマッピングされたクロスサイトIDのうちの1つ(あるいは複数)が上記のフィルタ条件にマッチし、他のIDがマッチしていなかったというものです(例えばあるユーザがタブレットを持ってバルセロナに旅行したが、ラップトップは家に置いたまま、というようなケース)。この場合に /traffic/user は両方のクロスサイトIDにマッピングされている外部IDを返します。この例では、同じフィルタ条件による /traffic/data の出力を調べると、externalUserIds が同一でも userId の異なるラップトップのイベントが「誤検知」されていることがわかります。
ユーザフィルタ、exlodeUsers, implodeUsers
現時点では、explodeUsers や implodeUsers では外部IDマッピングは考慮されていません(すなわち外部IDとマッピングされているかどうかに関わらず、同じブラウザ/デバイスからの全て(explodeUsers)あるいは最初か最後(implodeUsers)のイベントが取得されます)。一方で userフィルタは一つの外部IDのみを評価します(すなわち一つの外部IDタイプを指定して他のタイプへ拡張することはできません)。