私たちは、ネット×リアルビジネスを最大効果へ導くファシリテーション型コンサルティング企業です。 お問い合わせ

Nexalコラム

全て(385件)

GoogleAnalyticsのCookieは、なぜサードパーティCookieではなく、ファーストパーティCookieなのか?



ブログをご覧頂いている皆さん、こんにちはニコライです。Nexalではテクニカルエンジニアとして勤めています。技術的な観点から、皆さんの業務にお役立て頂けそうな情報を更新して参ります。今後とも宜しくお願いします。

初投稿のお題は、GoogleAnalyticsのCookieについてです。

公式ヘルプによると、GoogleAnalyticsではアクセス解析の仕組みとしてCookieを利用しており、且つそれはファーストパーティCookieであると謳われています。ただ、これには合点がいかない方も多くおられるようです。「Googleのサーバと通信しているのだから、サードパティではないのか?なぜファーストパーティ?」という疑念があるからです。以下が公式ヘルプの一文です。「GoogleAnalyticsはファーストパーティである」ことが明示されています。
詳細はリンク先を参照して頂ければ幸いです。
Google アナリティクスはユーザー セッションの定義に Cookie を使用します。Google アナリティクス レポートのさまざまな主要機能も Cookie に依存しています。Google アナリティクスはレポートに必要なデータを収集するためにのみ Cookie を設定して更新します。さらに、Google アナリティクスはファーストパーティ Cookie のみを使用します。これは、Google アナリティクスがお客様のドメインに設定するすべての Cookie は、そのドメインのサーバーにのみデータを送信することを意味します。つまり、Google アナリティクス Cookie は実質的にそのウェブサイト ドメインの私有物であり、他のドメインのサービスがデータを変更したり取得したりできないようになっています。
GoogleAnalyticsヘルプ http://code.google.com/intl/ja/apis/analytics/docs/concepts/gaConceptsCookies.html

この記事では、GoogleAnalyticsがなぜファーストパーティCookieなのかについて解説します。

理解を助けるため、下記の流れで説明します。
1. ファーストパーティとサードパーティの違いについて
2. GoogleAnalyticsが利用するCookieについて
3. Cookie発行の流れとオーナーについて
4. 結論

1. ファーストパーティCookieとサードパーティCookieの違いは?



GoogleAnalyticsのCookieについて解説する前に、まずはファーストパーティCookieとサードパーティCookieの違いについておさらいしておきましょう。これらをしっかり理解していると、最終的な納得感が高まるはずです。両者の定義は非常にシンプルで、”ユーザがブラウザでアクセスしているドメインが発行しているCookie”なのか(=ファーストパーティCookie)、それとも”第三者ドメインが発行しているCookie”なのか(=サードパーティCookie)という違いしかありません。ただ、これだとあまりにもシンプルすぎて、逆にピンとこないので、具体例で説明します。

具体例)
ページ内にバナー広告を含むWebサイト「www.example.co.jp」に、ユーザがアクセスするケースを想定します。ちなみに、当該Webサイトは下記のような特徴を持っているものとします。
・コンテンツは「www.example.co.jp」内にあるが、バナー広告は「www.adserver.co.jp」から配信されている。
・「www.example.co.jp」、「www.adserver.co.jp」いずれのドメイン(ホスト)も、ユーザに対してCookieを発行している。

ユーザが「www.example.co.jp」へアクセスすると、ブラウザ上にコンテンツとバナー広告が表示されます。広告は「www.adserver.co.jp」から配信されていますが、それはあくまでもバックグラウンドでの処理であるため、ユーザから見れば、「www.example.co.jp」へアクセスしているようにしか見えません。それぞれのドメインへアクセスすることにより、ブラウザに対してCookieが発行されます。このとき、「www.example.co.jp」から発行されるCookieがファーストパーティであり、「www.adserver.co.jp」がサードパーティとなります。以上の流れを図示したのが、下記です。

WebアクセスとCookieのやりとり

解説)
前述の定義と照らし合わせてみて下さい。ユーザがアクセスしているWebサイトは「www.example.co.jp」であることから、このドメインから発行されるCookieはファーストパーティとなります。「www.adserver.co.jp」ドメインは、「www.example.co.jp」から見て第三者のドメインと言えることから、ここから発行されるCookieはサードパーティとなります。ただし、「sub.example.co.jp」のような「www.example.co.jp」のサブドメインがCookieを発行する場合は、ファーストパーティとなるので、この点は注意が必要です。繰り返しになりますが、"ユーザが明示的にアクセスしているドメインから発行されるCookieなのか否か"が、ファーストパーティとサードパーティの違いとなります。

2. GoogleAnalyticsが解析に利用しているCookie



おさらいができたところで、次のお題に移りましょう。

