update.会社に自分が導入した、GoogleAnalyticsを使ってABテストを行う実装が大体固まって来たので、Rails用のGemとして切り出しました。自分用メモ&社内共有用等を含めてGemの使い方を紹介します。そもそも何故ABテストにGoogleAnalyticsをそのまま使うのかまあ当時はGoogleOptimizeがなかったので、これしか方法がなかった、というのが答えなのですが、GoogleOptimizeが正式版になった今でも何故そっちに移行しないのかには理由があります。GoogleOptimizeは自分は業務では使ったことが無いのですが、個人的に軽く使ってみた感じとしては、jsでいじれる範囲でのUI的な部分しかテストできないため、かなり限定的にしか使用できないように感じました。UI部分のみの変更しかしないような場合はいいのですが、例えばレコメンドのロジックを変えてABテストを行いたいなどの場合には使用することが大変(やろうと思えばできなくはないです)なため、あえて移行する必要はまだ無いと考えています。webマーケや企画系の人がサクッとUI変更だけ試すという場合にはOptimizeでもいいかもしれないですね。作ったGemについてhttps://github.com/ykogure/google_analytics_ab_test_on_railshttps://rubygems.org/gems/google_analytics_ab_test_on_rails今回作成したGemでは、GoogleAnalyticsへセッション切り分け用のイベントトラッキングを送信する方法として、GoogleTagManagerを通す方法と、analytics.jsで直接イベントを送信する2種類の方法を選択できるようにしています。自分のサイトに合わせて選んで下さい。ちなみにGoogleTagManagerを使う方法では、自分が作ったGoogleTagManager用のGemのGTMonRailsを使うようになっています。installします。google_analytics_ab_test_on_rails:installのコマンドを実行し、初期設定(configファイル生成等)を行います。生成されたconfig/initializers/google_analytics_ab_test_on_rails.rbでGemの設定を変更します。senderGoogleTagManagerかanalytics.jsか、イベントトラッキングの方法を選ぶ設定。「:gtm」か「:analytics_js」を設定値に入れる。tracking_event_categoryGoogleAnalyticsのイベントカテゴリを設定する。nilを設定した場合、"railsのコントローラ#railsのaction"が自動で設定される。tracking_event_actionGoogleAnalyticsのイベントアクションを設定する。nilを設定した場合、"ab_test"が自動で設定される。tracking_event_labelGoogleAnalyticsのイベントラベルを設定する。「{ab_test_name}」の部分に指定したABテストの名前が入り、「{ab_test_value}」にABテストの値が入る。GoogleTagManagerの場合https://qiita.com/ykogure/items/ebca38c038f996fb361fこの記事にあるGTMonRailsのGemの設定を行う。次に、下記のトリガー・タグを設定すればGoogleAnalyticsへイベントを送信できます。%>bodyタグ内のanalytics.jsの計測タグより後に上記ヘルパータグを入れる。'B_pattern'])上記のように記述することで、「aiueo」という名前のABテストを開始する事ができます。ABテストの開始とは、1度目のアクセスの場合に、GoogleAnalytics側にABテストの名前と振り分け内容を含むイベントを送信することと、セッションに同じ内容を保存することです。処理内容BendABテストの開始の記述後、get_ab_test_valueで現在のセッションの振り分け内容を取得し、それに応じて処理を分岐させます。振り分けに関しては、下記のように記述することも可能です。endendab_test_startメソッドについてab_test_start(:aiueo)ABテストの振り分け候補を設定しない場合、デフォルトで'true'または'false'が文字列で設定されます。'C_pattern'])3パターン以上の振り分けも設定できます。9})デフォルトの振り分け率は等確率でパターン振り分けを行いますが、上記のようにHashを設定することで、振り分け率を設定可能です。'カテゴリー')config/initializers/google_analytics_ab_test_on_rails.rbでも設定可能ですが、場合に応じてab_test_startメソッド毎に上記のようにイベントカテゴリ・アクション・ラベルを設定可能です。ABテストマネージャの設置ABテストが設置されているかどうかや、ABテストの両パターンをテストするために切り替えたりすることのできる「ABテストマネージャ」を設置します。%>上記ヘルパータグを設置することで、画面上に固定で表示されるABテストマネージャを設置することができます。実際には、ユーザー側に見えてしまうのは問題だと思いますので、適宜条件を指定して、管理者側しか見られないようにすることが必要になります。(IP制限等)設定デフォルトでは、ABテストマネージャは下部に固定されるものになっており、さらにABテストマネージャ自体のビューは変更できません。position_bottom上記のコマンドを実行することで、2種類のABテストマネージャ用viewファイルapp/views/google_analytics_ab_test_on_rails/_ab_test_manager.html.erbを作成することができる。このviewファイルを変更することで、ABテストマネージャのviewを好きに変更できます。これで一通り設定は完了です。以下に計測方法の一例を書いておきます。計測方法に関してはKPIや状況によって変わると思いますので、そこは適宜やってもらえればと思います。計測方法GoogleAnalytics側での計測方法を簡単に書いておきます。上記のようなセグメントを設定します。AパターンとBパターン等振り分けの分を作成します。概要」の項目で見ていることが多いです。あとはセッションに対するコンバージョン数等の数値から、各パターンにおいて有意差があるかどうかt検定したりすればABテストの結果がだせると思います。現状Gemに入っているABテストマネージャのビューは、自分が今会社で担当しているサイトに最適化してあるレイアウトのため、より汎用性の高いbootstrap用等のデフォルトビューの生成機能を追加したい。upLoginユーザーは見つかりませんでした。