Google Analytics(analytics.js版)をカスタマイズしていろいろなデータを集計する(PHPファイル使用版)

記事「マクロ解析とミクロ解析 データの大切さを理解しよう」にてデータ取得の大切さを,そして記事「マーケティングツールは利用規約や情報の取り扱いの重要性を理解して使用しよう」にてデータ取得時の取り扱い等の注意点を述べました.それでは実際にGoogle Analytics(注意:カスタムディメンション機能を使うのでユニバーサルアナリティクスanalytics.js以降を使う必要があります.本記事はユニバーサルアナリティクスが対象です)を使ってデフォルト以外のデータを取得するためのトラッキングコードのカスタマイズ方法を紹介したいと思います.取得することを考えているデータは,クライアントID,IPアドレス,アクセス時間,パス,ユーザーエージェントです.取得するための方法はいろいろありますが,本記事はPHPファイルを使った方法を紹介します(PHPファイルを使って取得するものはIPアドレスとアクセス時間で,他はJavaScriptのコードをカスタマイズして取得します).

 

1.取得する情報の説明

まず,クライアントIDとはGoogle Analyticsで使われているファースパーティークッキーです.詳しくは下記などを参照してください.

ユーザー指標の識別方法

https://support.google.com/analytics/answer/2992042?hl=ja

一部抜粋:

Google アナリティクスでは、トラフィックがどのユーザーに由来するかを確認するために、各ユーザーに関連付けられた固有の ID が各ヒットと合わせて送信されます。この ID として使用できるのは、Google アナリティクス クライアント ID を保存する _ga という名前の単一のファースト パーティ Cookie、または、クライアント ID と組み合わせて使用する User ID 機能です。

クライアントIDとUserID

https://support.google.com/analytics/answer/6205850?hl=ja#clientid-userid

User IDは別途設定しないといけませんが,Google Analyticsを使用しているならばクライアントIDはすでに使われているクッキーです.つまり,Google Analyticsを使用しているサイトにアクセスした場合にそのアクセスしたブラウザーに配布されるGoogle Analyticsに関するクッキーとなります.このクッキーを利用して,Google Analyticsが例えば新規ユーザーやリピーターなどかを判定しています.ただし,クッキーはブラウザーに付随するものなので,正確にはこのIDがユニークユーザーを表すものではわけではありません.例えば共有PCならば,不特定多数の人が同じブラウザー(クッキー)を使ってサイトにアクセスしている可能性があります.これはGoogle Analytics自体の仕組みなので我々ではどうしようもありません.

IPアドレスは,インターネットの住所みたいなものです.この情報を利用するとサイトにアクセスしている企業などがわかる可能性があります.「可能性がある」とは,IPアドレスがわかっても必ずアクセスしている人(PC)のある場所(企業)などが特定できるとは限らないからです.固定IPアドレスを取得している企業や大学などだと特定できる可能性が上がります(この特定の方法などもいずれ紹介しようと思います).クッキー(クライアントID)とIPアドレスや今回紹介するカスタマイズ取得する情報を組み合わせると,ある企業の特定の人(ブラウザ)がサイトにどのようにアクセスしているかがわかるかもしれません.

アクセス時間は,サイトにアクセスした時間です(PHPファイルを使うので,サイトのあるサーバーの時計が基準で記録されます).

パスは,サイト内の閲覧されたページのアドレスが集計されます.したがって,アクセス時間とパスとクライアントIDの組み合わせで,ある人(ブラウザ)がサイトのどのページをどの順序でどれぐらい見ていたかがわかります(離脱時の時間は計測できないので,離脱ページをどれぐらい見ていたかはわかりません).

ユーザーエージェントは,サイトにアクセスしてきた機器の環境(使用しているOSやブラウザ)がわかります.

以上の情報をGoogle Analytics(ユニバーサルアナリティクス)のカスタムディメンションの機能で収集します.なお,カスタムディメンションの公式のヘルプは

カスタム ディメンション / 指標

https://support.google.com/analytics/answer/2709828?hl=ja

となっています(設定するには,すべてを読んで理解する必要はありませんが,基本的な知識は必要です).

 

2.トラッキングコードのカスタマイズ

まず今回使用するPHPファイルは,

Google AnalyticsでIPやCookieを判別できるようにする「PHPAnalyticsIP」を作った

http://tanshio.net/phpanalyticsip/

にて紹介と配布されている「analytics.php」です.上記のサイトを見てもらうとわかるのですが,このPHPファイルでもクッキーが生成され,そのクッキーをGoogle Analyticsで取得できます.

