背景
- 一個先の効果じゃなくて、最終的な効果が見たい
- 可視化されてない、分析に時間がかかるABテストは使われなくなる
これらの問題を解決するために、MixpanelでABテストの枠組みを作ると幸せになれるかもしれないというお話。
WebUI上でもサーバー上でもモバイルアプリでも
実は、いろんなメトリクスは、Javascriptやアプリ側じゃなくてサーバーサイドのリクエストでトラックしたほうが楽だよねみたいなことも多いので、サーバーサイド側のライブラリが充実しているのが、Mixpanelのありがたいところ。
ココらへんがOptimizelyやGoogle Analyticsよりも優れている。(どっちも非公式のライブラリ使うとか、無理やり頑張る方法はあるけど、あまりイケてない。)
他にもActionScript用のがある他、HTTP経由でアクセスできるものもあるので、他の言語でも対応できそう
Mixpanelで行うたった一つのこと
Mixpanelで行うべきことはたった一つしか無い。それは、
イベントを投げる
こと
- イベントを4,5個投げることでファネルを作ることが出来る
- イベントを送る時に付加情報(property)をつけることができる
- 例えば画像のアップロードというイベントにpng,jpgなどのファイルタイプをつけるなど
イベントを投げる例
mixpanel.track("Video played", {
"Video length": 213,
"id": "hY7gQr0"
});
ユーザーのプロフィールをつける
mixpanel.identify("13487"); // user_id
mixpanel.people.set({
"$first_name": "Joe",
"$last_name": "Doe",
"$created": "2013-04-01T09:02:00",
"$email": "joe.doe@example.com",
"age": 24,
"gender": "Male"
});
\$から始まる4種類のキーの値は、Mixpanelの中で特別な意味を持っている。その他のものは自由につけてよく、その時\$からはじめてはいけない。
値としては、string, integer, date, listが使える
投げたイベントをABテストに使う
基本的には、これだけのことしかできないのだが、これだけでFunnel分析やRetentionの分析が出来るのがMixpanelの良いところ。
ここでは、Funnelを使ってABテストをする例をみせる。
まずはMixpanelのFunnel画面の結果から示そう。
全体
バージョンA(ベース)
バージョンB(改善後)
結果解釈
いわゆる一般的に行われるABテストだと、最初の2つの棒の比較をしてしまい、+47ポイント改善したで終わってしまう。しかし、実際は本当のゴール地点ではほとんど差が出なかったという結論がでている。
例えば、この改善は、これはフォームで入力項目を少なくしたり、詳細な説明を省いたりする行動をとるような変更をしたと思っていただきたい。
そういうものは確かにそのフォームの通過率は上げるけれど、結局のところ、その先で躓くだけで、最終到達点では結果がほぼ変わらない(見た目ちょっと悪くなっているが有意ではない)という結論になっている。
もちろん、最初の通過率を上げて、次の通過率を上げてと改善を続けていけば最終到達地点の数値も上がるかもしれないし、2個目まで通過すれば、別の施策を打てる可能性もあるので、Bの改善が無駄ではないかもしれない。
だが、ここで改善をやめてしまっては効果がなかったことがすぐに分かる。
このABテストのやり方
例えば、MixPanelは X->Y->Z とフローがあった時に
- ユーザごとにUniqueな結果で表示される
- Yを飛ばしてX->Z、Xを通ってなくてZのみ行われているといったものはZにカウントされない
といった特性がある。(cf. https://mixpanel.com/help/questions/articles/how-are-funnels-calculated )
なので、最初のXのパートのみでABテストのどちらだったか(ここではvariationを使用)をmixpanel.track
の2引数目に入れておけばこのファネルを描くことが出来る。
これはJavascript側でやってもいいし、サーバー側でやっても良い。例えば、Ruby on Railsだったら、createアクション等Controllerで処理すると自然。
もちろんXをのぞいた他のポイントで見たい時もあるので、可能であれば全てのイベントを送るポイントでABのどちらだったかを送っておくとよい。