Google Analytics を使用すると、Web サイトのアクセス情報を多角的に分析できるようになります。 ここでは、Hugo で作成する Web サイトに、簡単に Google Analytics 用のコードを埋め込めるようにしてみます。
Google は従来 Google Analytics (Universal Analytics) を提供していましたが、2023 年 7 月以降は、最新バージョン Google Analytics 4 (GA4) しか使用できなくなります。 ただし、乗り換えは簡単で、設定するトラッキング ID を GA4 用のものに変更するだけです。 Analytics ID の先頭部分を見ると、どちらのバージョンを使用しているかが分かります。
- (旧)Universal Analytics の ID …
UA-12345678-1
- (新)Google Analytcs 4 (GA4) の ID …
G-12345ABCDE
トラッキング ID をコンフィグファイルで設定する
まずは、Google Analytics の管理画面から、「プロパティの追加」を実行し、分析したい Web サイトのアドレスを追加しておきます(Google Analytics のアカウントを持っていない場合は、先にアカウントから作成しておく必要があります)。
そのとき発行されるトラッキング ID(G-12345ABCDE
のような ID)が、その Web サイトへのアクセスを判別するための識別情報となります。
この ID は、Web サイトごとに別のものを使用するので、Hugo のコンフィグファイルで設定するのがよいでしょう。
Hugo には、コンフィグファイル用のパラメータとして、あらかじめ googleAnalytics
というパラメータが用意されています。
下記のような感じで、Google Analytics のサイトで発行したトラッキング ID を設定しましょう。
baseURL = "https://example.com/"
languageCode = "ja-jp"
title = "まく日記"
theme = "maku"
googleAnalytics = "G-12345ABCDE"
上記のように設定すると、テンプレートファイルの中から、.Site.GoogleAnalytics
でトラッキング ID を参照できるようになります。
トラッキングコード (JS) を自動で埋め込むようにする
Google Analytics を有効にするには、各ページの head
要素の先頭に、次のような トラッキングコード を埋め込む必要があります(参考: gtag.js を使用してアナリティクスのトラッキングを設定する)。
<!-- Google tag (gtag.js) -->
<script async src="https://www.googletagmanager.com/gtag/js?id=G-12345ABCDE"></script>
<script>
window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}
gtag('js', new Date());
gtag('config', 'G-12345ABCDE');
</script>
ここでは、Hugo のパーシャルテンプレートを使い、上記の HTML コードを各ページに埋め込むようにしましょう。
G-12345ABCDE
のようなトラッキング ID を指定する部分は、コンフィグファイルの googleAnalytics
パラメータで指定した値で置換するようにします。
{{ if not hugo.IsServer }}
{{ with .Site.GoogleAnalytics }}
<!-- Google tag (gtag.js) -->
<script async src="https://www.googletagmanager.com/gtag/js?id={{ . }}"></script>
<script>
window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}
gtag('js', new Date());
gtag('config', '{{ . }}');
</script>
{{ end }}
{{ end }}
googleAnalytics
が設定されていない場合に、トラッキングコードを出力しないように制御しています。作成したパーシャルテンプレートは、下記のようにテンプレートファイルからインクルードします(ここでは、ベーステンプレート (baseof) からインクルードしています)。
<!DOCTYPE html>
<html lang="ja">
<head>
{{- partial "analytics" . -}}
<meta charset="UTF-8">
...省略...
</head>
<body>
...省略...
</body>
</html>
これで、すべてのページに Google Analytics のトラッキングコードが埋め込まれるようになります。
(おまけ)Hugo 組み込みのテンプレート
実は、Hugo は組み込みの Internal Template として、Google Analytics のトラッキングコードを埋め込むためのテンプレートを用意しています。 任意のテンプレートファイルの中で、
{{ template "_internal/google_analytics.html" . }} <!-- 同期バージョン -->
{{ template "_internal/google_analytics_async.html" . }} <!-- 非同期バージョン -->
のように記述するだけで、簡単にトラッキングコードを埋め込むことができます。 ただし、組み込みのテンプレートは、ローカルサーバー動作時のコード出力抑制には対応していませんし、Google の変更に柔軟に対応することもできないので、できればパーシャルテンプレートは自作してしまった方がよいでしょう。