Django プロジェクトに Google Analytics(GA4)を導入し、アクセス解析を可能にするための実装手順をまとめました。
今回のポイントは、
- 環境変数で ON/OFF を切り替え可能
- テンプレート側では ID があるときだけ GA4 を読み込む安全設計
- Django 標準構成に沿った自然な実装
という「運用しやすさ」を重視した設計になっています。
Contents
Google Analytics 実装の流れ(全体像)
- 設定ファイルに GA4 用の環境変数を追加
- コンテキストプロセッサーでテンプレートに渡す
- base.html の head 内に GA スクリプトを条件付きで挿入
- README(ドキュメント)の更新
順番に深掘りしていきます。
## 1. 設定ファイルの修正(core/settings/base.py)
環境変数 `GOOGLE_ANALYTICS_ID` を Django に読み込ませます。
Python
# core/settings/base.py
import os
# Google Analytics(GA4)
# 例: GOOGLE_ANALYTICS_ID=G-XXXXXXX
GOOGLE_ANALYTICS_ID = os.getenv("GOOGLE_ANALYTICS_ID", None)ポイント
.envに設定がなければ None(無効) 扱いになる- 本番環境のみ有効化したい時も簡単に制御できる
2. コンテキストプロセッサーの修正(context_processors.py)
GA ID をテンプレートに渡せるようにします。
Python
# core/context_processors.py
from django.conf import settings
def environment(request):
return {
"GOOGLE_ANALYTICS_ID": settings.GOOGLE_ANALYTICS_ID,
}これにより、すべてのテンプレートで {{ GOOGLE_ANALYTICS_ID }} が利用可能になります。
3. base.html に GA4 のタグを追加
GOOGLE_ANALYTICS_ID が 設定されているときだけ GA4 を読み込みます。
HTML
<!-- templates/base.html -->
<head>
{% if GOOGLE_ANALYTICS_ID %}
<!-- Google tag (gtag.js) -->
<script async src="https://www.googletagmanager.com/gtag/js?id={{ GOOGLE_ANALYTICS_ID }}"></script>
<script>
window.dataLayer = window.dataLayer || [];
function gtag(){ dataLayer.push(arguments); }
gtag('js', new Date());
gtag('config', '{{ GOOGLE_ANALYTICS_ID }}');
</script>
{% endif %}
</head>ここが最大のポイント:
ポイント
- ローカルやステージングでは GA が動かない
- 本番だけで安全に計測できる
- Google の公式形式に準拠しているため、メンテしやすい
4. README.md(ドキュメント)の更新
開発者が迷わないよう、環境変数の説明を追記します。
Google Analytics(GA4)
アクセス解析に GA4 を利用する場合、`.env` に以下を追加します。
Bash
GOOGLE_ANALYTICS_ID=G-XXXXXXX値を設定しない場合は GA4 は無効になります。
つまり、スクリプトは読み込まれません。
使用方法まとめ(.env 設定)
Bash
# 本番環境の例
GOOGLE_ANALYTICS_ID=G-XXXXXXXこの実装の特徴
- 環境変数でフラグ管理
→ 本番だけ有効、検証環境では無効など運用が柔軟。 - テンプレートでの条件付き読み込み
→ Django の標準的・安全な書き方。 - Google GA4 の公式ガイドラインに準拠
→ メンテナンス性が高い。 - 追加コードが少なく、Django らしい自然な実装
→ 導入コストが非常に低い。
まとめ
Django に Google Analytics(GA4)を導入するには、
- 設定ファイルで環境変数を受け取り
- コンテキストプロセッサーでテンプレートに渡し
- base.html で条件付きで GA4 を読み込む
という 3 ステップで十分です。
「本番だけ読み込ませたい」「環境差分で制御したい」といったニーズにも完全対応しており、実務もブログ運営もスムーズになります。
コメント