AMP Analytics/AMP変数とは何か

AMP Analytics

AMP Analyticsとは、AMP(Accelarated Mobile Page)において、サイト解析用のビーコンを送信するためのライブラリの総称を指します。通常のAMPページでは、JavaScriptを実行することができません。そのため、JavaScriptに頼っている多くのマーケティングツール(アクセス解析ツールを含め)はタグを実行することができません。そのような制約の中でも、マーケティングツールを利用できるようにするために、 AMP Analytics というライブラリが存在します。

AMPと同様に、AMP AnalyticsもGithub上で開発が行われており、GoogleアナリティクスやGoogle Adwordsのタグを含め、約40のタグが比較的簡単に設置できるようになっています。

AMP変数

これらのタグを使ってビーコンを送信するには、各ベンダーの指定するパラメーターに値を設定する必要があります。分かりやすいもので言えば、ページURLの欄には、該当ページのURLが自動で設定されるようにする必要があります。もし設定値が固定値であれば簡単ですが、ユーザーの利用環境や閲覧ページに合わせて動的に変更するべき設定値も多数存在します。AMP Analyticsではそのような、動的に変更すべき設定値には AMP変数 として予め手定義されたものの中から最適なものを選ぶことができるようになっています。

分かりやすいAMP変数の例としては、

  • ページURL(CANONICAL_URL, AMPDOC_URL)
  • 参照元URL(SOURCE_URL)
  • ユーザーエージェント(USER_AGENT)
  • ブラウザの言語設定(BROWSER_LANGUAGE)
  • 乱数(RANDOM)

などがあります。

なぜフォーマット化されたタイムスタンプが必要か

Googleアナリティクスで日時系のディメンションを利用しようとすると、「年月日時」を表すディメンションと「分」を表すディメンションの2つが必要になり、これより細かい「秒」単位のデータを集計することはできません。また、Googleアナリティクス標準の時間系のディメンションはサーバー時間をビューで設定したタイムゾーンで表示しているだけに過ぎません。

つまり、

  • レポート作成時に指定するディメンションの数を減らしたい
  • 秒単位など既定の粒度より細かいデータが欲しい
  • ユーザーのタイムゾーンに合わせた日時が欲しい

といった理由から、タイムスタンプをカスタムディメンションに入れることが多々あります。

実は、AMP Analyticsでももともとタイムスタンプをカスタムディメンションに入れるカスタマイズは実施可能でした。しかし、その入れられる値が「UNIXタイムスタンプ」と呼ばれる「1498572753」のような形式となってしまいます。これでは、人間がひと目見たときに日時を読み取ることは不可能です。

そこで、今回の「フォーマット化されたタイムスタンプ」が必要になってきます。

利用例

今回追加されたAMP変数の変数名は、"TIMESTAMP_ISO"です。ページビューを送信する際に、カスタムディメンション1にこのフォーマット化されたタイムスタンプを設定するときは、

<amp-analytics type="googleanalytics">
  <script type="application/json">
  {
    "vars": {
      "account": "UA-xxxxxx-y"
    },
    "extraUrlParams": {
      "cd1": "TIMESTAMP_ISO"
    },
    "triggers": {
      "trackPageview": {
        "on": "visible",
        "request": "pageview"
      }
    }
  }
  </script>
</amp-analytics>

のようにします。また、電話番号リンクをクリックしたときに、イベントラベルにタイムスタンプを設定するなら、

<amp-analytics type="googleanalytics">
  <script type="application/json">
  {
    "vars": {
      "account": "UA-xxxxxx-y"
    },
    "triggers": {
      "trackCall": {
        "selector": "a[href^='tel']",
        "on": "click",
        "request": "event",
        "vars": {
          "eventCategory": "Call Tracking",
          "eventAction": "Tap Call Link",
          "eventLabel": "TIMESTAMP_ISO"
        }
      }
    }
  }
  </script>
</amp-analytics>

とすることができます。

今回の機能追加を経て感じたこと・まとめ

今回の機能追加は、ソースコードにするとたったの4行だけの修正で、それに対するテストコードもたったの12行でした。実装難易度も決して高いわけではなく、自身で数分実装すればできてしまう程度の内容です。しかし、最初にこの機能を提案したのは6月16日であり、この機能が公開されたのは8月XX日で、公開までに2ヶ月以上を要しました。

GithubのIssueを見ていただくと分かるのですが、「なぜその機能が必要なのか」「どういうケースでの利用を想定しているのか」を実装可否の判断に重視しており、何度か聞かれました。また、AMPライブラリのファイルサイズを小さい状態を維持するためにも不要な機能は作りたくない、という意図も見えました。

AMP Analytics周りは他にも不足している機能が多数あります。今後も引き続きAMP Analyticsの機能充実化に貢献していきたいと思います。