読者です 読者をやめる 読者になる 読者になる

Hatena Developer Blog

はてな開発者ブログ

A/Bテスト設計を工夫し、必要最低限のコストで仮説を検証する

こんにちは、はてなアプリケーションエンジニア兼はてなブログのディレクターをしているid:shiba_yu36 / @shiba_yu36 です。

こちらにて紹介させていただいたとおり、先日Web Designingの2月号の「サイト改善のためのA/Bテスト実践講座」の特集に寄稿させていただきました。

Web Designing: 2015年2月号

Web Designing 2015年2月号 [雑誌]

Web Designing 2015年2月号 [雑誌]

寄稿した内容の下書きを弊社技術ブログにて掲載する許可をいただいたので、今回は本特集についての簡単な紹介と寄稿内容を公開します。

今回の特集はA/Bテストに関して

  • A/Bテストを行う理由
  • 最新のツールの紹介
  • A/Bテストの事例紹介
  • A/Bテストでの統計の活用

などをまとめた特集となっています。そのため、どのようにA/Bテストを始め、またA/Bテストの結果をどのように検証するかについて、この特集を読めば理解できるようになっています。また会社での導入事例も三社分掲載されているため、実際に実践されている内容を知ることもできます。

この特集を見れば、最近のA/Bテストを行うツールはかなり充実してきており、あまりコストをかけずに実施できるようになってきていることが分かります。そのような状況の中で、はてなブログの事例として、そのようにツールが充実してきている中でA/Bテストの設計を工夫することで、さらにA/Bテストのコストを下げられるという観点で寄稿しました。他の記事と合わせて是非参考になればと思います。

それでは以下に寄稿内容を公開します。


A/Bテスト設計を工夫し、必要最低限のコストで仮説を検証する

ユーザー登録などの何らかのコンバージョンを上げるための仮説を立てた時、それを検証する方法としてA/Bテストを利用する場合があります。その場合、仮説が実際に正しいかどうかは検証してみないと分からず、検証の結果そのために利用したすべての実装を捨てることもあります。そのため、私は仮説を立てた場合、検証するためのA/Bテストは作りこむべきではなく、できるだけ仮説を検証できる最低限のものに留め、スピードを重視するほうが良いと考えています。

はてなブログのサービス開発では、このA/Bテストを行う基盤が整備されていて、テストを実施したいとなった時はすぐに実施することができるようになっています。また最近はGoogle AnalyticsやOptimizely、KAIZEN PLATFORMなどのA/Bテストを誰でも素早く実施することができるようなツールも揃ってきています。

しかし、私はこれらのツールを使った上で、A/Bテストの実装の前に少し設計を工夫することで、さらに素早く仮説を検証できると思っています。今回ははてなブログにおけるガイドページからのユーザ登録率の例を取り上げ、どのように設計を工夫し、素早く仮説を検証したかについて紹介したいと思います。

はてなブログの登録率を上げる仮説を考える

はてなブログのチームではブログ登録数を向上させるため、はてなブログの紹介が書かれているガイドページからの登録率の向上に取り組んでいました。その時点では以下の図1のとおり、以下のようなフローでユーザがブログを登録できるようになっていました。

  • ガイドページの右上のボタンをクリックすることで登録ページに遷移する
  • 登録ページで情報を入力し、登録ボタンをクリックする
  • 登録完了

f:id:shiba_yu36:20150128124938j:plain

図1. 最初の登録フロー

この時チーム内から、登録ページに遷移させるよりも、以下の図2のように「ガイドページに情報入力フォームがありそのまま登録できる」方が登録率が上がるのではないか、という仮説が出ました。そこでこの仮説をA/Bテストで検証することにしました。

f:id:shiba_yu36:20150128125003j:plain

図2. ガイドページからそのまま登録できるフロー案

最初のA/Bテスト設計する

上の仮説を検証するためにまずA/Bテストの設計を始めました。まず最初の案では図1のような現行のA案に加えて、仮説である図2のようなB案を実装し、登録率の比較を行おうと考えました。

  • A : ガイドページ登録ボタンクリック -> 登録フォーム入力 -> 登録完了
  • B : ガイドページに置かれたフォームに直接入力 -> 登録完了

このテストを実施するためには、B案の実装を行う必要があります。しかし、実装方法を検討した結果、ユーザ体験を損なわないようにB案を実装しようとすると、思った以上に実装に時間がかかってしまうことが分かりました。仮説を検証するためだけに、ここまでの時間はかけられないと考えました。

仮説を最低限検証できる、よりシンプルな案を検討する

仮説を最低限検証するため、B案で知りたい登録率をより簡単な方法で検証出来ないか検討しました。

結果、以下の図3のように「ガイドページに置かれたフォームに直接入力 -> 登録フォームへ遷移 -> 登録完了」というフローを実装し、以下の両方の計測を行うのは難しくないということが分かりました。

  • ガイドページのフォーム入力率
  • 登録フォームから登録完了への遷移率

f:id:shiba_yu36:20150128125112j:plain

図3. 計測のために実装を簡易化したフロー案

これらを計測出来れば、登録フォームから登録完了への遷移率が100%の場合の計算をすれば、最初に検討したB案での実装であると考えることができるため、よりシンプルな実装で元々の仮説を検証できると考えました。

シンプルなABテストでの検証結果

検証すると図4のように、A案は「ガイドフォームボタンクリック率(30.3%) x 登録フォームからの遷移率(80.1%) = 登録率(24.3%)」という結果に、B案は「ガイドページフォーム入力率(39.1%) x 登録フォームからの遷移率(65.3%) = 登録率(25.5%)」という結果になりました。

f:id:shiba_yu36:20150128125139j:plain

図4. 検証結果

最初に考えたB案の場合、登録フォームからの遷移率が100%と仮定できるため、「ガイドページフォーム入力率(39.1%) x 登録フォームからの遷移率(100%) = 登録率(39.1%)」となり、A案と比べ大幅に登録率を改善できるということが分かりました。実際に有意差検定をおこなったところ、有意差もあることが分かり、仮説が正しいことを検証出来ました。その後、この改善率であれば時間をかけて良いということになり、実際に直接ガイドページのフォームから登録できるように改善し、検証結果通りの効果をあげることが出来ました。

A/Bテストの設計の段階で工夫し、素早く仮説を検証する

はてなブログでは自社でA/Bテストフレームワーク作り、簡単にA/Bテストを実施できるようにしたうえで、設計自体も工夫し、できるだけ素早くシンプルにテストを行っています。

コンバージョン改善をする場合、仮説は正しいとは限りません。仮説が間違っていた場合、作ったものをすべて捨てる可能性もあります。そのため出来る限り少ない時間で実装や検証を行わなければ、たくさんの時間が無駄になってしまいます。

最近は簡単にA/Bテストを実施できるツールが増えてきています。しかしそれらを使った上で、上で挙げた例のように少しの工夫をすることによってより少ない時間で検証できるようになります。仮説を立てた場合、すぐに検証のための実装を始めてしまうことをよくやりがちですが、その前にまずもっと簡単に検証できないかを考えるステップを作ることを心がけてみるとどうでしょうか。


採用情報

はてなではこのように仮説を検証していきながらプロダクトを作っていけるエンジニアやディレクターも募集しています!