A/Bテストの配信設計を業界標準に合わせた話 — 「配信率」と「A/B配分」を分離する
ヒートマップエックス エンジニアチーム4分で読了
- engineering
- ab-testing
- product-design
この記事のまとめ
- A/Bテストの割合設定は「配信率」と「A/B配分」という別の関心事が混ざりやすい
- 私たちは2つを独立したパラメータとして分離した
- 分離することで「リスク管理」と「公平な比較」をそれぞれ素直に扱える
HeatMapX にA/Bテスト機能を実装するにあたり、地味だが重要な設計判断がありました。「割合」をどうモデル化するか、です。結論として、「実験に含める割合(配信率)」と「A/Bの配分」を独立した2つのパラメータに分離しました。この記事ではその理由を共有します。
混ざりやすい2つの関心事
A/Bテストの「割合」には、実は性質の異なる2つの関心事が含まれています。
- どれだけの訪問者を実験に巻き込むか(=リスク管理)
- 巻き込んだ訪問者のなかで、AとBをどう配分するか(=比較の公平さ)
初期の素朴な設計では、これらを1つのスライダーにまとめてしまいがちです。しかしそうすると、「安全に小さく試したい」と「AとBを公平に比べたい」という別々の目的が絡まり、ユーザーにとっても実装にとっても分かりにくくなります。
分離したモデル
そこで2つを独立させました。
traffic_allocation(実験に含める割合):全訪問者のうち、実験対象にする比率。0〜100%。- A/B配分:実験対象のなかでの Control と Variant B の重み。
擬似的に書くと、割り当ての判定はこうなります。
- まず訪問者が「実験対象かどうか」を配信率で判定する。
- 対象になった訪問者だけを、A/B配分に従って Control / Variant B に振り分ける。
対象外の訪問者は、通常のページ(変更なし)をそのまま見ます。
分離のメリット
- リスクを段階的に広げられる:配信率10% → 30% → 100% と、比較の公平さ(50:50)を保ったままリスクだけ調整できる。
- 設定の意味が明快:「巻き込む量」と「見せ方」が別のUIになり、誤解が減る。
- 業界標準と揃う:主要なA/Bテストツールも同様に、トラフィック配分と実験内の割り当てを分けて扱っている。
UIにも反映
この設計判断は、そのままUIにも反映しています。実験の設定画面で「実験に含める割合」と「A/Bの配分」を別々に指定でき、実験詳細では両方をサマリーとして確認できます。
まとめ
「割合」という一見シンプルな要素にも、リスク管理と比較の公平さという別々の関心事が潜んでいます。それらを分離してモデル化することで、ユーザーにとって分かりやすく、運用しやすいA/Bテストになりました。小さな設計判断ですが、こうした積み重ねが使い勝手を左右します。