ムカデノワラジ

ムカデノワラジ

ガジェット・Webサービス・プログラミング・エンタメについて書く雑記ブログ

MENU

railsでab テストを簡単に導入するgem split

環境

Windows 10 Pro 

WSL ubuntu 18.04

rails 5.1.6

ruby 2.4.2

redis (redis-server, version 4.0.9)

ABテストを簡単に導入できるgem split

splitのgithubhttps://github.com/splitrb/split

split を使うとab_test()というヘルパーを使って簡単にABテストが実行できる。

 

    ホームページを作るときや何か商品を売りたいときに掲載する写真、あるいはデザインで迷ったときに、不規則ででたらめな順番でホームページや画像のデザインを変えて表示し、利用者がどちらをより多くクリックしたのか、より多く購入につながったのか、ということを試験できる技術やサービスまたは行為自体を A/Bテストといいます。

    参考:ferret https://ferret-plus.com/88

 

Splitでは、A:Bを1:1以外にも設定できる

split AB テスト 比率 設定

 redisをインストール

ubuntu 18.04にredisをインストール

splitはredisがないと使えない

 

sudo apt install redis

 

Redisに外部接続するためにredis.confを編集

etc/redis/redis.confを編集

sudo vi redis.conf

# bind 127.0.0.1 ::1

bind 127.0.0.1 :: 1

 

protected-mode yes

protected-mode no

 

:wq で保存して終了

 

redis-serverを再起動

sudo service redis-server restart

参考:  https://symfoware.blog.fc2.com/blog-entry-2175.html

Gemをインストール&初期設定

/Gemfile

gem "split", require: "split/dashboard"

#dashboardを利用する場合、require: "split/dashboard"を追加

#dashboardを利用するとget '/split' で以下のような管理画面が使える。コンバージョンを集計したりABどちらかから選んだりできる。

testAのUse thisを押すとab_test("test_name","testA","testB")の部分がtestA、testBのUse thisを押すとtestBになる。

f:id:xhateblo:20190427233416p:plain

rails split dashboard

/routes.rbに以下を追加

mount Split::Dashboard, :at => 'split'

 使い方

使い方

viewで以下を追加する

page.html.haml

= ab_test("test_name","text_A","text_B") do |t|

  =link_to t, hoge_show_path

ユーザーのセッションでtext_A,text_Bを分けて表示する

例えばXさんにはtext_A、Yさんにはtext_Bが表示される

 

text以外にも使える

- ab_test(:login_button, "/images/button1.jpg", "/images/button2.jpg") do |button_file|
  = image_tag(button_file, alt: "Login")

 

- @change_page = ab_test('change_page', 'page_A', 'page_B') do |pattern| 
   - if pattern == 'page_A'
      render 'page1'
   - elsif pattern == 'page_B' 
      = render 'page2'

参考:https://qiita.com/kiyoeshi/items/2d5fc7e900ff1c3df9ca

 

/hoge_controller.rb

 def show

  何らかの処理

 ab_finished("test_name")

  #ここでコンバージョンを集計

 end

感想

splitを使うとかなり簡単にABテストが導入できる。

データサイエンスブームでPythonの後塵を拝すことになっているが、Ruby on Railsはビジネスに親和性が高い(印象がある)のでこういったビジネス用途に活躍するgemが増えたらPythonとは別のフィールドで戦えるかもしれない。

Djangoもまあまあいいけど、テンプレートエンジンつかってもviewをたくさん書かないといけないからきつい。Haml万歳。(Djangoはpug導入できるみたいだけどRailsと比べてめんどくさい。)