logo

簡単で奇麗で便利なGoogle Analyticsですが、閲覧時間に関しては信用しない方が賢明です。

あとで読む いつまでたっても あとで読む - FIFTH EDITION
これ見ればわかりますが、9割以上のアクセスが、10秒以内で、うちのサイトを離脱しているわけです。(10秒しか閲覧してない)

そのことを示す前に、Google Analyticsがどんな仕組みで動いているのかを見てみましょう。

Google Analyticsに加入すると、解析したいサイトに、以下のJavaScript Codeを埋め込むよう言われます。

<script src="http://www.google-analytics.com/urchin.js" type="text/javascript">
</script>
<script type="text/javascript">
//<![CDATA[
_uacct = UA-"XXXXXX-Y";
urchinTracker();
//]]>
</script>

ブラウザーはこれにより、アクセスの都度http://www.google-analytics.com/urchin.jsを読み込み、urchinTracker()という関数を実行するようになります。このurchin.js、はっきり言って名前の通り頭がウニになりそうな代物なのですが、それでもざっと解析すると、結局やっていることは全domainに対して有効なcookieを設定して、ダミー画像にアクセスするだけです。

Cookieの中身は、こんな感じになります。

__utma=123456789.9876543210.8765432109.7654321098.6543210987.1;
__utmb=123456789;
__utmz=123456789.8765432109.1.1.utmccn=(from_how)|utmcsr=(from_domain)|utmcmd=(from_dir)
__utmc=123456789;

そして、ダミー画像のURLはこんな感じです(もちろん本物は改行もスペースもコメントもなしの一行)

http://www.google-analytics.com/__utm.gif?
 utmwv=1                 # 不明;固定数値の模様
&utmn=1234567890         # ランダム数値;キャッシュ抑制のため? 
&utmcs=character_coding  # utf-8
&utmsr=screen_resolution # 1024x768
&utmsc=color_depth       # 32-bit
&utmul=language          # en
&utmje=java_enabled      # 1
&utmfl=flash_version     # 9.0%20r28
&utmhn=host_name         # www.example.com
&utmr=referer            # http://www.example.com/from.html
&utmp=path               # /directory/file.html
&utmac=account           # UA-XXXXXX-Y
&utmcc=encoded_copy_of_cookie

ここで、今までの観察をまとめてみましょう。

  1. urchinTracker()は、ページがロードされた時だけ実行される
  2. urchinTracker()が実行されると、http://www.google-analytics.com/__utm.gif?...にアクセスする

そうなのです。Google Analyticsでは、直接的には「ページを去る」というイベントは負っていないのです。もしそれをやろうとすれば、unload eventを引っ掛けなくてはなりませんが、ブラウザーを観察した限りではそのような挙動は見られませんし、urchin.jsの中にもそのような記述はありませんでした。

それでは、一体Google Analyticsはどうやって滞在時間を推測、いえ、憶測しているのでしょうか?

わけわかめなソースをさらに読み解いて行くと、上のcookieの例の123456789がドメインのIDに相当することと、そして__utmbが滞在時間の判定に用いられているらしいことが判明します。なぜ__utmbが滞在時間の判定に用いられているらしいと推測できるかというと、このcookieは1800秒でexpireされるよう設定されるからです。

ここで__utmbに関する観察をまとめます。

  1. 全domainで有効なcookieの一つ
  2. ドメインに対して紐付けされている
  3. 1800秒でexpireする

以上の情報から、あなたならどうやって滞在時間を憶測しますか?

現在アクセスしているドメインが、__utmbのドメインと異なる時、滞在が終わったとみなす

という実装にするはずです。

もしそうだとしたら、tabや別windowで現在閲覧中のドメイン外のサイトにアクセスしたとたん、urchin的には滞在は終了ということになります。一昔前ならとにかく、タブブラウザーが普及した今は、気になるページは開きっぱなしにするのがむしろ普通ではありませんか?私は10以上のウィンドウに、それぞれ10以上のタブを表示しっぱなしにすることも珍しくありません。

はっきり言いましょう。

この「滞在時間」というのは、Urchinに限らずWeb的には全くあてになりません。ジオングの足よりもあてになりません。なにしろHTTPの世界では、本来statelessな--状態遷移がない--ものを、cookieなどを使って疑似sessionを作っているわけですから、どこかで無理が生じます。「滞在時間」というのはその最もたるものです。

状態遷移のあるsessionの場合は、少しは当てになります。たとえばUnixでは、wtmpというファイルにloginだけではなくlogoutの時間も記録されます。しかしそれですら、最近は端末ウィンドウをいくつも開きっぱなしにして、logoutしないなどということがごく一般的になって、これまたあてになりません。アカウント利用を時間課金していた大昔ならとにかく、今では不正侵入の発見ぐらいにしか使わない情報となってきています。

よって、結論は以下のとおりとなります。

滞在時間なんてただの飾りです。スーツな人にはそれがわからんのです

Dan the Urchin Tracked