計測の仕組みとシステム構成

概要

今回は、Google Chromeの拡張機能を開発しました。開発した拡張機能は自身が使うことさえできれば問題ないので一般公開は行わずに、自身のローカルマシン上でのみ動作するようになっています。そして、ブラウザがGoogleアナリティクスにヒット情報を送信する時に、ビーコンの中身を取り出して、自身の管理するデータベースに送信するようになっています。そのため、自身が管理するデータベース内には、拡張機能をインストールしたブラウザが閲覧したサイトで実装されているGoogleアナリティクスのヒット情報が全て格納されるようになっています。

拡張機能の実装

Google Chromeの拡張機能は、バックグラウンドで動作する拡張機能として実装しています。拡張機能では、ブラウザが各Webサーバーに対して送信するHTTPリクエストの値をイベントリスナーを通じて処理することができるようになっています。この機能を用いて、HTTPリクエストのうち、ユニバーサル・アナリティクスのビーコンに該当するものに対して処理を行うようにしています。処理内容は単純で、Googleアナリティクスに送信している各パラメーターの値をパースして、一次整形を行なったのちにJSON形式でGoogle CloudのCloud Functionsに送信します。Cloud Functionsは、Google Cloudの中のFaaSサービスです。

最終的にBigQueryでデータ分析することを考えて、Googleアナリティクスの標準的なパラメーターは独立したカラムとして処理します。一方で、利用可能なパラメーターの数は膨大にあり、利用頻度の少ないものもあるので、一部のパラメーターはパースせずに、JSONデータのまま1カラムに詰め込んでいるものも存在します。

サーバー側の処理

拡張機能からビーコン情報をCloud Functionsで受け取ります。Cloud Functionsは、短い処理をクラウド上で行うための仕組みの1つです。呼び出された時のみ処理に使うサーバーが起動し、その処理が完了すればサーバーは停止されます。処理回数(と利用するメモリやCPUなど)に依存して利用料金が変わるため、常時起動が不要で処理回数が少ないプログラムを実装するのに適しています。

Cloud Functionsでは、受け取ったGoogleアナリティクスのJSON形式のパラメーターをGoogle Cloud Storageに1リクエスト1ファイルで書き出していきます。このファイルは、ヒット数分だけ作られるため、日付単位でディレクトリを切って格納するようにしています。

ヒット単位で作成されたログファイルを、日次バッチによりBigQueryにエクスポートしています。このエクスポート処理も、Cloud Functionsを使っています。Cloud Functionsでは、Cloud Storageから1日分のデータをダウンロードし、それらをJSON形式のまま結合し、BigQueryにロードする処理を行なっています。また、これらの処理を1日に1回実行するために、Google Cloud内のサービスの1つで最近ローンチされた「Cloud Scheduler」を使っています。

これらの仕組みのイメージ図

上記の内容を下記のようになります。

計測されたデータのサマリー

送信したページビュー数や閲覧したドメイン数、送信先のプロパティ数など

この実装を2019年2月8日に行なって以降、自身のBigQueryには、自身のGoogle Chromeで閲覧したページが送信しているGoogleアナリティクス・ビーコンが全て残されています。

そのBigQueryに対して、あるSQLクエリを実行することで、

項目名
総ヒット数 30,600
総ページビュー数 10,793
総イベント数 18,724
ドメイン数 550
トラッキングID数 661

のようなデータを得ることができます。

カスタマイズされたビーコンの例

ヒット数やドメイン数、トラッキングID数についての情報も面白いですが、当ブログで紹介するのは、上記多数のサイトで実装しているGoogleアナリティクスのカスタマイズ内容を分析してみたいと思います。

当ブログを読んでいる人の多くはすでにご存知かもしれませんが、Googleアナリティクスは様々なカスタマイズを行うことができます。そのカスタマイズの中には、Googleアナリティクスのビーコンにカスタマイズ結果を埋め込む必要のあるものも多く含まれます。ここでは、自身のBigQueryに格納された中から見つけたいくつかのカスタマイズ例を紹介します。

カスタムディメンション

