sessanの日記

主に開発技術関連でお勉強したことをまとめていくサイトです。

Slash-7を使って、KPIの分析を行う(3)

前回のSlash-7を使って、KPIの分析を行う(2) - sessanの日記では、JavaScriptからイベントを送る例を書いたけど、JavaScriptでは、ユーザーの画面操作でイベントが発生しないとSlash-7にイベントログを送ることが出来ない。

あるイベントが必ずあるページの表示とか、JavaScriptのロジックに紐付いていればいいが、そうでない場合は、JavaScriptだけでは確実なイベント発生を通知することができない。

Slash-7では、JavaScript以外に以下2つのクライアントからイベントログを送ることができる

  1. fluentd
  2. http クライアント

fluentdのセットアップ手順は、fluentd セットアップ手順 - public - Confluenceに載っている。

http クライアントの方は、http通信やBase64エンコーディングをラップしてくれる便利なruby用のライブラリが用意されている。

Herokuなどでサービスを運用している場合は、サーバにfluentdをインストールできなかったりするので、このruby用のライブラリを使うのが便利。

前置きが長くなったけど、このライブラリの使い方を紹介します。
(と言っても、githubページに書いてあることをそのまま書いているだけだけど。)

手順

  1. インストール
  2. イベントログの送信処理の実装

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'はユーザー属性でイベント送信時にユーザー属性も同時に送りたいときには、ここに指定する。自分のサービス用のユーザー属性に_で始まる名前を付けては行けない。

ログのフォーマットは、ここに載っています。