今回のテーマを理解するためには、まずGoogleAnalyticsがどんなCookieを利用しているのかを知ることが重要です。そこで、GoogleAnalyticsの解析で利用される代表的なCookieをいくつか上げてみます。
「__utma」 - ユニークユーザを識別するためのCookie。設定/更新から2年間有効で、その間の再来訪なら1人のユーザとしてカウントされる。
「__utmb」 - セッションを識別するためのCookie。リクエストの間隔が30分以上になると、期限切れとなる。
「__utmc」 - __utmbとあわせてセッションを識別するCookie。ブラウザを閉じると期限切れとなる。
etc...

Cookieには、名称/パラメータ/ドメイン/パス/セキュリティレベル/有効期間 といった属性が設定されていますが、上述の「__utma」が名称にあたる部分です。これらのCookieにパラメータを記録しておくことで、GoogleAnalyticsはアクセス解析に必要なデータを収集しています。

ここでは「Cookieには属性(名称など)がある」ということと、「GoogleAnalyticsが使っているCookieには、__utmaや__utmbといった名称のCookieがある」ということが理解できれば十分です。

GoogleAnalyticsで使用するCookieについて、更なる詳細が知りたい方は、公式のヘルプ(https://developers.google.com/analytics/devguides/collection/analyticsjs/cookie-usage?hl=ja)を参照して下さい。

3. GoogleAnalyticsにおけるCookie発行の流れ



ここからが、いよいよ本テーマの中核です。

GoogleAnalyticsの解析タグを実装しているWebサイトにアクセスしてから、Cookieが発行されるまでのフローについて整理します。尚、できるだけ具体的に説明するため、筆者のプライベートなWebサイト「www.pathfindergate.com」(GoogleAnalyticsの解析タグ実装済)を例に解説させて頂きます。

ここでは2つのフローにわけて解説します。1つ目は初回アクセス時のフローで、2つ目は2回目以降のアクセスのフローです。前者はCookieを持たない状態でアクセスしてからCookieを付与されるまでの状態を表しており、後者はCookieを持った状態でアクセスし、そのCookieが対象サーバと通信される状態を表しています。

まずは1つ目のフローを図で見て下さい。
初回アクセス時のフロー

初めて「www.pathfindergate.com」にアクセスする状態のブラウザは、当然ながら対象サーバのCookieを持っていません(上図-①)。サイトトップのページにアクセスすると(上図-②)、サーバ「www.pathfindergate.com」はindex.htmlを返しますが(上図-③)このやり取りにおいてCookieが送受信されることはありません。index.htmlを受け取ったブラウザは、htmlコードを読み解き、CSSや画像ファイルなどをリクエストしていきます(上図-④)。GoogleAnalyticsタグのJavaScriptコードも同様に処理されますが、jsソースは「www.google-analytics.com」サーバに設置されているため、ga.jsファイルの要求と回答の通信が発生します(上図-⑤⑥)。この時点ではCookieは発行されていないので、google側のサーバとcookieがやり取りされることはありません。

ga.jsがブラウザ側で実行されて、初めてGoogleAnalytics用のCookieがブラウザにセットされます(上図-⑦⑧)。JavaScriptであるため、Cookieのセット処理は完全にクライアントサイドで完結していますが、「www.pathfindergate.com」がCookieのオーナー(ドメイン)として登録されます。(*1) その後、ga.jsによる情報収集(アクセス解析に必要な情報を集めて整理する)が行われ、これらの情報がgif画像要求のパラメータに乗せて、Google側へ送信されます(上図-⑨)。前述の通り、発行されているCookieのオーナーは「www.pathfindergate.com」であることから、「www.google-analytics.com」サーバに対してCookieは送信されません。(*2)

次いで、2つ目のフローを図で見て下さい。
2回目以降のアクセス時のフロー

既に「www.pathfindergate.com」へアクセスしたことのあるブラウザは、すでにGoogleAnalytics用のCookieを持っています(上図-①)。前述の通り、これらCookieのオーナーは「www.pathfindergate.com」であるため、サイトトップのページにアクセスする際にはCookieが送信されます(上図-②)。(*3)

Cookieはオーナーとなるサーバとしかやり取りされないことから、「www.google-analytics.com」との通信においては送受信されません(上図-⑤⑨)。

(*1) CookieのオーナーはGoogleではない
GoogleAnalyticsで使用するCookieについて、ドメインを確認すると、確かに「www.pathfindergate.com」になっています。


(*2) GoogleAnalyticsのCookieは、Google側に送信されない
ブラウザに記録されているCookieは、基本的に対象Cookieのオーナーとなるサーバ(つまり発行元のドメイン)以外に送信されることはありません。前述の通り、GoogleAnalyticsが解析で使用するCookieのオーナーは「www.pathfindergate.com」であるため、それ以外のドメインにCookieが送信されることはありません。下記はGoogleAnalyticsへのリクエスト情報です。送信情報の中にCookieが含まれていないことがわかります。(リクエストパラメータ内にある「__utma」は、cookieから抽出した情報をURLのパラメータとして送信しているに過ぎません。Cookieを直接送信しているわけではありませんので注意です。)
http://www.google-analytics.com/__utm.gif?utmwv=5.2.6&utms=1&utmn=1633931009&utmhn=www.pathfindergate.com&utmcs=UTF-8&utmsr=1600x1200(・・・以降省略)GET /__utm.gif?utmwv=5.2.6&utms=1&utmn=1633931009&utmhn=www.pathfindergate.com&utmcs=UTF-8&utmsr=1600x1200&utmvp=615x155&(・・・以降省略)
Host: www.google-analytics.com
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:11.0) Gecko/20100101 Firefox/11.0
Accept: image/png,image/*;q=0.8,*/*;q=0.5
Accept-Language: ja,en-us;q=0.7,en;q=0.3
Accept-Encoding: gzip, deflate
Connection: keep-alive
Referer: http://www.pathfindergate.com/index.htmlHTTP/1.1 200 OK
Date: Fri, 06 Apr 2012 01:19:14 GMT
Content-Length: 35
X-Content-Type-Options: nosniff
Pragma: no-cache
Expires: Wed, 19 Apr 2000 11:43:00 GMT
Last-Modified: Wed, 21 Jan 2004 19:51:30 GMT
Content-Type: image/gif
Cache-Control: private, no-cache, no-cache=Set-Cookie, proxy-revalidate
Age: 282678
Server: GFE/2.0


