Partytown と Google Analytics(GA4)導入方針
Decision
- アクセス解析には Google Analytics 4(GA4)を採用し、計測IDは
G-WZ3RT34EZZを使用する。 - GAスクリプトは
@astrojs/partytownを導入し、type="text/partytown"でWeb Worker側にオフロードする。 - 計測コードの出力責務は共通レイヤー(
Layout配下の専用コンポーネント)に集約する。 - 計測は本番公開URLのみで有効化し、ローカル開発・プレビュー環境では無効化する。
- 初期スコープはページビュー計測のみとし、カスタムイベントは別ADRで定義する。
- 初期導入では
gtag('config', ...)に追加のプライバシーパラメータを上書きせず、GA4のデフォルト設定で本番運用する。
実装規約
| 項目 | 規約 |
|---|---|
| Script 実行方式 | gtag.js は text/partytown で読み込む。 |
| ID管理 | 計測IDはコード直書きせず、PUBLIC_GA_MEASUREMENT_ID 経由で注入する(初期値 G-WZ3RT34EZZ)。 |
| 出力条件 | PROD かつ 計測IDが存在する場合のみタグを出力する。 |
| 配置 | ページ個別ではなく共通 Layout で一元出力する。 |
| イベント範囲 | 初期は page_view のみ。任意イベントは対象外。 |
Context
現状はアクセス解析が未導入で、流入・閲覧傾向・主要ページの把握ができない。一方で、サードパーティスクリプトを主スレッドで実行すると、TTI/FID/INPに悪影響を与える可能性がある。
既存構成は Astro の共通 Layout で head を集中管理しており、解析タグも同じ責務に載せるのが自然である。多言語サイトであるため、各ページの個別実装は避け、全ページ一貫で同じ計測条件にする必要がある。
Options
- Option A: 通常の
gtag.jsを主スレッドで直接読み込む - Option B:
@astrojs/partytownでgtag.jsをWorker実行する(採用) - Option C: GA4を導入せず、別の軽量解析ツールに切り替える
Rationale
- 性能: Partytownでサードパーティ実行をWorkerへ逃がし、主スレッド負荷を下げられる。
- 運用性: 共通レイヤーに集約することで、ページ追加時の計測漏れを防げる。
- 段階導入: まずはページビューに限定し、後からイベント設計を安全に追加できる。
- 監査性: 実行条件(本番のみ)と「デフォルト設定で開始する」前提を明文化できる。
Consequences
- 依存関係として
@astrojs/partytownの追加とastro.config.mjsへのintegration設定が必要になる。 Layoutから読み込む共通のAnalyticsコンポーネント(または同等責務)の追加が必要になる。- 環境変数
PUBLIC_GA_MEASUREMENT_IDの定義・運用ルールを整備する必要がある。 - プライバシーポリシーに GA4 利用と計測目的を反映する必要がある。
- 受け入れ基準は以下とする。
- 本番のみで GA タグが出力されること
- すべての公開ページでページビューが計測されること
- Lighthouse 等で主スレッド負荷悪化が許容範囲に収まること
hsb.horse