logo hsb.horse

Architecture Decision Record

Partytown と Google Analytics(GA4)導入方針

GA4(G-WZ3RT34EZZ)を Partytown 経由で導入し、主スレッド負荷を抑えつつページビュー計測を開始する。

採用 #analytics #ga4 #partytown #performance #privacy

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.jstext/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/partytowngtag.js をWorker実行する(採用)
  • Option C: GA4を導入せず、別の軽量解析ツールに切り替える

Rationale

  • 性能: Partytownでサードパーティ実行をWorkerへ逃がし、主スレッド負荷を下げられる。
  • 運用性: 共通レイヤーに集約することで、ページ追加時の計測漏れを防げる。
  • 段階導入: まずはページビューに限定し、後からイベント設計を安全に追加できる。
  • 監査性: 実行条件(本番のみ)と「デフォルト設定で開始する」前提を明文化できる。

Consequences

  • 依存関係として @astrojs/partytown の追加と astro.config.mjs へのintegration設定が必要になる。
  • Layout から読み込む共通のAnalyticsコンポーネント(または同等責務)の追加が必要になる。
  • 環境変数 PUBLIC_GA_MEASUREMENT_ID の定義・運用ルールを整備する必要がある。
  • プライバシーポリシーに GA4 利用と計測目的を反映する必要がある。
  • 受け入れ基準は以下とする。
    • 本番のみで GA タグが出力されること
    • すべての公開ページでページビューが計測されること
    • Lighthouse 等で主スレッド負荷悪化が許容範囲に収まること