ゆうなんとかさんの雑記帳的な。

Twitterで踊ったり音ゲーしたりしてるあの名前がよくわからない人が書いてるらしいよ。

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使ってるときにできることはだいたいできます。
大きく分けるとつぎのとおりです。

アプリ向けのトラッキングでは一部使えないものもあるようですが、それは明日になってみないとわからないですね。とりあえずいろいろ送ってみたんですが。

最低限必要なパラメーター

以下のものはすべてのリクエストで必要です。

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向けトラッキングでいうところのページビューに相当するのかな?ページビューのトラッキング情報を送ってもアプリ向けのトラッキングには反応しません。

例外トラッキング

今回紹介する3つのうち、これだけはすぐに見ることができません。トラッキングを送ると翌日「クラッシュと例外」に出てきます、たぶん。右上の日付に今日の日付をいれるとトラッキングされていることがわかります。

v=1&tid=UA-00000000-0&cid=5555&t=exception&an=testapp&av=1.00.0&exd=IOException&exf=0

回復できるやつと致命傷をフラグで設定できます(exf=1で致命傷)。

仕様書を読んでみたい

最初のほうでも言いましたが、
仕様書はここにあります。