Keen IOでグロースハックするための分析をする

グロースハックというキーワードがちょっと前から流行っていますが、Webサービスの利用状況の分析、何で行っていますか?GoogleAnalyticsMixPanel? でもGoogle Analyticsではトラフィック分析がメインだし、MixPanelはサマりすぎ、もっといろんな切り口で分析したい!

そこで、とりあえず分析したい項目だけがんがん入れたJSONを送り込んだあとで分析できるKeen IOというサービスがあります。

Keen IOは月間のイベント数が50,000までは無料で利用できますが、それ以降は有料になります。全トラフィックを送るとすぐイベント数が超過してしまいますが、必要なものだけ送るのであれば十分ですね。

サービスが利用されるようになれば売上もあがるようなサービスであれば、費用もそこまで問題にならないのではないでしょうか。

イベントを送信したり閲覧したりするためのSDKはiOS, JavaScript, Android, Python, Ruby, Java, Node, PHPなど各種プログラミング言語向けに公開されています。 私は主にPHPから利用していますが、PHP版は非同期送信に対応していないため、cURLコマンドを利用して別プロセスで送信するようにしています。

public function event ($name, $params) {
    $payload = json_encode($params);
    $payload = escapeshellarg($payload);
    $url = sprintf( 'https://api.keen.io/3.0/projects/%s/events/%s?api_key=%s', KEENIO_PROJECT_ID, $name, KEENIO_WRITE_KEY );
    $cmd = '/usr/bin/curl -X POST -H "Content-Type: application/json"'; $cmd.= ' -d ' . $payload . ' "' . $url . '"';
    $cmd.= ' > /dev/null 2>&1 &'; exec($cmd, $output, $exit);
}

送信するイベントの中身はMongoのように好きなパラメーターを定義して送ることができます。 分析のためのAPIは基本的なものがすでに用意されており – イベント名
– 分析の種別 – sum 数値の合計値
– count カウント
– countunique ユニークカウント
– minimum 値の最小値
– maximum 値の最大値
– average 値の平均値
– select
unique カラムの値
– extraction 生データ(最大100件まで)
– 対象のカラム
– グループ化(Group By)
– フィルタリング
– 出力する対象期間
– 集計(minutely, hourly, daily, weekly, monthly, yearly)
– タイムゾーン

を指定できます。たとえば以下のような集計が簡単にできます。 – 機能ごとの利用者数を知りたい
– 利用者ごとの指定した機能の利用回数を知りたい
– 利用者一人あたりの平均課金額が知りたい

Keen IOはこの集計結果をJSONとして出力するだけでなく、JavaScriptのSDKにはグラフを表示する機能もビルトインされています。複雑な集計はJSONとして出力した後、自分で加工する必要がありますが、「このフィールドごとの数を知りたい」といったわりとシンプルなものは簡単に画面に表示できます。 また、Workbenchという機能がKeen IOの管理画面にあります。FacebookのGraph API Explorerに近い機能ですね。プログラムレスに集計を行いその結果をグラフとして出したり、結果をJSONで表示、表示するためのJavaScriptのコードの出力、結果をcURLで得るためのURLも表示できるので実装前に集計を行うことができるので実装の準備を行うにはとても便利です。

Fluentd+Elasticsearch+Kibanaでほとんど同じことができるとは思いますが、環境構築するためのリソースが無い時やシンプルに分析したいときに活用できると思います。