前回のSlash-7を使って、KPIの分析を行う(2) - sessanの日記では、JavaScriptからイベントを送る例を書いたけど、JavaScriptでは、ユーザーの画面操作でイベントが発生しないとSlash-7にイベントログを送ることが出来ない。
あるイベントが必ずあるページの表示とか、JavaScriptのロジックに紐付いていればいいが、そうでない場合は、JavaScriptだけでは確実なイベント発生を通知することができない。
Slash-7では、JavaScript以外に以下2つのクライアントからイベントログを送ることができる
- fluentd
- http クライアント
fluentdのセットアップ手順は、fluentd セットアップ手順 - public - Confluenceに載っている。
http クライアントの方は、http通信やBase64エンコーディングをラップしてくれる便利なruby用のライブラリが用意されている。
Herokuなどでサービスを運用している場合は、サーバにfluentdをインストールできなかったりするので、このruby用のライブラリを使うのが便利。
前置きが長くなったけど、このライブラリの使い方を紹介します。
(と言っても、githubページに書いてあることをそのまま書いているだけだけど。)
手順
- インストール
- イベントログの送信処理の実装
1. インストール
RailsアプリだったらGemfileとかに以下を書いて、bundle installするだけ。
gem 'slash7'
$ bundle install
2. イベントログの送信処理の実装
require 'slash7' client = Slash7::Client.new('[YOUR TRACKING CODE]') event = { '_event_name' => 'attack', '_app_user_id' => 'user100123', '_event_params' => {'weapon' => 'long sword'}, 'lv' => 21 } client.send_data(event)
こんなかんじで、JavaScriptのときと似たような感じで、イベントログを送信することができる。
_event_nameにJavaScriptのときに送ってたのと同じようにイベント名を設定して、_app_user_idにはユーザーを特定出来るIDを設定する。_event_paramsにはイベント名に対して設定するパラメータ値をキーバリュー形式で設定する。この辺はJavaScriptでも同じような事ができる。'lv'はユーザー属性でイベント送信時にユーザー属性も同時に送りたいときには、ここに指定する。自分のサービス用のユーザー属性に_で始まる名前を付けては行けない。
ログのフォーマットは、ここに載っています。