FirebaseのA/Bテスト
アプリ開発でバージョンアップをした後に、「あれ、事前に想定したよりも次画面へのアクセスが伸びないな」というケースがあります。そんな時に「ウェブのA/Bテストのようなことがアプリでできればいいのに・・」と思っていたので、FirebaseのA/Bテストを検証してみました(昨年12月に機能強化されていますが、2018/8/10時点ではまだベータ版でした)。
今回は、「Remote Config テスト」を行います。Firebaseコンソール上で設定値を変えることでテストが行われるので、予めアプリで Remote Configを参照する実装を入れておく必要があります。Androidの場合、下記のページ通りに設定すれば問題ありません。
Firebase Remote Config を Android で使用する
Remote Configを使った場合、アプリローカルのxml設定値をFirebaseコンソールの値で上書きすることができます。A/Bテストでは、さらにターゲット別の設定値を登録して結果を比較できます。
Firebaseのコンソールより、「Remote Config テストの作成」に進んでテスト対象となるターゲットユーザーの割合を指定します。パーセント指定で無作為に選んでくれるのですが、この辺の仕組みを自前で作ると抽出が偏ってしまったりして面倒なので便利ですね。
ちなみに、オプションでユーザー属性などで対象を絞ることもできます。
ターゲットを指定したら、バリアント(テストパターン)の設定を行います。比較対象となるコントロールグループには現状の値が設定されているので、バリアントA・バリアントBというようにパターンを増やして設定を追加できます。下記の例だと3つに分けているのですが、各バリアントには33.33%で等配分されていました。
最後に目標となる指標をセットします。ここは売上や定着日数を選べますが、計測内容によってはイベントを自分で追加する必要があります(オンライン登録を完了した数とか)。イベントを追加するにはアプリのコードを弄らないとなので、Remote Configの設定時に合わせてイベントの登録まで済ませておく必要がありますね。
イベントは以下のように簡単に送れます。細かい話になりますが、Firebaseコンソールからはイベントで指定したパラメータの値(下記の例だと「key1」「key2」)は参照できません。BigQueryと連携すると見えるようですが、単純にイベント測定の用途でAnalyticsの機能を使いたい時に毎回BigQueryを利用するのは手間ですね(有償ですし)・・。
Bundle bundle = new Bundle(); bundle.putString("key1", "foo"); bundle.putString("key2", "bar"); FirebaseAnalytics.getInstance(this).logEvent("my_custom_event", bundle);
テスト開始にするとすぐに計測が始まりましたが、集計には時間がかかるようです(翌日にはカウントされていました)。今回はテストアプリで実行したので十分なデータが得られませんが、実際に運用しているアプリであればデータが蓄積されるに従って最適なバリアントを提案してくれます。
導入の敷居が低く使い易いのですが、気になった点としては以下です。
- アプリがRemote Configに依存した実装になってしまう(仮にサービスが終わる or APIの変更があったら対応が必要)。
- Remote Config で設定できる値は文字なので(型としてはbooleanで取得できたりしますが)、アプリに手を入れずにレイアウトを大きく変える試験をすることは難しい。とはいえ、これはアプリのネイティブ画面なら止むを得ないですね。
- Remote Config の設定値が増えていくと管理が大変そう(フラットな構造でブラウザ上の更新になるので)。
- アプリリリース後から計測しようと思うと、RemoteConfigの設定と FirebaseのAnalytics イベントを追加してアプリを更新する必要がある。
- すでにGoogle Analyticsなどを使っていると、新たにイベントの収集を行うのは冗長的な感がある(Google内で上手く統合してくれればいいのに・・)。
とはいえ自前でA/Bテスト環境を構築するよりはずっとコストがかからないので、いずれ機会があれば使ってみたいと思います。
TAG
プロジェクトマネージャー。人手不足に直面し自ら実装して怒られたりしていますが、コードが書ける管理職がいてもいいよねと自分に言い聞かせています。元々はDBエンジニアだったので、ビッグデータを使った分析にチャレンジ中。
TAG
- Android
- AWS
- Bitrise
- CodePipeline
- Firebase
- HTML
- iOS
- IoT
- JavaScript
- KPI
- Linux
- Mac
- Memcached
- MGRe
- MGReのゆるガチエンジニアブログ
- MySQL
- PHP
- PICK UP
- PR
- Python
- Ruby
- Ruby on Rails
- SEO
- Swift
- TIPS
- UI/UX
- VirtualBox
- Wantedly
- Windows
- アクセス解析
- イベントレポート
- エンジニアブログ
- ガジェット
- カスタマーサクセス
- サーバ技術
- サービス
- セキュリティ
- セミナー・展示会
- テクノロジー
- デザイン
- プレスリリース
- マーケティング施策
- マネジメント
- ラボ
- リーンスタートアップ
- 企画
- 会社紹介
- 会社紹介資料
- 勉強会
- 実績紹介
- 拡張性
- 採用
- 日常
- 書籍紹介
- 歓迎会
- 社内イベント
- 社員インタビュー
- 社長ブログ
- 視察
- 開発環境