【Next.js】SSGサイトにてMatomo(Piwik)のアクセス解析を設置する

Next.jsでSSGサイトを作成している場合のMatomo(Piwik)のアクセス解析の設置方法を紹介します。

環境

今回は次の環境で作業しました。

  • Next.js 13.4.19
  • Matomo 5.0.0

今回はNext.jsのApp Routerを使用して実装しています。

設置手順

設置手順は以下の通りです。

  1. [Matomo]ウェブサイトの作成
  2. [Matomo]タグマネージャーの設定
  3. [Next.js]タグマネージャーの設置

1. [Matomo]ウェブサイトの作成

次の手順でMatomoのウェブサイトを作成します。

  1. Matomoにログイン

まずはMatomoにログインします。

  1. ウェブサイトの作成

ウェブサイトを作成します。

Matomoウェブサイト作成

「ウェブサイト」をクリックします。

Matomoウェブサイト作成

名前とURLを入力して「保存」をクリックします。(他の項目はデフォルトのままでOKです)

これでMatomoのウェブサイトの作成は完了です。

2. [Matomo]タグマネージャーの設定

次にMatomoのタグマネージャーを設定します。

  1. タグマネージャーのページへ移動

タグマネージャーのページに移動します(①)。サイト選択のプルダウンを先ほど作成したサイトに変更します(②)。すでに新しく作ったサイト用のタグマネージャが作成されていますので、矢印部分のコードをインストールするアイコンをクリックします(③)。

  1. タグマネージャーのコードをコピー

下図のようなコードが表示されますので、コピーします。

これでMatomoのタグマネージャーの設定は完了です。

3. [Next.js]タグマネージャーの設置

Next.jsアプリのソースコードにタグマネージャーを設置します。

  1. タグマネージャーのReactコンポーネントを作成

componentsディレクトリにMatomoTagManager.jsを作成し、次のようにコードを記述します。

  • usePathnameuseSearchParamsをインポートします。
  • useEffectを使用して、pathnamesearchParamsが変更されたときにタグマネージャーのコードを実行します。
    • これでページ遷移時にタグマネージャーのコードが実行されます。
  • https://piwik.example.com/js/container_xxxxx.jsの部分は、先ほどコピーしたタグマネージャーのコードに置き換えます。

components/MatomoTagManager.js

'use client' import { useEffect } from 'react' import { usePathname, useSearchParams } from 'next/navigation' const MatomoTagManager = () => { const pathname = usePathname() const searchParams = useSearchParams() useEffect(() => { var _mtm = window._mtm = window._mtm || []; _mtm.push({'mtm.startTime': (new Date().getTime()), 'event': 'mtm.Start'}); var d=document, g=d.createElement('script'), s=d.getElementsByTagName('script')[0]; g.async=true; g.src='https://piwik.example.com/js/container_xxxxx.js'; s.parentNode.insertBefore(g,s); }, [pathname, searchParams]) return ( <> </> ) } export default MatomoTagManager
  1. タグマネージャーのReactコンポーネントを呼び出す

app/layout.jsに次のようにコードを記述します。MatomoTagManagerコンポーネントを呼び出します。

app/layout.js

:
(省略)
:
import MatomoTagManager from "@/components/MatomoTagManager";
export default function RootLayout({children}) { return ( <html lang="ja" suppressHydrationWarning> <head />
<MatomoTagManager />
<body className={clsx("min-h-screen bg-background font-sans antialiased",fontSans.variable)}> <Providers themeProps={{ attribute: "class", defaultTheme: "light" }}> <main className="relative flex flex-col h-screen"> <Header /> <div className="container mx-auto max-w-8xl flex-grow flex flex-wrap"> {children} </div> <Footer /> </main> </Providers> </body> </html>
); }

これでタグマネージャーの設置は完了です。

動作確認

Next.jsアプリをビルドして公開したサイトにアクセスし、Matomoの管理画面でアクセス解析ができることを確認します。

  1. サイトにアクセス

Next.jsアプリをビルドして公開したサイトにアクセスします。

  1. matomo.phpへのリクエストを確認

Chromeの開発者ツールのネットワークタブで、matomo.phpへのリクエストが行われていることを確認します。

  1. Matomoの管理画面でアクセス解析

Matomoの管理画面でアクセス解析ができることを確認します。

これでMatomoのアクセス解析の設置は完了です。

まとめ

Next.jsでSSGサイトを作成している場合のMatomo(Piwik)のアクセス解析の設置方法を紹介しました。

コメントを残す

マークダウン形式でコメントを入力できます。

アップロードファイルの最大サイズ: 512 MB。 画像, 音声, 動画, 文書, スプレッドシート, 対話型, テキスト, アーカイブ, コード, その他 をアップロードできます。 Youtube、Facebook、Twitter および他サービスへのリンクは自動的にコメント内に埋め込まれます。 ここにファイルをドロップ

プロフィール背景
Ryosuke
Ryosuke

ITエンジニア & 講師

クラウドネイティブやアーキテクチャ設計の講師として活動しながら、ITエンジニアのDXを推進するために新しい技術やベストプラクティスを常に学び、エンジニアの生産性と開発品質の向上に貢献することを目指しています。猫5匹飼っています。山奥のポツンと一軒家に住んでいて、事務所は海の近くです。