Skip to content

Commit c71e732

Browse files
Merge pull request #36 from Rikublender3d/feature/downloads
fix:fix middleware
2 parents ce1f26b + ee729d4 commit c71e732

File tree

3 files changed

+361
-2
lines changed

3 files changed

+361
-2
lines changed

docs/ga4-google-analytics-test.md

Lines changed: 141 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,141 @@
1+
# GA4・Google Analytics のテスト手順
2+
3+
このプロジェクトでは **Google Tag Manager(GTM)** 経由で **GA4** にデータを送っています。テストは「ブラウザ側(サイトで計測が動いているか)」と「サーバー側(GA4 Data API でデータを読めるか)」の2通りがあります。
4+
5+
---
6+
7+
## クイックスタート
8+
9+
**ブラウザで「計測が動いているか」だけ確認する**
10+
11+
1. `npm run dev` でサイトを開く
12+
2. [アナリティクス](https://analytics.google.com/) → 該当プロパティ → **レポート****リアルタイム** を開く
13+
3. サイト側で数ページ遷移する → リアルタイムで「アクティブなユーザー」が 1 以上になれば OK
14+
15+
**Data API で「データを読めるか」確認する**
16+
17+
1. `.env.local``GA4_PROPERTY_ID``GA_CLIENT_EMAIL``GA_PRIVATE_KEY` を設定
18+
2. `npm install dotenv @google-analytics/data` を実行
19+
3. `node scripts/testGA4.js` を実行 → 「✅ 接続成功!」が出れば OK
20+
21+
---
22+
23+
## 前提:環境変数
24+
25+
| 変数名 | 用途 | 使う場所 |
26+
| -------------------- | ------------------------------------ | -------------------------------------------- |
27+
| `NEXT_PUBLIC_GTM_ID` | GTM コンテナ ID(例: `GTM-XXXXXXX`| サイトに GTM を埋め込む(layout) |
28+
| `NEXT_PUBLIC_GA_ID` | GA4 測定 ID(例: `G-XXXXXXXXXX`| 参照用。実際の送信は GTM 内の GA4 タグで設定 |
29+
| `GA4_PROPERTY_ID` | GA4 プロパティの数値 ID | サーバー側スクリプト(Data API) |
30+
| `GA_CLIENT_EMAIL` | サービスアカウントのメール | 同上(Data API 認証) |
31+
| `GA_PRIVATE_KEY` | サービスアカウントの秘密鍵 | 同上(Data API 認証) |
32+
33+
`.env.local` に上記を設定しておいてください。Data API 用の `GA_CLIENT_EMAIL``GA_PRIVATE_KEY` は、Google Cloud でサービスアカウントを作成し、GA4 プロパティで「表示アナリティクス」権限を付与したうえで取得します。
34+
35+
---
36+
37+
## 1. ブラウザ側のテスト(サイトで GA4 が動いているか)
38+
39+
サイトにアクセスしたときに GTM → GA4 が発火しているかを確認します。
40+
41+
### 1-1. 開発サーバーで確認
42+
43+
```bash
44+
npm run dev
45+
```
46+
47+
ブラウザで `http://localhost:3000` を開き、以下を確認します。
48+
49+
### 1-2. GTM が読み込まれているか
50+
51+
1. ブラウザの開発者ツール(F12)を開く
52+
2. **Console**`dataLayer` と入力して Enter
53+
→ 配列が表示され、中身があれば GTM は読み込まれている
54+
3. **Network** タブで `gtm.js` または `googletagmanager.com` でフィルタ
55+
→ リクエストが 200 で返っていれば GTM スクリプトは読み込み済み
56+
57+
### 1-3. GA4 のリアルタイムレポート
58+
59+
1. [Google アナリティクス](https://analytics.google.com/) を開く
60+
2. 該当の GA4 プロパティを選択
61+
3. 左メニュー **「レポート」→「リアルタイム」** を開く
62+
4. 別タブでサイト(本番 URL または localhost)を開き、数ページ遷移する
63+
5. リアルタイム画面で「過去 30 分間にアクティブなユーザー」が 1 以上になれば、GA4 にイベントが届いている
64+
65+
※ localhost は「参照元」が `localhost` などで出ます。本番ドメインでテストしたい場合は、本番またはステージングの URL で同様にアクセスして確認します。
66+
67+
### 1-4. Google タグ アシスタント(推奨)
68+
69+
1. Chrome に [Tag Assistant Legacy](https://chromewebstore.google.com/detail/tag-assistant-legacy-by-go/kejbdjndbnbjgmefkgdddjlbokphdefk) または [Google タグ アシスタント](https://tagassistant.google.com/) を入れる
70+
2. サイトを開いた状態でアシスタントを起動
71+
3. GTM と GA4 タグが「発火」しているか、エラーがないかを確認
72+
73+
---
74+
75+
## 2. サーバー側のテスト(GA4 Data API でデータを読めるか)
76+
77+
スクリプト `scripts/testGA4.js` で、GA4 に蓄積されたデータを Data API 経由で取得できるかをテストします。
78+
79+
### 2-1. 依存パッケージのインストール
80+
81+
スクリプトは `@google-analytics/data``dotenv` を使います。
82+
83+
```bash
84+
npm install dotenv @google-analytics/data
85+
```
86+
87+
`dotenv` はすでに別用途で入っている場合はそのままで問題ありません。)
88+
89+
### 2-2. 環境変数の設定
90+
91+
`.env.local` に以下が入っていることを確認します。
92+
93+
- `GA4_PROPERTY_ID` … GA4 の「管理」→「プロパティ設定」にある「プロパティ ID」(数値のみ、例: `512349629`
94+
- `GA_CLIENT_EMAIL` … サービスアカウントのメールアドレス
95+
- `GA_PRIVATE_KEY` … サービスアカウントの秘密鍵(`-----BEGIN PRIVATE KEY-----``-----END PRIVATE KEY-----`)。改行は `\n` のままでも、実際の改行に置き換えてもスクリプト側で対応しています。
96+
97+
### 2-3. サービスアカウントと GA4 の権限
98+
99+
1. [Google Cloud Console](https://console.cloud.google.com/) でプロジェクトを選択
100+
2. **IAM と管理****サービス アカウント** でサービスアカウントを作成し、JSON キーをダウンロード
101+
3. [Google アナリティクス](https://analytics.google.com/) → 該当 GA4 プロパティの **管理****プロパティのアクセス管理**
102+
4. サービスアカウントのメールを追加し、権限 **「表示アナリティクス」** を付与
103+
104+
### 2-4. スクリプトの実行
105+
106+
```bash
107+
node scripts/testGA4.js
108+
```
109+
110+
- 成功時: 「✅ 接続成功!」と、直近 7 日間の `/articles/` の PV サンプルが表示されます
111+
- データが 0 件: GA4 にまだデータが溜まっていないか、フィルタ条件(`/articles/` で始まるページ)に合うアクセスがない可能性があります
112+
- エラー: 環境変数不足・権限不足・プロパティ ID 誤りなどを確認してください
113+
114+
### 2-5. 中身のカスタム(任意)
115+
116+
`scripts/testGA4.js` 内の `runReport` で、`dateRanges``dimensions``metrics``dimensionFilter` を変えると、別の期間や指標でテストできます。
117+
例: `dimensionFilter` を外せば「全ページ」の PV を取得できます。
118+
119+
---
120+
121+
## 3. チェックリスト(テスト時)
122+
123+
| 項目 | 確認方法 |
124+
| -------------------------- | ---------------------------------------------------------- |
125+
| GTM が読み込まれている | 開発者ツール Console で `dataLayer` を表示 |
126+
| GA4 にイベントが届いている | アナリティクス「リアルタイム」でアクティブユーザーが増える |
127+
| Data API でデータを読める | `node scripts/testGA4.js` が成功する |
128+
| 本番・ステージングでも動く | 本番/ステージング URL で上記を同様に確認 |
129+
130+
---
131+
132+
## 4. よくあるトラブル
133+
134+
- **リアルタイムに自分が出ない**
135+
- 広告ブロッカーや Cookie 無効で GA がブロックされていないか確認
136+
- GTM の GA4 タグで「設定変数」の測定 ID が正しいか確認
137+
- **testGA4.js で「権限がない」**
138+
- GA4 の「プロパティのアクセス管理」でサービスアカウントに「表示アナリティクス」が付いているか確認
139+
- **「データがありません」**
140+
- 直近 7 日間に `/articles/` で始まるページの閲覧があるか確認
141+
- フィルタを外して全ページで試す(`dimensionFilter` を削除またはコメントアウト)

0 commit comments

Comments
 (0)