76
81

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

RailsにA/BテストツールのSplitを導入する

Last updated at Posted at 2013-04-10

以前 「【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するだけ。簡単。

Gemfile
gem 'split'

ダッシュボード機能も利用するなら以下のように書く。

Gemfile
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に以下追加。

route.rb
mount Split::Dashboard, :at => 'split'

railsを再起動して、/splitを訪れればデータを表で確認できます。

まとめ

時代はSplit。

Vanityよりはるかに簡単だし、ドキュメントも整備されているので、ここに書くこともあまりありません。導入まで。

ちゃんとWikiもまとめられているので、詳しいことはそっちを参照してください。
https://github.com/andrew/split/wiki

76
81
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
76
81

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?