OpenWork Tech Blog

OpenWork を運営するエンジニアによるテックブログです。

ABテストの目的と分析時にアナリストが考えていること

f:id:yutaro_honda:20210217170841j:plain

はじめに

こんにちは。データサイエンティストの本多です。今回の投稿はアナリストの仕事の中でも重要かつ頻発のタスクであるABテストの話です。他のタスクを含めた分析の仕事の全体像については、以前の投稿をご参照ください。 参考: オープンワークのアナリストが分析していること

テーマは、ABテストの目的とABテストの分析をするときにアナリストが考えていることです。アナリストの仕事に関する記事ですが、どちらかとアナリスト以外の職種の方に共有したいことなのでエンジニアブログに投稿させてもらいました。ただ、これまでに行った具体的なABテストの事例や分析手法については書いて無いのでご了承願います。

そもそもABテストとは

ABテストについての説明はWikipediaに簡潔にまとまっていたので引用します。

A/Bテスト - Wikipedia

A/Bテスト(英: A/B testing)とは、主にインターネットマーケティングで行われる、施策判断のための試験の総称である。

ウェブサイトにおけるA/Bテスト ウェブサイトにおけるA/Bテストでは、ウェブサイト内の一部分を変更することで、比較したウェブサイト内のパーツ“A”と“B”のどちらがよりユーザビリティの観点から優れているかを検討する。

OpenWorkのWebサービスには内製のABテスト機能が実装されています。その機能を用いてユーザーを2つのグループに分けてそれぞれパターンAとパターンBの機能を使っていただき、それぞれのログを収集することが手軽にできるようになっています。これを用いて新しく何か開発したいときは現行の機能と新機能を比較するABテストを行っています。

ABテストの目的とその分析の目標

ここからが本題です。いきなり結論を書きますが、僕たちがABテストを行う目的は、「会社のミッションの実現に向けてサービスを改善し、将来のユーザーにより良いUXを届けるため」です。そして、ABテストの目的が将来のユーザーに良いUXを提供することなので、ABテストの分析の目標は「将来のユーザーに良いUXを提供するためにはABどちらのパターンを採用すると良いかを決定すること」になります。

もっと言うと、ABテストの目的は「ABテスト実施期間中にどちらのパターンが優れていたのかを判定すること」ではありません、というのがこの記事の主張です。ABテスト期間中の両パターンの優劣を比較することは手段であり、それが目的ではないわけです。

ABテストの目的実現の難しいところ

ABテストの分析の難しさは、「将来のことを知りたいのに、分析に使えるデータは全部過去の物」という点にあります。タイムマシンを使ってパターンAを採用した未来とパターンBを採用した未来を両方見てきて、それぞれ比較して判断が下せたら、目的達成の難易度は随分下がるのですが、残念ながら手元にタイムマシンが有りません。

タイムマシンを使って未来を見てくる代わりに、ABテスト期間中のデータと統計学の知識などを使ってどうにか結論を出すのがアナリストの仕事です。そして、これはそれなりに難しいことなので、少しでも精度高く実施するために他の職種のプロジェクトメンバーに協力してもらいたいことや理解してもらわないといけないことが色々出てきます。

分析の目的は正しく共有したい

ABテストは簡単に見えて実際に実施するとなると大変コストのかかる取り組みです。まず単純に時間がかかります。開発が完了し、すぐにでも全ユーザーにリリースできる状況の新機能や新デザインがあるのに、(だいたいいつも2週間という)比較的長い期間を確保して一つの施策を評価します。結果、本リリースが遅くなってしまいます。

そして、特にデザイナーやエンジニアの方々にとっては、せっかく作ったデザインや機能が採用されず、切り戻しになるリスクを持ったイベントでもあります。コロナ禍によるリモートワーク体制ためプロジェクトの一体感が薄れがちな昨今、ある人の成果物が別の人の判断で却下されるというのは(特に連続してそうなった場合は)、組織作りの観点から見れば相当にリスクのあることだと思います。

それだけのコストとリスクを払ってでも、ABテストを実施していくのであればその意義や目的をきちんと共有しておくべきだと思いますし、プロジェクト内で不要な対立を産まないためにも重要なことだと考えます。

ABテストの目的から逆算してわかること

さて、社内でABテストを行うときによく論点に上がるポイントについて、目的から逆引きして説明できることがあるので順に紹介します。

ABテストの期間はなぜいつも2週間なのか