(*3) オーナーである「www.pathfindergate.com」に対してCookieは送信される
下記は「www.pathfindergate.com」に対するリクエスト情報です。index.htmlの要求時にブラウザのCookieが送信されていることがわかります。Cookieの名称が「__utma」であることから、GoogleAnalyticsのCookieが送信されていることがわかりますね。
http://www.pathfindergate.com/index.htmlGET /index.html HTTP/1.1
Host: www.pathfindergate.com
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:11.0) Gecko/20100101 Firefox/11.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: ja,en-us;q=0.7,en;q=0.3
Accept-Encoding: gzip, deflate
Connection: keep-alive
Cookie: __utma=xxxxxxxx.xxxxxxxxxx.xxxxxxxxxx.xxxxxxxxxx.xxxxxxxxxx.x; __utmz=xxxxxxxx.xxxxxxxxxx.x.x.utmcsr=(direct)|(・・・以降省略)HTTP/1.1 200 OK
Date: Mon, 09 Apr 2012 07:50:31 GMT
Server: Apache/1.3.42 (Unix) mod_ssl/2.8.31 OpenSSL/0.9.8e
Last-Modified: Sun, 11 Mar 2012 13:50:34 GMT
Etag: "1d6f-4f5cadaa"
Accept-Ranges: bytes
Content-Length: 7535
Keep-Alive: timeout=5, max=20
Connection: Keep-Alive
Content-Type: text/html

※ Cookieのパラメータ部分は、マスキングしています。

4. 結論


これまでの説明をまとめると、下記のことが言えます。

・GoogleAnalyticsが、解析用に発行するCookieのオーナーは、Googleサーバではない。
・Cookieのオーナーは、GoogleAnalyticsのタグを実装しているWebサイトである。
・GoogleAnalyticsのCookieは、Googleサーバとの通信時には、送信されない。

GoogleAnalyticsが解析のために利用するCookieは、ユーザがアクセスしているWebサイトがオーナーとなっています。これがGoogleAnalyticsのCookieがファーストパーティCookieであるといわれる所以です。そして、GoogleがファーストパーティCookieにこだわる理由は、ユーザのアクセス情報を正確にトラッキングしたいからです。

上記記事の通り、GoogleAnalyticsはCookieの仕組みを利用してユーザのアクセス情報を収集しています。尚、記事中では触れていないものの、Cookieを利用することで「ユニークユーザの識別」「訪問回数や時間の把握」「セッションの始点・終点の特定」といったことを実現しており、この仕組みのお蔭で我々はユーザのアクセスを詳細に知ることができるのです。そのため、これらのCookieがブロックされたり、削除されてしまうと正確なトラッキングができなくなってしまいます。

特に昨今はプライバシー保護やセキュリティ意識の高まりから、サードパーティCookieをブロックしたり、セキュリティソフトによって削除されるケースが増えています。ファーストパーティCookieを採用することで、それらの影響を排した正確なアクセス情報のトラッキングが実現できるという点が、GoogleAnalyticsの大きな優位性と言えるでしょう。

ほんと、仕組みを知れば知るほど、「Google先生すごい!」と感じます。




関連するコラム

Copyright©Nexal, Inc. All Rights Reserved.