見出し画像

Google OptimizeでNuxtにA/Bテストする



テスト側の準備の話

今回は、Googleの用意しているツールで以下の3つで準備を行いました。

・Google Optimize


・Google Analytics


・Google TagManager



Google Optimize

エクスペリエンスなるものを作成していきます。

任意の名前、テストしたいページのURL、テストのタイプを選んでいきます。

スクリーンショット 2020-07-12 1.24.57

作成したら、パターンを作成していきます。

スクリーンショット 2020-07-12 1.26.51

また、Googleアナリティクスと連携する必要があるので設定していきます。

スクリーンショット 2020-07-12 1.26.56

また今回SPAを扱うので、アクティベーションイベントを設定していきます。

デフォルトだと下記のように、読み込み時のみとなっています。

スクリーンショット 2020-07-12 16.11.46


カスタムイベントを追加しておきます。

スクリーンショット 2020-07-12 16.12.04


これは任意のタイミングで発火させることでA/Bテストを有効化する設定のようです。これをvueのルーティングに合わせて設定しておきます。

この設定が抜けていると、遷移し、コンポーネントの再描画した際にA/Bテストが適用されません。

例えば

↓こんな感じで、最初は作ったパターンがでますが

スクリーンショット 2020-07-12 16.09.08

↓他のページへ遷移すると(コンポーネントが変わると)

スクリーンショット 2020-07-12 16.09.13

↓元のページに戻ると設定したテストの反映が抜けてしまいますのでご注意を。(SPAの性質上)

スクリーンショット 2020-07-12 16.09.17


Google TagManager

タグマネージャーではコンテナを作成していきます。

スクリーンショット 2020-07-12 1.29.54

コンテナにタグを作成します。

スクリーンショット 2020-07-12 1.30.34

Google Optimizeを選択し、オプティマイズのコンテナIDと紐付けます。

また環境変数の登録等も行います。

スクリーンショット 2020-07-12 1.30.46


アナリティクス、タグマネージャーの設定を終え、オプティマイズとの紐付けを完了させておきましょう。

続いて、実際にテストを行うページに各設定で発行したタグを紐づけていきます。


Nuxt側の準備の話

プロジェクト作成

まずは、プロジェクト作成。

$ yarn create nuxt-app OptimizeTest

GTMの追加

今回は、GTMを使ってみた。

ちなみにGTMを使わずに設定することもできるらしい。

上記のモジュールを導入。

スクリーンショット 2020-07-12 0.05.47

SetUpを参考に導入していく。

GTM-XXXXXXX

ここに作成したGTMのコンテナIDを入れる。

Google アナリティクスの追加

上記参考に導入。

ちなみにNuxt公式にも記述がある。 -> Google アナリティクスを使うには?

スクリーンショット 2020-07-12 0.09.47

こちらもSetUpを参考に導入していく。

UA-XXXXX-X

ここもGTMのように作成したアナリティクスのトラッキング IDを入れる。

Google Optimizeの追加

index.vueへGoogleOptimizeが発行しているscriptをheadに埋め込む。

<script lang="ts">
import Vue from 'vue'

export default Vue.extend({
 head () {
   return {
     script: [
       { src: 'https://www.googleoptimize.com/optimize.js?id=OPT-XXXXXX' }
     ]
   }
 }
})
</script>

↓ ちなみにこういうのもある。

なぜindex.vueにしたかというと特に意味はないが、/pages配下のコンポーネントに記載すると、ページが切り替わるたびにコンポーネントの作成と廃棄が繰り返されるので、リクエスト数的な意味だとあまりよろしくはないと思うw

なのでnuxtconfigへ書くとかそこらへんはどうぞご自由に。

ちなみにページ単位でA/Bテストしたい場合、おそらくGoogle Optimize側でURLを指定することができるのでNuxt側では特に設定とかを気にする必要はないと思われる。(間違ってたら教えてください)

カスタムイベントの設定

カスタムイベントを入れておきます。

今回はindex.vueにのみ適用なので下記のように、index.vueのmountedに入れておきます。tsを使っている場合はwidnowの型定義に変更を加えておきましょう。(一旦anyにしてます)

// tsであればこんな感じで型拡張する
declare global {
 interface Window {
     dataLayer: any
 }
}

・・・

mounted () {
   if (window.dataLayer) {
     window.dataLayer.push({ event: 'optimize.activate' })
   }
}


デプロイ

今回は、netlifyにデプロイしました。

SPAモードです。

build周りの設定はこんな感じです。Nuxt公式通り。

スクリーンショット 2020-07-12 0.34.05

無事A/Bテスト導入できました。

テストパターンにはGoogle Optimize側で仕込んだalertが出るようになってます。

スクリーンショット 2020-07-12 0.36.30


終わり。



いいなと思ったら応援しよう!