BLOGMarTechのトレンドや要素技術、各種サービスについて取り上げて紹介していきます。オープンソースTweet前回記事で触れた、A/Bテストその他の「オンラインフィールド実験」のためのオープンソース「PlanOut」。先日の記事ではA/Bテストの仕組みとPlanOutの特長、インストール方法から使い方までを概観しました。※前回記事はこちら今回は「PlanOut」のキーコンセプトである「ネームスペース」に着目して、その設計ポイントを紹介していきます。Facebookの「ユニバース」に似た概念で、オンラインフィールド実験同士の重複による問題を解決するためののものです。「オンラインフィールド実験」は1回の実験では決定的ではないことが多く、同じパラメータを操作する実験によるフォローアップが必要です。2回目の実験では、成果をより正確に推定するためにほぼ同一の設計の実験を再度行ったり、または新しいバリエーションを試したりします。このような継続的な再設計と開発により、パラメータの影響が変化する可能性があります。同じサービスの同じ部分に複数の実験が並行して実行されることがあります。これらを矛盾なく実行するためには、各実験によってどのパラメータが設定されているかを追跡・制限することができるシステムを持つのが有用です。このためには、実験ツールをクロスプラットフォームなものにし、異なるチームによって異なる時間に開始された複数の実験に対してそれぞれ実験対象数の割り当てができるようにする必要があります。「ネームスペース」の仕組み「ネームスペース」の仕組みにより、オンラインフィールド実験の実施時には、ユーザーのアクセスごとに「フォントサイズは12pxか14pxか」「ページあたりのアイテム数は10か20か」などのパラメータを、直接要求するのではなく、ネームスペースから要求するようになります。このパラメータは、そのプライマリユニット(例:ユーザーID)が属する実験がある場合、そのユニットが含まれている実験についてどの検証プランを表示すべきかを処理処理します。開発者の視点からは、実験システムから直接パラメータを要求していた時と同じように、「ネームスペース」にパラメータをリクエストし、記録することができます。「ネームスペース」の仕組みの裏側では、プライマリユニットは多数のセグメント(例えば、10,000)のうちの1つにマッピングされます。新しいテストが作成されると、セグメントはランダムに割り当てられます。セグメントが実験に割り当てられている場合、入力データは実験システムに渡され、対応する「Experiment」オブジェクトのロジック通りにランダム割り当てが行われます。Namespacesプライマリユニットが実験に割り当てられていない場合や、実験で定義されていないパラメータが要求された場合は、デフォルトの実験値を使用できます。これにより、実験者は、現在実行中の実験に干渉しないように、即座にパラメータのデフォルト値を設定することができます。「ネームスペース」を使ってA/Bテストを行う例えば下記のような実装により、「ネームスペース」を使ってA/Bテストを行うことができます。実験の経過は下記のような流れとなっています。V1のテストを最初10%のセグメントにのみ開始V1のテストを30%のセグメントに拡大V2のテストを40%のセグメントに実施V2のテストを中止V3のテストを30%のセグメントに対して開始まとめ以上の通り、「PlanOut」は、個々のユーザーに対してランダムに検証プランを割り振る仕組みの管理層として「ネームスペース」を用意しています。この層が存在することにより、実験を実施する側は、実験プランをコードに書き加えることで機動的に実験を拡大したり、新たな実験に変更したりすることができるわけです。「PlanOut」はA/Bテストの下記のようなユースケースを踏まえた現実的なフレームワークといえます。Facebookの毎日数千の実験のなかから生まれてきた所以でしょう。A/Bテストをまずは少量のユーザーから開始し、反応がよければ徐々に増やしていきたい複数のA/Bテストを同時に走らせたい。どっちもやっていない層との比較もしたい開発者と実験者が同じチームの場合には、「PlanOut」はオンラインフィールド実験のツールとして魅力的な選択肢になってくるのではないでしょうか。コードを書けるメンバーが検証チーム内にいない場合にはなかなか運用が難しいツールであることも確かです。都度実験プランをコードに書いて反映しなければならないのを負担に感じる場合もあるでしょう。いった場合には「Optimizely」などのA/Bテストツールが選択肢に入ってくるのだと思います。»プロフィールデジタルマーケッターとしてキャリアを始めた後、ウェブエンジニアに転身し、コンバージョン率改善系のSaaSプロダクト開発・提供をリードエンジニアとして主導してきました。Technology)について紹介していきます。※ここで発信する情報は著者個人の見解に基づくものであり、所属企業・団体を代表するものではありません。(1)リンクこのブログについてスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。