以前 「【Railsで】Vanityのセットアップ【A/Bテスト】 」なんていうエントリを投稿しましたが、Vanityあまりメンテされてないし、Rails3対応が大変だし、なんか良くわかんなしということでやめてました。
そこでSplitの登場です。
現在進行形でメンテされていて、当然Rails3にも対応、何よりもRailsだけでなくて、Sinatraとかにも対応しているので、今後はこっちが主流になるでしょう。
ではさっそく。
Splitとは?
これだ。
https://github.com/andrew/split
redisが必要
READMEを読むと「ExtensionsにMongoid対応ありまっせ\(^o^)/」ってノリでリンクが貼られているが、正直おすすめしない。
このツールをフル活用したいのなら、素直にredisを利用することを推奨する。
インストールとセットアップ
Rails3へのインストールが前提に説明する。
といってもGemfileに書いて、bundle install
するだけ。簡単。
gem 'split'
ダッシュボード機能も利用するなら以下のように書く。
gem 'split', require: 'split/dashboard'
使い方
splitはviewでもcontrollerでも呼び出せる。
以下のようにして、必要なパターンを記述していく。
# どこかのコントローラー
def index
# この文言がどこかのビューに入ると仮定してください・・・
@test_str = ab_test('test_link', "テストです!", "テストだ!")
end
@test_strをビューに埋め込むと、ユーザーのセッションごとに「テストです!」だったり「テストだ!」と表示される。
次にコンバージョンを達成する場所にab_finished()
を記述して、データに反映する。
# データを反映させる、どこかの画面
def hoge
# 第一引数はab_testの第一引数と共通であること
ab_finished('test_link')
end
ab_finished
に何のオプションも指定しなければ、abテスト用のセッションはリセットされて、再度@test_str
の表示がシャッフルされる。
テスト用セッションをリセットしたくない場合
ab_finishedのオプションに:reset => false
を指定する。
ab_finished('test_link', :reset => false)
こうすることで、同一セッションのユーザーはab_finished
を通過したあとでも、ab_testの条件を引きずる。
その後、何度ab_finished
のある画面を訪れてもデータに反映されない。
ダッシュボードを表示する
config/route.rbに以下追加。
mount Split::Dashboard, :at => 'split'
railsを再起動して、/splitを訪れればデータを表で確認できます。
まとめ
時代はSplit。
Vanityよりはるかに簡単だし、ドキュメントも整備されているので、ここに書くこともあまりありません。導入まで。
ちゃんとWikiもまとめられているので、詳しいことはそっちを参照してください。
https://github.com/andrew/split/wiki