ABテストを行う場合に決定する必要のあることの一つがテスト期間を何日間確保するかです。十分なアクセス数が見込めるページのテストの場合、アナリストとしてはほとんどの場合、テスト期間を2週間確保するようにお願いしています。(2週間では十分なデータ件数が集まらないと予見されるテストの場合はもっと長期になります。一方で、テスト中に顕著な悪影響が検出された場合は早期にテストを打ち切ることもあります。)

仮に、「ABテスト期間の優劣を比較する」のが目的であれば曜日を気にする必要もなく、テスト期間の日数は何日でもよいはずです。しかし、先にも書いたとおりABテストではテスト期間中ではなくテスト終了後の期間、良いUXを提供できるパターンがどちらなのかを分析し、判断したいのです。その判断を少しでも精度高く行うために、テスト期間中とテスト終了後の条件を可能な限り揃える必要があります。

そこで重要になってくる要素の一つが曜日ごとの違いです。曜日、特に平日か土日かによってOpenWorkのユーザーの傾向(ユーザー層や利用目的、使用されているデバイスなどの内訳)は大きく異なります。そのため、ABテストにおいてはテスト期間中とその後の期間における条件を揃えるために、各曜日のデータが必要です。

「それなら1週間で十分じゃないか」、という意見もありそうですが、テスト開始直後は新しいデザインを見たことによる影響などもあり、開始直後のデータが使えないこともあります。そのため、2週間分のデータが揃うことが望ましいのです。

もちろん、分析の観点からだけ言えば本当はもっと長期間のデータが取れることが望ましいです(特に学生ユーザーは季節ごとの傾向の差もあるので1年分のデータがあるとよいのですが)。しかし、あまりにも長期間に設定してABテストのためにそれ以降の新規の施策を止めてしまうことになれば、サービスを良くするという目的に対して本末転倒なのでだいたい2週間分のデータで結論を出すようにしています。

テスト結果の差に統計学的な有意性を気にする理由

おそらく他の職種の人にとって謎のキーワードになっている「有意差」についても、ABテストの目的から説明します。

例えばABテストでボタンかリンクか何かのクリック率を比較しようとしたとします。この場合、2週間程度テストを続けて、パターンAとパターンBのクリック率が完全に一致する確率はほぼ0であり、結果には何かしらの差がつきます。たとえ2つのユーザーグループに全く同じデザインを提示していたとしても小さな差は発生します。(余談ですがこれをAAテストと呼ぶそうです。)

「テスト期間中の優劣を比較する」のであれば、差が僅差であっても、もしくは偶然生じた差であっても構いません。しかし繰り返しになりますが、本当に知りたいのは「テスト終了後、将来に渡って良いUXを提供出来るパターンはどちらなのか」です。

そのため、2つのパターンの間に発生した差に対して、それが「偶然発生した差」なのか、「両パターンに本質的な差があり、その結果として現れた差」=「今後も継続して同様の結果になることが期待できる差」なのかを見極める必要があります。この判断のために、仮説検定と呼ばれる手法を用いて、差が統計的に有意であったかどうかを判断しています。

まとめ

この記事を通して具体的な分析内容については全く書いていませんが、分析の背後でアナリストが何を考えているのかが少しでも伝われば幸いです。どんなデータに対してどんなSQLを書いてどんな指標を比較するのかといった、具体的な分析プロセスはABテストを行うたびにそのテストの内容によって変わるものです。しかしどのABテストの分析も、優れたパターンを採用することでこれからのOpenWorkをユーザーにとってより良いサービスにすることを目指して行っています。

We're Hiring !

さて、ここまでかなりしっかりABテストの分析をやっているような顔をしてこの記事を書いてきました。 しかし実際のところ、僕たちアナリストチームはABテスト以外にも多くの分析タスクがあり、全ての分析のニーズに対して十分な時間を確保することが困難な状態にあります。

Webサービス版のOpenWorkだけでも十分な時間が確保できないことがある上に、実は最近OpenWorkのスマートフォンアプリ(iOS/Android)のそれぞれについてもABテストの仕組みが実装でき、両アプリの改善に向けてABテストを実施できるようになりました。スマートフォンアプリのOpenWorkもWebサービス版に負けず、良いUXを提供できるものにするため、ABテストに限らず分析に力を入れていきます。それに伴い、アナリストの人手不足も一層厳しくなる見通しです。

オープンワークのミッションに共感し、アプリとサービスの改善に協力してくださる方がいらっしゃいましたら、一緒に働いてみませんか。オープンワーク株式会社では一緒に働く仲間を募集しています。 https://vorkers.jp/recruit/job