エンジニアの小林と申します。
LIFULL HOME'S の横断領域の開発を担当しています。
私たちの開発しているLIFULL HOME'Sでは、A/Bテストの実施によって市場学習(≒PDCA)の回数を増やし、より良いプロダクトを作り上げることを目的として、日々多くのA/Bテストが実施されています。
しかしながら、いくつかの問題があります。
今回はLIFULL HOME'SにおけるA/Bテストの成熟度と課題、そして現在の取り組みをご紹介します。
A/Bテストの成熟度と課題
A/Bテスト成熟度モデル
Kohavi, R., Tang, D., & Xu, Y. (2020).によるA/Bテスト成熟度モデルに照らすとLIFULL HOME'SのA/BテストはWalkフェーズへ移行を目指している段階です。 Walkフェーズへ移行するにあたり課題となったのは
- A/Bテスト設計の標準化
- 結果の信頼性の確立
の2点です。
フェーズ | 概要 |
---|---|
Crawl | A/Bテストで利用するユーザー識別子の発行と結果を集計するための基盤が整っている。 |
Walk |
標準的な指標の定義ができている。 ユーザーのサンプル比率のミスマッチ(SRM)が起きないように仕組み化されている。 A/Bテスト結果の信頼性が確立されている。 |
Run | 評価基準が合意され、システマチックな意思決定するプロセスが確立されている。 |
Fly | テスト集計~プロダクトへのロールアウトまで全てのプロセスが自動化されている。 |
課題
EDDの導入を済ませ、次の課題は更なる標準化と結果の信頼性の確立となりました。
ここで課題となるのが集計・分析の過程です。
A/Bテストのプロセスを整理すると以下の図のようになります。
1. テストの設計の標準化についてはEDD(Experimental Design Doc)の導入により一定の改善が行われています。 EDD導入については以下のnoteをご覧下さい。
note.com 2. テストの実装、3. テストの実施については半年ほど前にA/Bテスト用社内packageが開発され、新規マイクロサービスにおいてはA/Bテストを低コストで実装できるようになりました。
4. テストの計測については主にBigQueryに接続したGoogle スプレッドシートにおいて行われています。
このGoogle スプレッドシートのテンプレートが部署(賃貸・分譲 etc...)によって異なり、BigQueryに対するクエリやベイズ計算のロジックもそれぞれに実装されています。
スプレッドシートで表示している値は汎用性を持たせられており、EDDで判断指標として指定したGoal MetricsやGuardrail MetricsなどのMetrics以外にも多くの指標を取得しています。
また、この知見を蓄積するドキュメントはテストごとにConfluence(アトラシアン社製企業向けWiki)にまとめられていますが、Confluenceは検索性が低くInstitutional memoryの蓄積(組織全体が過去の経験から学んだことを、どれだけ覚えているか)という観点では質が低い状態です。
新しい取り組み
前項で挙げた課題を解決するために
- A/Bテストをはじめとしたコントロール実験を正確に測定し、意思決定を明確化すること
- 結果・分析を記録し、施策の知見を未来に向けて蓄積すること
を目指したコントロール実験実行・分析基盤としてexp-libraryというA/Bテスト管理基盤を作成しました。
構成図
メトリクス定義の複雑な入力を受け付けるために、Next.jsを採用しました。
Python製の集計用バッチを定期実行してBigQueryからユーザーの行動データを取得し、集計・ベイズ計算を実行してBigQueryに保存しています。
A/Bテスト一覧
登録されたA/Bテストの一覧です。
検索と様々な絞り込みが可能です。
後述するテスト情報の詳細の内容も含めて文字列検索をするため、Confluenceで感じていた過去の施策の検索しにくさを解消します。
A/Bテスト詳細(概要)
登録されたA/Bテストの詳細情報です。
こちらで計測のオン・オフが可能です。実施期間中のみ自動で計測する仕様にもできましたが、過去の施策の結果も収集するために、手動で切り替えられるようにしています。
こちらから施策のドキュメントにアクセス可能です。
A/Bテスト詳細(結果)
計測結果を表示しています。
解決された課題
今回作成した集計バッチで全てのA/Bテストを集計することで、全社で集計フローが統一されました。
また、これまでは部署ごとのスプレッドシートの中にあったクエリや計算ロジックがPythonのコードとしてGitHubで管理されることで、統計に知見のあるエンジニア・データサイエンティストが内容を精査・改善するハードルが下がりました。
これによりテストの計測について、一定の標準化が成され、結果の信頼性を担保に向けて検証が容易になりました。
これからの展望
現在このexp-libraryは既存のスプレッドシートから移行するべくβテストと称して社内の一部の施策担当者からFBを受け、改善を行っています。
今後はエンジニア・企画の工数を削減し、A/Bテストの回数を増やすべく、以下の機能実装を行っていきます。
- A/B テスト勝敗判定の自動化
- A/B テストの開始・終了の自動化、A/B寄せの自動化
- Feature Flag
- 多腕バンディットアルゴリズムによるコントロール実験機能
まとめ
exp-libraryの命名の由来は以下のとおりです。
市場調査の数を指数関数的(exponentially)に増やし、あらゆる実験(experiments)を収集し、経験(experience)を蓄積し、公開する。
「公共図書館の本質的な機能は、資料を求めるあらゆる人々やグループに対し、効率的かつ無料で資料を提供するとともに、住民の資料要求を増大させるのが目的である」
中小都市における公共図書館の運営(1963)
会社の資産とも言える施策の試行錯誤を正確に記録した資料を残し、今後に活かしていくことを目的に基盤を作成しました。
LIFULL HOME'SのA/Bテストをより良い状態にしていくために今後も改善をしていきます。
ともに良いプロダクト作りをしてくれる仲間を募集しています。