カスタムディメンションについては、ディメンション名がビーコン内容からは判断ができないので、設定されている値から類推する必要があります。類推できたものをいくつかリストアップしてみました。

  • GoogleタグマネージャのコンテナID
  • 記事の著者名
  • 会員種別
  • クライアントID
  • ログイン/ログアウト
  • タイムスタンプ
  • パンくずリスト
  • ページタイプ
  • 商品名
  • リファラー
  • クエリパラメータ(まとめて1つのディメンションに格納する)
  • 同一ページに設置されているその他のGAトラッキングID
  • 商品属性
  • gclid
  • 検索条件(1ディメンションに全て詰め込む形式)

無難なものも多数ある一方で、「GoogleタグマネージャのコンテナID」「同一ページに設置されているその他のGAトラッキングID」「クエリパラメータ」といったものもカスタムディメンションに含めているサイトがいくつか存在しました。

イベントトラッキング

今回のデータでは、全550ある計測ドメインのうち、110のドメインで少なくとも1件のイベントトラッキングを確認することができました。また、イベントトラッキングの王道は、「クリックイベント」「スクロールイベント」の2つだと思います。クリックイベントと思われるものが計測されていたのは36サイト、スクロールイベントと思われるものが計測されていたのは20サイト存在しました。また、サイトによっては実装に不備があるのか、イベントアクションやイベントラベルなどが「undefined」になってしまっているものもいくつか存在するようです。

また、Googleドメインの中でも特にGoogleアナリティクスのサイトにおいては、多くのイベントトラッキングが設置されているようです。実際、今回計測されているイベントパターン1,400のうち、約350パターンがGoogleアナリティクスのものでした。

Googleドメイン以外のデータでも各社工夫してイベントトラッキングを行なっていることが伺えます。その中でも「これは面白い」と思ったイベントトラッキングの1つを紹介します。

項目名 設定値
イベントカテゴリ Cross Domain Tracking
イベントアクション www.example.com > www.example.net
イベントラベル www.example.com/some1/ > www.example.net/some2/

クロスドメイントラッキングのリンクをクリックした時、と思われる内容ですが、そのクロスドメインの元と先の情報をイベントトラッキングで送信しているようです。具体的にどのような実装を行なっているかは不明ですが、多数のドメインを管理し、クロスドメイントラッキングが必要なサイトの場合、クロスドメインの問題を解決する時に使えそうな内容です。

カスタムキャンペーン

計測されたヒットの中で、カスタムキャンペーンがセットされていたものは、たったの29個しかありませんでした。普段から、アドブロックを入れているため、広告がほとんど表示されないのが理由かもしれません。

ただ、カスタムキャンペーンが設定された29個の値を見るだけでも学ぶことができることがいくつかあります。例えば、Googleアナリティクスとして、「メディア」に入れるべき値の推奨値として「cpc」「cpv」「display」「email」「social」「affiliate」などを示しています。しかしながら、その推奨値に沿って値を設定しているサイトは少ない、ということです。

実際、Googleウェブマスターツールのあるページに対して設定されていたURLは以下になります。

https://www.google.com/webmasters/tools/analytics-property-selection?siteUrl=https://*****/&utm_source=wnc_20064535&utm_medium=gamma&utm_campaign=wnc_20064535&utm_content=msg_110137119&hl=ja

また、同じくGoogleのマーケティングプラットフォームのあるページに対して設定されていたURLは以下になります。

https://marketingplatform.google.com/home?utm_campaign=SuiteHeader&utm_source=UniversalPicker&utm_medium=platformHomeButton&_ga=*****

デフォルトチャネルグループの設定がそのまま利用できる、という意味では、推奨値を利用するのが良さそうに見えますが、推奨値に拘りすぎるのも良くない、ということでしょう。

まとめ

今回は、自分用に開発したGoogle Chromeの拡張機能を利用して、様々なサイトで実装されているGoogleアナリティクスのカスタマイズ内容について考察してみました。他の人が実装したGoogleアナリティクスを見る機会はほとんどないと思います。しかしながら、今回紹介する手法を使えば、自身が送信したヒットに限定されますが、様々なサイトのビーコンを確認することができました。現時点ではわずか2ヶ月分のデータが対象ですが、今後もデータ量が増えた時にレポートしていきたいと思います。