【書評】アトリビューション -広告効果の考え方を根底から覆す新手法-(著:田中弦 氏他)

僭越ながら、『アトリビューション -広告効果の考え方を根底から覆す新手法-(著:田中弦 氏他)』の書評をさせていただきます。

アトリビューションの現在を理解するためには、これ以上はない本だと思いますので、仕事でアトリビューションに関わりがある方は押さえておきたい良書です。

ただ私が期待していた内容とはちょっと違ったので残念でした。本書の序文で高広伯彦氏が書かれていたことが、まさに私の期待していたことだったのでワクワクして読み進めていたのですが、ちょっと消化不良の感を否めません。

本書にもあるようにアトリビューションは「コンバージョンした流入元以外も評価して広告予算を最適化するためのもの」と説明されることが多いように思います。しかし多くの方が既に気付いているとおもいますが、アトリビューションの本当の価値は広告予算の最適化だけではなく、もっと深くユーザとのコミュニケーション全体を最適化することのはずです。じゃないと、こんなにみんな騒いでないと思います。

言い換えると、「消費者がどんなメディアに接触して、それによって感情や行動にどのような変化が起きたのか」を把握して分析してマネジメントすることではないかと思います。

確かにまだまだ技術的な多く問題があり、オンラインでのメディア接触のみを評価する方法が主流ではありますが、それでもアトリビューションの目的は「広告予算の再配分」が全てではなく、目的の中心は「ユーザとのコミュニケーションの最適化」であるべきです。

本書の著者もその点は把握済みであるように読めましたが、このアトリビューションの明るい未来についての記述が少なかったことは、本書の残念なところでした。

高広伯彦氏の『次世代コミュニケーションプランニング』を読んでから、「コンテクスト」と「ソーシャル」と「アトリビューション」とが頭の中をぐるぐる回っていて、これら(+α)がどこかで収束して新しい考え方が生まれるのではないかと思っているのですが、本書がその収束点のヒントを示してくれるかと期待していたため、その意味において少し残念だった次第です。

繰り返しますが、アトリビューションの現在を押さえておくという目的では良書だと思いますので、一読の必要はあると思います。

GAIQ(Google Analytics Individual Qualification)に合格しました

先週のことなのですが、GAIQを受験しまして何とか合格できました。正答率は95%でした。

だから何だと言われると閉口してしまいますが、個人的にこのような資格を取ったのは初めてでしたので、「○○ホルダー」と名乗れること自体には興奮しています。

試験に合格するためのポイントとしては、

  • 問題はかなり難しいと思いました。きちんと仕様を理解していないと答えられないものが結構あります。
  • レッスンツールにあるスライドを満遍なく理解してください。基本的なところからも出題されます。
  • 英語があまり得意でないので、問題文の理解には苦しみました。別ウィンドウでGoogle翻訳やgoo辞書を常に表示しながら回答しましょう。
  • とは言え、70問中14問も間違えることができるので合格の難易度自体はそれほど高くないと思います。

 

資格の有効期限は18ヶ月なんですね。資格取得しても頑張って勉強を続けてください、というGoogleさんの愛情でしょうか。有難いですね。

 

【GA】同じドメイン内に別サイトがある場合には、_setCookiePath()をしよう

例えば、

http://www.domain.com/

というURLのサイトと、同じドメインのサブディレクトリにある別サイト

http://www.domain.com/directory/

があった場合、かつ両サイトともにそれぞれ別のプロパティ(WebプロパティID)でGoogleアナリティクスを利用していた場合、ちょっと注意が必要です。

ご存知の通り、Cookieはドメインとパスで管理されています。そして、Googleアナリティクスはユーザの識別や参照元の情報にCookieを使用しています。

上記のURLの場合、Googleアナリティクスのデフォルトでは下記のようにドメインとパスを指定します。

ドメイン: .domain.com
パス: /

そして、このパスはこのCookieを適用するディレクトリの最上位のパスを示しています。つまり解析対象ページのパスが「/」配下でも、「/directory/」配下でも、同じCookieが適用されるのです。

さらに厄介なことに、このCookie情報にはWebプロパティIDの情報が含まれていません。つまりドメインとパスの指定範囲内のURLであれば、例えばGoogleアナリティクスのプロパティが別であっても、同じCookieが利用されるのです。

これがどういう問題を起こすかというと、例えば上記の例のようなサイト構成になっていた場合で、下記のような遷移をユーザが行った場合。

検索エンジンで「meaningfree」を検索 → http://www.domain.com/にランディング → http://www.domain.com/directory/に移動

この場合、http://www.domain.com/directory/のサイトの参照元には、「http://www.domain.com/」と記録されるべきですが、実際には「meaningfreeというキーワードで検索」という参照元が記録されてしまいます。

もう1つ例を言うと、www.domain.comのドメイン配下のサイトに一度も訪れたことがない、つまり新規ユーザが、

  • 検索エンジンで「meaningfree」を検索 → http://www.domain.com/にランディング → サイト離脱
  • 次の日に検索エンジンで「meaningfree 最高」を検索 → http://www.domain.com/directory/にランディング

という2つの遷移をした場合、http://www.domain.com/directory/のサイトへのアクセスも新規ユーザとして記録されるべきなのですが、これはリピートユーザになってしまいます。

 

ということで、こういう場合は_setCookiePath()というGoogleさんが用意してくれた関数を使って、Cookieのパスをサブディレクトリに制限しましょう。


<script type="text/javascript">
 var _gaq = _gaq || [];
 _gaq.push(['_setAccount', 'UA-00000000-1']);
 _gaq.push(['_setCookiePath', '/directory/']);
 _gaq.push(['_trackPageview']);

(function() {
 var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
 ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
 var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
 })();
