AMPブログでGoogleAnalyticsの設置する方法
2020-06-11
(LastUpdated: 2020-06-11)
AMPで構築したこのブログに、GAを設定をしたいなぁと思ったので、調べながらトライしてみました。
AMPの公式ドキュメントを見ると、やたらと設定値がたくさんあって、戸惑いました。 AMP アナリティクスについて詳しく知る - amp.dev
細かく検証結果を見たい人や、Google Analytics以外を使いたい人は、いろいろ設定することでさらに便利に使えるようになるのです。
しかし、基本的にはシンプルな設定のみで実装できます。 もちろん、Google Analyticsも問題なく機能します。
ここでは、Google AnalyticsをAMPで実装されたサイトに導入する、基本のやり方を書いてみたいと思います。
Google Analyticsの設定をする
まずGoogle Analyticsを設定します。
Googleアカウントが必要になるので、ない人は取得しておきましょう。
ログインしましょう。
アカウント
「管理ボタン」 👉 「アカウト作成」で作成できます。 プロパティをまとめる「フォルダのような役割」 と考えると、わかりやすいです。 これは複数のサイトを管理している人にとっては便利な機能です。
サイトが一つだけの場合は、「アカウント一つに対してプロパティが一つ」という形になりますね。
プロパティ
一つのウェブサイトにつき一つ用意します。 複数のページを、プロパティに持つことも可能です。
例えば、ブログとホームページを同じドメイン上に持っている人は、分けることが可能です。
データの収集結果を、別々に見ることが可能になります。
トラッキングコードを取得する
「トラッキングコード」 👉 「グローバルサイトタグ」にアクセスして、記載されているコードを取得します。
amp-analyticsコンポーネントを読み込む
ご存知の通り、AMPでは外部javascriptを挿入することができません。
しかし、AMPにはそれらの実装を手助けするための、専用のコンポーネントが沢山用意されております。 その中に、グーグルアナリティクスを実装する為のコンポーネントがあります。 それが、amp-analyticsコンポーネントです。
head内の記述
まずは、他のAMPコンポーネント同様、コンポーネントを読み込みます。
<script async custom-element="amp-analytics" src='https://cdn.ampproject.org/v0/amp-analytics-0.1.js'></script>
headのscriptに、amp-analyticsコンポーネントを読み込む記述を書きます。
AMPサイトにコードを設置する
bodyタグの直下に書いていきます。
次に、bodyの直下にコードを挿入します。
冒頭に書いたように、たったこれだけの記述で動きます。
他のパラメーターは、さらに詳細にデータ取得が必要な場合に使うんですね。
<amp-analytics type="googleanalytics">
<script type="application/json">
{
"vars": {
"account": "UA-XXXXX-Y" //トラッキングIDを設定
},
"triggers": {
"trackPageview": {
"on": "visible",
"request": "pageview"
}
}
}
</script>
</amp-analytics>
最小限の記述で、さらりと実装を完了してしまいます。
コンポーネントを読み込む位置に注意
最初、よくわからないエラーが出て困った・・・😢
調べてみると、amp-analyticsコンポーネントを読み込む位置を、上の方にしなきゃいけない ってことらしいです。
ページに AMP アナリティクス機能を追加するには、 AMP JS ライブラリの前にある
<head>
に次のスクリプトを挿入します。Google Developers
というわけで、コンポーネントを読み込む順番を、変えてみました。
<script async src='https://cdn.ampproject.org/v0.js'></script>
<script async custom-element="amp-analytics" src='https://cdn.ampproject.org/v0/amp-analytics-0.1.js'></script>
☝️こんな順番にしたら、バリデーションエラーが出なくなりました。
設置場所はheadの最後?bodyの最後?
以前は、「bodyの閉じタグの直前」に置くものとされていたようです。
しかし、現在推奨されているのは、「headの閉じタグの直前」 になりました。
これは、アナリティクスの読み込み&処理開始のタイミングに違いがあったとのこと。 処理が 「同期的」だったのが、「非同期的」 になった、ということみたいです。
同期と非同期とは何か?
同期は、ソースコードの上から順に処理をします。 つまり、アナリティクスの記述が書かれている場所に到達するまで、他の処理をしながらやってくるイメージです。 以前はbodyの閉じタグの直前に記述していたのですから、コンテンツが全部表示されてから、トラッキングの処理が動き出す という事ですね。
それに対して非同期は、順番ではありません。 ページにアクセスがあったら、すぐに読み込みをする準備をします。 その他の処理と並走しながら、処理をします。
これにより、他のコンテンツの読み込みを待つ必要がなくなるというわけです。
バリデーションエラーの原因はアドブロックでした
このコンソールエラーがずっと消えなくて、しばらくハマった・・・
GET https://cdn.ampproject.org/v0/amp-analytics-0.1.js net::ERR_BLOCKED_BY_CLIENT
事例を探しまくるが、ヒントを見つけることができない・・・ しばらく悩みました。 さて、どうしたものか。
「ん?あれもしや・・・このブラウザの端っこで赤くなってるやつは・・・」 アドブロックかよっwww chrome拡張のADBLOCKを、ONにしてるせいでした。 超凡ミス・・・😓
ま、まぁ、ちゃんとエラーが消えてくれたので、OKとしましょう(笑)