クライアントIDに関する情報がそれほど多くなかった頃,このPHPファイルでクッキーを取得して計測した結果を見て気づいたことがありました.それは「一部のあるブラウザーではGoogle Analyticsのセッションが変わる毎にクッキーのID情報が変わってしまう」ということです.PHPファイルのソースコードを見てもクッキーが保持される期間は十分あるはずなのに,なぜかあるブラウザーではアクセスをする毎にクッキーのID情報が書き変えられていました.原因は不明です.したがって,現状ではこのPHPファイルで取得できるクッキーを利用することはあまりお薦めしません.

では具体的なカスタマイズを紹介します.デフォルトのユニバーサルアナリティクス(analytics.js)のトラッキングコード

<script>
 (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
 (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
 m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
 })(window,document,'script','//www.google-analytics.com/analytics.js','ga');

 ga('create', 'UA-12345678-X', 'auto');
 ga('send', 'pageview');

</script>

に対して,カスタマイズしたユニバーサルアナリティクス(analytics.js)が下記のコードです(注意:トラッキングIDの「UA-12345678-X」はこの例示のための適当な番号です).カスタマイズした箇所は赤字にしてあります.

<script type="text/javascript" src="analytics.php?s=X"></script>

<script>
 (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
 (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
 m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
 })(window,document,'script','//www.google-analytics.com/analytics.js','ga');

 ga('create', 'UA-12345678-X', 'auto');

 ga(function(tracker) {
  var clientId = tracker.get('clientId');
   ga('set', 'dimension1', clientId);
 });

 ga('set', 'dimension2', setAnalytics.getIP());

 ga('set', 'dimension3', setAnalytics.getAccessTime());

 var ua = navigator.userAgent;
 ga('set', 'dimension4', ua);

 var pathuri = location.pathname;
 ga('set', 'dimension5', pathuri);

 ga('set', 'dimension6', setAnalytics.getCookie());

ga('send', 'pageview');
</script>

このカスタマイズしたトラッキングコードを,計測したいサイトのhtmlファイルに貼り付けます(貼り付ける位置などは通常のGoogle Analyticsのトラッキングコードと同じです).

 

3.コードの説明

カスタマイズしたコードを簡単に説明しておきたいと思います.

まず,

<script type="text/javascript" src="analytics.php?s=X"></script>

はIPアドレスとアクセス時間などを取得するために使うPHPファイル「analytics.php」を読み込むためのコードです.これは必ずGoogle Analyticsのトラッキングコードの上に記載してください.またこの例では,サイトのhtmlファイルとPHPファイル「analytics.php」が同じディレクトリにあるときを想定した表記です.計測対象のhtmlファイルが複数のディレクトリーに分かれていて上記のコードを使う場合は,htmlファイルのあるすべてのディレクトリーにPHPファイル「analytics.php」を配置する必要があります.すべてのディレクトリー内のhtmlファイルがあるディレクトリー内にある1つのPHPファイル「analytics.php」を使う場合は,上記の「src=”analytics.php」の部分を相対パスから絶対パスに変更して使用してください.

相対パスと絶対パス

http://www.shoshinsha.com/hp/1hour/know/pass.html

あと特殊な環境,例えばアクセスの負荷を減らすためサーバーの設定を工夫してあるなどの環境では上記のような相対パスや絶対パスを使用してもIPアドレスがちゃんと取得できない(常に同じIPアドレスになってしまうなど)場合があります.その場合は,サーバー管理者などに相談してください.正しいパスの書き方を教えてくれると思います.

次に

ga(function(tracker){
var clientId = tracker.get('clientId');
ga('set', 'dimension1', clientId);
});

はJavaScriptでクライアントIDを取得し,それをGoogle Analyticsのカスタムディメンションのインデックス「1」に送るコードです.

ga('set', 'dimension2', setAnalytics.getIP());

はPHPファイル「analytics.php」を使ってIPアドレスを取得し,それをGoogle Analyticsのカスタムディメンションのインデックス「2」に送るコードです.

ga('set', 'dimension3', setAnalytics.getAccessTime());

はPHPファイル「analytics.php」を使ってアクセス時間を取得し,それをGoogle Analyticsのカスタムディメンションのインデックス「3」に送るコードです.上述したようにPHPファイルを使うので,サイトのあるサーバーの時計が基準で記録されます.

var ua = navigator.userAgent;
ga('set', 'dimension4', ua);

はJavaScriptで使ってユーザーエージェントを取得し,それをGoogle Analyticsのカスタムディメンションのインデックス「4」に送るコードです.

