Next.jsにGoogle Analyticsを導入する
はじめに
この記事では、Next.jsプロジェクトにGoogle Analyticsを導入するための手順を説明します。
具体的には、トラッキングコードを直接組み込む方法と、@next/third-parties
というライブラリを使用した2つの導入方法について記述しています。
Google Analyticsとは
ウェブサイトやアプリのトラフィックを分析するための無料のツールです。
サイト訪問者の行動を理解し、マーケティングの戦略を改善するのに役立ちます。
アナリティクスのアカウントの作成
アカウント名
を入力して、次へ
を選択してください。
プロパティ名
を入力して、次へ
を選択してください。
業種
とビジネスの規模
を選択、次へ
を選択してください。
ビジネスの目標
を選択して、次へ
を選択してください。
同意する
を押してください。
アナリティクスのアカウントが作成されました。
トラッキングコードの確認
管理
を選択、
管理 > データストリーム
を選択してください。
プロバティを選択後、トラッキングコード
を選択、
手動でインストールする
を選択すると表示されます。
環境変数の設定
G-
から始まる、計測ID
を.env
ファイルに追記してください。
GA_ID=''
トラッキングコードの追加
トラッキングコードを適切に組み込む方法として、next/script
コンポーネントを使用します。
next/script
はNext.jsが提供する特別なコンポーネントで、外部スクリプトの読み込みや実行を最適化し、Reactコンポーネント内で安全に使用できるように設計されています。
import type { Metadata } from 'next';
import { Inter } from 'next/font/google';
import Script from 'next/script';
import './globals.css';
const inter = Inter({ subsets: ['latin'] });
export const metadata: Metadata = {
title: 'Create Next App',
description: 'Generated by create next app',
};
export default function RootLayout({
children,
}: Readonly<{
children: React.ReactNode;
}>) {
const gaId = process.env.GA_ID || '';
return (
<html lang='ja'>
<head>
<Script
src={`https://www.googletagmanager.com/gtag/js?id=${gaId}`}
strategy='afterInteractive'
async
/>
<Script id='google-analytics' strategy='afterInteractive'>
{`
window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}
gtag('js', new Date());
gtag('config', '${gaId}');
`}
</Script>
</head>
<body className={inter.className}>{children}</body>
</html>
);
}
ドメイン変更
管理 > データストリーム
から変更することができます。
カスタムイベントの設定
gtagの型定義をインストールしてください。
npm install @types/gtag.js
event_category
やevent_label
のようなイベントを追跡する際に使用されるパラメータも設定することができます。
'use client';
export default function Home() {
const handleClick = () => {
if (window.gtag) {
window.gtag('event', 'カスタムイベントのテスト', {
event_category: 'カスタムイベント',
event_label: 'カスタムイベントのボタン',
});
}
};
return (
<main>
<button
onClick={handleClick}
>
カスタムイベントのテスト
</button>
</main>
);
}
3回クリックされたことがわかります。
event_labelがカスタムイベントのボタン
となっているか確認してください。
ライブラリを使用する
現在は実験的な段階ですが、@next/third-parties
というサードパーティライブラリを使用してGAの設定を行うこともできます。
@next/third-parties
Google Tag ManagerやGoogle Analyticsを簡単に導入できるライブラリです。
ライブラリのインストール
npm install @next/third-parties@latest
// 上記で正しく動かない場合はこちらでインストールしてください
npm install @next/third-parties@14.1.2-canary.7
トラッキングコードの追加
import { GoogleAnalytics } from '@next/third-parties/google';
import type { Metadata } from 'next';
import { Inter } from 'next/font/google';
import './globals.css';
const inter = Inter({ subsets: ['latin'] });
export const metadata: Metadata = {
title: 'Create Next App',
description: 'Generated by create next app',
};
export default function RootLayout({
children,
}: Readonly<{
children: React.ReactNode;
}>) {
const gaId = process.env.GA_ID || '';
return (
<html lang='ja'>
<head>
<GoogleAnalytics gaId={gaId} />
</head>
<body className={inter.className}>{children}</body>
</html>
);
}
sendGAEvent
カスタムイベントを設定することができます。
'use client';
import { sendGAEvent } from '@next/third-parties/google';
export default function Home() {
return (
<main>
<button
onClick={() =>
sendGAEvent('event', 'sendGAEventのテスト', { value: 'test' })
}
>
sendGAEventのテスト
</button>
</main>
);
}
イベントデータ保持期間の変更
保持期間は、初期設定では2か月でデータ保持期間が過ぎると、月単位でデータが削除されてしまいます。これを最長の14か月へ変更することができます。
管理 > データ保持
を選択、
内容を変更して保存
を押してください。
IPアドレスの除外設定
例えば、IPアドレス除外設定を行うと自社からのアクセスによるデータを除外し、レポートに表示しないようにできます。
管理 > データストリーム
を選択、
タグ設定を行う
を選択、
もっと見る
を選択し、
内部トラフィックの定義
を選択してください。
作成
を選択、
IPアドレスを入力したら、作成
を押してください。
作成できたらフィルタを有効にする必要があります。
管理 > データフィルタ
を選択、
フィルタを有効にする
を選択、
再度フィルタを有効にする
を押してください。
探索
ディメンション
データを記述する属性やカテゴリを指します。
ホスト名でフィルタをかけるとこのように表示されます。
Vercelにデプロイするとcookieに保存されない
Vercelにデプロイするとcookieに保存されないため、GAを使用することができませんでした。
表示回数
同じ人が同じページを複数回開いた場合でも、それぞれのページビューがカウントされます。つまり、1人のユーザーが同じページを複数回訪れた場合、その訪問は表示回数として複数回記録されるため、全体のページビュー数に反映されます。
これにより、サイトのどのページがどれだけの関心を引いているかをより詳細に把握することが可能です。
終わりに
何かありましたらお気軽にコメント等いただけると助かります。
ここまでお読みいただきありがとうございます🎉
Discussion