【React】Google Analytics (GA4) を導入する
この記事では、React で Google Analytics (GA4) の計測を行う方法についてお話しします。Google Analytics (GA4) は様々な手法で導入が可能ですが、今回の記事では react-ga4 というパッケージを使ったパターンを紹介します。
はじめに
Google Analytics のバージョンについて
現在、Google Analytics には 2 種類のバージョンが存在しております。従来の Google Analytics が Universal Property (UA) と呼ばれ、2020年10月にリリースされた最新バージョンが Google Analytics 4 Property (GA4) と呼ばれます。
UA と GA4 の比較
Google Analytics の次世代バージョンとして期待される GA4 ですが、現在はあくまでも移行期間となっており、世の中の現行アプリでは UA が使われていることが一般的です。また、GA4 はまだ機能開発が進められている段階なので、現時点で UA と比較するとまだまだ計測機能が乏しい印象もあります。
一方で、今後のアップデートは GA4 がメインとなり、いずれは UA に変わり置き換わるものなので、これから実装するアプリケーションでどちらを採用するべきか悩む方も多いかと思います。
私が GA4 のみを導入した理由
そもそも、GA4 と UA は並行して計測することが可能なので、「今は機能の揃っている UA を使いたいけど、移行した時には GA4 にも計測データがほしい」という方は、両方とも計測することを推奨します。
では、私がなぜ GA4 だけを導入したかというと工数削減のためです。背景ですが、私が手がけていたウェブアプリは、新しくローンチを予定していたモバイルアプリのランディングページでした。チームメンバーが少ないスタートアップで開発を行なっていたので、なるべく工数はモバイルアプリの開発に割きたい状況でした。また、あくまでも簡易的なランディングページを作りたかっただけなので、Google Analytics に期待していた計測機能は GA4 で十分に満たせました。
最小工数で Google Analytics を導入するためにパッケージを採用する決断をしましたが、React で有力なパッケージには欠点がありました。
- react-ga: analytics.js というクライアントライブラリを使った UA 導入用パッケージ
- react-ga4: gtag.js というクライアントライブラリを使った GA4 導入用パッケージ
既存のパッケージで UA と GA4 が簡単に同時に導入できるのであれば検討したかったのですが、残念ながら上記のパッケージはどちらとも片方の Google Analytics にしか対応しておりません。そもそも、GA4 を計測するためには gtag.js が必須 (UA は analytics.js と gtag.js 両方で計測できる) なのですが、react-ga4 では UA の計測が行えませんでした。
というわけで、今回の要件では GA4 だけで十分だったので、最新のクライアントライブラリを使った react-ga4 で Google Analytics を導入しました。
React-ga4 を使った実装手順
Google Analytics を準備
Google Analytics にアクセスして、管理画面からアカウントを作成します。
1)2) 必須入力項目を記入し、Google Analytics アカウントとプロパティの作成を進めます。
3) データストリームメニューからストリームを作成します。
私は、ウェブアプリケーションで測定を行うので、Web を選択します。
4) サイト情報を入力すると、測定 ID が現れます。
この測定 ID を使って以降の設定を進めるので、メモをしておくと便利です。
番外編) 以降の設定を進めたら、レポートメニューから計測データが確認できます。
React-ga4 をインストール
基本的な使い方は UA に対応していた react-ga と大差ないので、react-ga に慣れている方であれば簡単に設定ができます。
npm i react-ga4
import ReactGA from "react-ga4";
// Google Analytics 測定 ID を入力して設定
ReactGA.initialize("G-XXXXXXXXXX");
// ページビューイベントを処理
ReactGA.send("pageview");
参照: https://github.com/PriceRunner/react-ga4
Pageview イベントを処理
React の Single Page Application (SPA) では、一つのページをベースとして、ページ遷移等とともにページ内のコンテンツを置き換える方式でレンダリングされます。そのため、Google Analytics の pageview イベントを正しく処理するようにケアが必要です。
そのために活用するのが、レンダリング直後に呼び出される componentDidMount もしくは useEffect です。
私は、全てのパスで同じ形式 (パス名+クエリ文字列) の pageview イベントを処理したかったので、App.js から以下の usePageTracking を呼び出しています。
import { useEffect } from "react";
import { useLocation } from "react-router-dom";
import ReactGA from "react-ga4";
const usePageTracking = () => {
const location = useLocation();
useEffect(() => {
// Google Analytics 測定 ID を入力して設定
ReactGA.initialize("G-XXXXXXXXXX");
ReactGA.send({
hitType: "pageview",
// アクセスしたパス (pathname) とクエリ文字列 (search) を送付する (必要に応じて編集する)
page: location.pathname + location.search,
});
}, [location]);
};
export default usePageTracking;
その他イベントを送付
カスタムイベントを処理することも簡単に行えますので、参考までにコードを残しておきます。
// ここでイベント名を置き換える
ReactGA.event("custom_event_name");
宣伝
ダイエット中の人を応援するために、ファミリーレストランのメニューをガチャガチャ形式で選べるネタ(?)サイトを作成しました。
カロリーを指定してメニューを選べるので、ネタで遊んでみてください!
普段は、誰でも使いやすい「筋トレ記録アプリ」を開発しておりますので、こちらも是非ご利用ください!
おわりに
React-ga4 パッケージを利用することで、最小工数で Google Analytics を導入することが可能です。冒頭でも紹介しましたが、Google Analytics には複数のバージョンがあり、様々な導入方法があるので、ユースケースに合った方法で導入を考えてみてください!
Discussion