var pathuri = location.pathname;
ga('set', 'dimension5', pathuri);

はJavaScriptで使ってパスを取得し,それをGoogle Analyticsのカスタムディメンションのインデックス「5」に送るコードです.

最後に

ga('set', 'dimension6', setAnalytics.getCookie());

はPHPファイル「analytics.php」を使ってPHPファイルが生成したクッキーを取得し,それをGoogle Analyticsのカスタムディメンションのインデックス「6」に送るコードです.上記に書いたようにこのクッキーには問題があるのですが,余裕もあるので取得してみることにします.

 

4.カスタムディメンションの設定と注意点

さてGoogle Analyticsでのカスタムディメンションの設定の詳しい説明は,公式の

カスタム ディメンションやカスタム指標を設定、編集する

https://support.google.com/analytics/answer/2709829?hl=ja

などにお任せします.ここではいくつかの注意点を述べることにします.

追加したコードのインデックス番号とGoogle Analytics内のカスタムディメンションのインデックスの番号の関係に注意してください(例えばクライアントIDはコードで「dimension1」と使ったので,カスタムディメンションのインデックスが「1」で収集されます.取得する情報に対する番号の割り当ては自由ですが,コードと設定でのインデックスの番号の対応はしっかり確認してください).

図1は,カスタムディメンションの設定例です.

 

図1

 

設定の「範囲」に関しては,

カスタム ディメンション / 指標

https://support.google.com/analytics/answer/2709828?hl=ja

に説明があります.

計測するにはカスタムディメンションでの「範囲」の設定をクリックされたときなどに計測される「ヒット」にしておけば基本問題ありませんが,Google Analyticsは計測できるデータ収集の上限があります.

データ制限

https://support.google.com/analytics/answer/1070983

デベロッパーの情報によると具体的には,ヒット数は1プロパティあたり一ヶ月1,000万ヒット,1セッションあたり500ヒットだそうです.したがって,セッション毎に通常は変わることのないユーザーエージェントの範囲は「セッション」にして,ユーザーごとに常に保持されるデータであるクラインとIDとPHPファイルで取得できるクッキーの範囲は「ユーザー」にしておくのが良い気がしています.なお,IPアドレスの範囲も「セッション」としてかまわない気もしますが,スマホなどの移動しながら使用される媒体を考えると基地局などで途中でIPが変化するとかあり得るかも?と興味を持ち上記の図1ではその範囲を「ヒット」にしてみました.

 

5.実際に取得した情報を確認する

カスタムディメンションを追加すると,各レポートの軸においてセカンドディメンションで設定したカスタムディメンションが選べるようになります.図2は,チャネルのレポートでセカンダリディメンションでクライアントIDを追加した状態です.

 

図2

 

また,図3のようにカスタムレポートのフラットテーブルでカスタムディメンションの内容を表示させる一覧表を作ることも出来ます(ただしカスタムレポートで一度に並列で選べるディメンションはの上限は5です).図4は作ったカスタムレポートの画面です.

 

図3

 

図4

 

もちろんカスタムレポートにて,階層的なレポート(エクスプローラ)も作ることができます(図5参照).図6は作ったカスタムレポートの画面です.図7は,セカンダリディメンションで参照元/メディアを追加したものです.

 

図5

 

図6

 

図7

 

6.おわりに

今回は,PHPファイルをつかった計測をするためのGoogle Analyticsのカスタマイズ方法を説明しました.ただし,IPアドレス以外は,PHPファイルがなくてもカスタマイズで計測出来ます(アクセス時間に関しては,JavaScriptのコードで取得することが実は出来ます.この方法は今後の記事で紹介したいと思います).一方で,IPアドレスを計測したいけど,サーバーに計測用のPHPファイルを配置出来ない(使用できない)という場合もあります.そのような場合,他にどのような方法があるかを次の記事

Google Analytics(analytics.js版)をカスタマイズしていろいろなデータを集計する(外部サーバー使用版)

Google Analytics(analytics.js版)をカスタマイズしていろいろなデータを集計する(JavaScriptのみ版)

で紹介したいと思います.

最後にカスタマイズは自己責任でお願いします

 

補足

グローバルサイトタグ版での同様なカスタマイズは下記を参照してください.

Google Analytics(gtag.js版)をカスタマイズしていろいろなデータを集計する(PHPファイル使用版)

 

<この記事は「デジマのあれこれ」にて2017年4月頃公開された記事を一部改良して移植したものです>