🎖️

Next.jsにGoogle Analyticsを導入する

2024/06/17に公開

はじめに

この記事では、Next.jsプロジェクトにGoogle Analyticsを導入するための手順を説明します。

具体的には、トラッキングコードを直接組み込む方法と、@next/third-partiesというライブラリを使用した2つの導入方法について記述しています。

Google Analyticsとは

ウェブサイトやアプリのトラフィックを分析するための無料のツールです。
サイト訪問者の行動を理解し、マーケティングの戦略を改善するのに役立ちます。
https://support.google.com/analytics/answer/9304153?hl=ja

アナリティクスのアカウントの作成

アカウント名を入力して、次へを選択してください。

プロパティ名を入力して、次へを選択してください。

業種ビジネスの規模を選択、次へを選択してください。

ビジネスの目標を選択して、次へを選択してください。

同意するを押してください。

アナリティクスのアカウントが作成されました。

トラッキングコードの確認

管理を選択、

管理 > データストリームを選択してください。

プロバティを選択後、トラッキングコードを選択、

手動でインストールするを選択すると表示されます。

環境変数の設定

G-から始まる、計測ID.envファイルに追記してください。

.env
GA_ID=''

トラッキングコードの追加

トラッキングコードを適切に組み込む方法として、next/scriptコンポーネントを使用します。

next/scriptはNext.jsが提供する特別なコンポーネントで、外部スクリプトの読み込みや実行を最適化し、Reactコンポーネント内で安全に使用できるように設計されています。
https://nextjs.org/docs/pages/api-reference/components/script
https://zenn.dev/aiji42/articles/9a6ab12ab5f6e6

src/app/layout.tsx
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_categoryevent_labelのようなイベントを追跡する際に使用されるパラメータも設定することができます。

src/app/page.tsx
'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の設定を行うこともできます。
https://nextjs.org/docs/app/building-your-application/optimizing/third-party-libraries

@next/third-parties

Google Tag ManagerやGoogle Analyticsを簡単に導入できるライブラリです。
https://www.npmjs.com/package/@next/third-parties

ライブラリのインストール

npm install @next/third-parties@latest

// 上記で正しく動かない場合はこちらでインストールしてください
npm install @next/third-parties@14.1.2-canary.7

トラッキングコードの追加

src/app/layout.tsx
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

カスタムイベントを設定することができます。
https://qiita.com/0ba/items/140d9ab17c4656848a96

src/app/page.tsx
'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アドレスを入力したら、作成を押してください。

作成できたらフィルタを有効にする必要があります。
管理 > データフィルタを選択、

フィルタを有効にするを選択、

再度フィルタを有効にするを押してください。

https://wacul-ai.com/blog/access-analysis/ga4-ip-exclusion/

探索

ディメンション

データを記述する属性やカテゴリを指します。

ホスト名でフィルタをかけるとこのように表示されます。

Vercelにデプロイするとcookieに保存されない

Vercelにデプロイするとcookieに保存されないため、GAを使用することができませんでした。
https://zenn.dev/mochinozenn/articles/8218f316e704e7

表示回数

同じ人が同じページを複数回開いた場合でも、それぞれのページビューがカウントされます。つまり、1人のユーザーが同じページを複数回訪れた場合、その訪問は表示回数として複数回記録されるため、全体のページビュー数に反映されます。

これにより、サイトのどのページがどれだけの関心を引いているかをより詳細に把握することが可能です。

終わりに

何かありましたらお気軽にコメント等いただけると助かります。
ここまでお読みいただきありがとうございます🎉

Discussion