</script>

また、

1つのサイトが/directory/と/directory2/にまたがる場合には、_cookiePathCopy()でCookieをもう1つのディレクトリにコピーしましょう。

<script type="text/javascript">
 var _gaq = _gaq || [];
 _gaq.push(['_setAccount', 'UA-00000000-1']);
 _gaq.push(['_setCookiePath', '/directory/']);
 _gaq.push(['_trackPageview']);
 _gaq.push(['_cookiePathCopy', '/directory2/']);

(function() {
 var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
 ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
 var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
 })();
</script>

<script type="text/javascript">
var _gaq = _gaq || [];
_gaq.push(['_setAccount', 'UA-00000000-1']);
_gaq.push(['_setCookiePath', '/directory2/']);
_gaq.push(['_trackPageview']);
_gaq.push(['_cookiePathCopy', '/directory/']);

(function() {
var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
})();
</script>

です。

特に2つのサイトの制作会社が違う場合、上記のようなCookie共用問題が発生してしまいがちです。
本当に気をつけましょう。本当に…。

ランチ・ディサイダー

今日のお昼ごはんは何にする!?
迷ったときはおまかせ!ランチ・ディサイダー!!

 

今日の天気は?

今日の気分は?

好きな食べ物は?

好きなオリュンポス十二神は?

 

あなたの今日のお昼ご飯は… 

 


 

<注>
ランチ・ディサイダーはジョークです。

  • 一生懸命好きなオリュンポス十二神を考えたのに、どの神を選んでも結果が一緒
  • 毎日使っていたら、偏食でコレステロール値が上がってしまった
  • カレーライスとうどん以外も食べたい

などの苦情には申し訳ございませんがお応えができません。もし実際に利用される際は、副菜で野菜などを併せて摂取するように心がけてください。

なお、100分の1の確率でカレーうどんが出てきますが、それでも偏食は避けられませんのでご容赦ください。

【GA】GoogleアナリティクスでFlashを解析するときにはgaforflashは使わないほうがいい

Adobeが開発している(していた?)Googleアナリティクス用Flashライブラリのgaforflash

Google公式ヘルプにも「これ使ってね」と書かれているので使ってみているのですが、どうもデータが正常に取得できていないみたいです。

あるサイトで、gaforflashを使ってFlashムービー内にイベントを仕込んでいたのですが、GA管理画面を見てみると、ランディングページが(not set)になっている謎の訪問が結構な数でカウントされていました。しかも訪問別ページビューは0ページ、平均サイト滞在時間も0秒。アドバンスドセグメントでランディングページnot setをフィルタリングして見ましたところ、ページビューも参照元も何もかも記録されていない本当に謎の訪問でした。

これは何かおかしいぞ、ということでFiddler使ってGATCリクエストを追ってみたところ、原因らしきものが分かりました。

まず予備知識として、このサイトはHTML内に最新の(非同期の)トラッキングコードを記述しています。ですので、HTMLが読み込まれたときには、http://www.google-analytics.com/ga.jsが実行されてGATCリクエストが行われます。つまりは最新のga.jsによってGATCリクエストが処理されているわけです。

一方でFlashムービー内のイベントは最新のga.jsを使わず、gaforflashを使ってGATCリクエストを処理しています。gaforflashはライブラリ内部にga.jsと同じ働きをするActionScript(?)を持っていて、このライブラリ内部のga.jsもどきが古いのです。

このサイトでHTMLの読み込みとFlash内イベントを繰り返してみたところ、下記のようになりました。

まず、__utmwv。これはGAの記述のバージョン表記のようなのですが、

  • 最新のga.js: 5.2.5
  • gaforflash: 4.3as

明らかにgaforflashが古いことを明示していますね。

で、問題なのが__utmaの内容です。HTML→Flashイベント→HTML→Flashイベントとリクエストをしてみたところ、

リクエスト __utmaの内容
HTML 123456789.1141210827.1332121270.1332121270.1332121270.1
Flash 123456789.2665786856792290000.1324019656.1332121182.1332121270.15
HTML 123456789.1141210827.1332121270.1332121270.1332121270.1
Flash 123456789.2665786856792290000.1324019656.1332121270.1332121824.16

となっていました。__utmaの内容は

ドメインのHash.ユーザ(ブラウザ)識別値.初回訪問日時.前回訪問日時.今回訪問日時.訪問回数

です。これはバージョンに関わらず同じ形式のようです。

まず問題点はユーザ(ブラウザ)識別値。HTML(最新のga.js)は”1141210827″で、イベント(gaforlash)は”2665786856792290000″と数値が異なります。ということはおそらく別のユーザとして認識されているはずですので、HTMLとイベントはそれぞれ別のユーザ(=別の訪問)と見なされていると思われます。

さらに2つのイベントの前回訪問日時と今回訪問日時と訪問回数を見て下さい。1回目のFlashイベントでは今回訪問日時が”1332121270″で訪問回数が”15″となっていますが、2回目のFlashイベントでは前回訪問日時が”1332121270″で訪問回数が”16″となっています。つまりはイベント1つ1つが別の訪問としてカウントされているのです。

これはランディングページが(not set)になっている謎の訪問の謎が解けた気がします。とても残念な結果なのですが・・・。ランディングページnot setの正体はFlash内のイベントが1つ1つ別の訪問としてカウントされていたもので、イベントしか実行されていない訪問なので、ページビューも参照元も記録されておらず、訪問ではあるものの中身に何のデータもない手品みたいな訪問だったということです。

ということでFlash内のイベントを計測するときは、gaforflashは使わず、最新のga.js内に記述されている_trackEventや_trackPageviewをExternalInterface.call的な方法でcallするようにしましょう。これ絶対。