Google AnalyticsのトラッキングAPIを直に叩くときのめも
デスクトップアプリでも組み込みデバイスでもHTTPでリクエストを投げられたらトラッキングできます。できます。
Google AnalyticsといえばWebの解析ツールと思っていたのですが、知らなかっただけでAndroidやiOSアプリ用のトラッキングSDKが提供されていました。では、WindowsストアアプリやWPアプリはどうなのかというと、すでにサードパーティーのトラッキングツールがあります。ここまではいいかな。
ではデスクトップアプリは…?
私のググラビリティが低いせいか、ついに見つけることはできませんでした。集計アプリを作るためのツールはサードパーティが作っているようですが。ですが、Google Analyticsはそういった環境であっても使うことができます。APIを直にたたくことによって。
というわけで実際に叩いてみた
Google AnalyticsにはいくつかAPIがあるのですが、トラッキングするのはCollection APIというものです。
これはMeasurement Protocolというプロトコルにのっとって決まったパラメーターをのせたリクエストをしかるべきエンドポイントにHTTPで投げつけるだけという単純なAPIです。仕様は小さいとはいえ、全部を網羅した実装は骨が折れそうですが、必要最低限に絞ればかなり簡単に叩けます。
仕様書はここにあります。
トラッキングの分類
モバイルアプリのSDKやサイトの埋め込みコードで普通にGA使ってるときにできることはだいたいできます。
大きく分けるとつぎのとおりです。
- ページ閲覧トラッキング - どのページを閲覧したか。
- イベントトラッキング - ユーザーがどんなイベントを起こしたか
- e-コマーストラッキング - 商品の購入など
- 例外トラッキング - 発生したエラーについて
- 時間に関するトラッキング - レンダリング時間など
- 画面閲覧トラッキング - どんな画面を閲覧したか
アプリ向けのトラッキングでは一部使えないものもあるようですが、それは明日になってみないとわからないですね。とりあえずいろいろ送ってみたんですが。
最低限必要なパラメーター
以下のものはすべてのリクエストで必要です。
v=1 // プロトコルバージョン。現在は必ず1を指定すること &tid=UA-XXXX-Y // トラッキングID。UA-から始まるあれ &cid=555 // クライアントID。ユーザーを一意に識別できるなら何でもいいらしい &t= // ヒットタイプ。上で挙げたトラッキングの分類を示すもの
これに加えて、アプリに関するトラッキングをするときは次のパラメーターも必須です。私の知る限りではイベントトラッキングと画面閲覧のトラッキングはこれを追加で投げてないとうまくいきませんでした。
&av=1.0.0.0 // アプリのバージョン &an=testApp // アプリの名称
エンドポイント
POST https://www.google-analytics.com/collect
HTTPでもいいですしGETでもいいですが、個人的にはできるのであればHTTPSでPOSTを使うべきだと思います。GETリクエストの場合はキャッシュ防止のトークンを載せることをお勧めしています。
いくつか実際に叩いてみる
デスクトップで使うなら画面とイベント、例外あたりをトラッキングできればいいと思います。というわけでそれぞれのAPIを実際に叩いてみました。
あれなのでパラメーターだけ載せます。ちなみにリクエストに成功すると、なぜか壊れたGif画像が返ってきます。それから、実験の際はトラッキングIDを各自ご用意ください。
イベントのトラッキング
v=1&tid=UA-00000000-0&cid=5555&t=event&an=testapp&av=1.0.0.0&ec=App&ea=Run
上のパラメーターをリアルタイムレポートを見ながら送りつけるとちゃんとトラッキングされているのわかると思います。「イベント」画面を見るとリストに「App」カテゴリーが増えていて、選ぶと「Run」というアクションが追加されているはずです。
画面閲覧のトラッキング
v=1&tid=UA-00000000-0&cid=5555&t=screenview&an=testapp&av=1.00.0&cd=Welcome
上のパラメーターを送るとこれまたアクティブユーザーが増えると思います。「スクリーン」画面を見ると、アクティブスクリーンのリストに「Welcome」が見つかるでしょう。これ、ドキュメントのサンプル値には「High Color」とかついているのですが、アプリ向けのトラッキングでは画面名を表します。Web向けトラッキングでいうところのページビューに相当するのかな?ページビューのトラッキング情報を送ってもアプリ向けのトラッキングには反応しません。
仕様書を読んでみたい
最初のほうでも言いましたが、
仕様書はここにあります。