React-Static V7 でアクセス数を計測する

react-staticに関して
react-staticに関して

最終的には簡易にできることがわかったのでメモとして。

複数の方法があるので状況次第で選ぶと良いかもしれません。

実現したいこと

  • React-Static V7 で作ったwebサイトのアクセス数を計測

react製のSPAの場合はract-gaを使うことが多い模様です。

また、react-staticには react-static-plugin-google-analytics というプラグインもあります(2ページ目以降が計測できない状態でしたが)。

今回はそのどちらも使わない形での計測を目指します。

対応策

  1. Google タグマネージャー を使う
  2. Google アナリティクス を使う

現状ではGoogleの解析ツールがSPA用の設定を持っているため、基本的にはれそれらを使う形で対応可能でした。

対応策1:Google タグマネージャー を使う

2つ目のページで知りましたが、上記のプラグインが2019年5月ごろに公開されていたようでこれを使うと簡単に導入できます(後でreact-staticのページを確認した際にpluginのotherの部分で紹介されていました…)。

リンク先で中を見ればわかりますが、react-staticでGoogle タグマネージャーを簡単に設置できるというだけで、計測にはGoogle タグマネージャーのトリガーに用意されている「履歴」を使って計測する形のようです。

そのため独自に実装しやすいと思うので、プラグインが無くなっても対応可能でしょう。

タグマネージャーの設定

  1. 「トリガーのタイプ: 履歴」 で 「このトリガーの発生場所: すべての履歴の変更」
  2. 「トリガーのタイプ: ページビュー」 で 「このトリガーの発生場所: すべてのページビュー」

タグマネージャーによるSPAの解析方法で検索すると上記1だけしか書かれていないのですが、履歴は HTML5 pushState API が使用された時に動作するので、アクセスした際のランディングページが記録されないように思います(つまり1ページ目が計測されない?)。

そこで手持ちのサイトでは通常の「ページビュー(SPAではない普通のサイトで全ページのアクセス数を取得するためのトリガー)」も設定しています。

「ページビュー」は履歴では動作しないので、プレビューを見る限りでは「履歴」との二重計測にはならないと思われます。

この辺り私の確認ミスか、react-staticの影響なのかわからず、ちょっと微妙です。

対応策2:Google アナリティクス を使う

  1. Mikeのプログラミング・メモ: React.js
  2. GitHub – googleanalytics/autotrack: Automatic and enhanced Google Analytics tracking for common user interactions on the web.
  3. Googleアナリティクスの便利プラグイン詰め合わせAutotrackのドキュメント日本語版 | 初代編集長ブログ―安田英久 | Web担当者Forum

こちらは Google アナリティクス に用意されているurlChangeTrackerを使う方法で、上記の1つ目のページを参考にすれば概ね設置できました。

参考サイトではカスタムビルドしていますが、面倒なら以下のページから丸ごとコピーして使うこともできます(25KBぐらいになってしまいますが)。

autotrack.custom.jsへのパス


render() {
  return (<script src="autotrack.custom.js" async="">
    </Head>
  );
}

参考サイトではカスタムビルドしたautotrack.custom.jspublicフォルダにいれ、上記のように記載して読み込ませています。

しかしながらこの記述ではパスがおかしくなったので、以下の様に変更して対応できました。


render() {
  return (
    <Head>
      <script async src="/autotrack.custom.js" />
    </Head>
  );
}

process.env.PUBLIC_URLが使えなかったので下記サイトの情報を参考した方法です。

結び

当初は react-ga を試してみたりしていましたが、今回の試行を終えた現時点ではタグマネージャーを使う方法が簡単で便利でした。

単なるページビューの計測に限らず便利に使えるものですから、その意味でもタグマネージャーの方が良いかもしれません。

6人がこの記事を評価

役に立ったよという方は上の「記事を評価する」ボタンをクリックしてもらえると嬉しいです。

連投防止のためにCookie使用。SNSへの投稿など他サービスとの連動は一切ありません。

コメント欄