Webサイトのパフォーマンスを最適化(Lighthouse 100点)した後は、その状態を維持し、実際のユーザー体験(Core Web Vitals)を計測する必要があります。 しかし、一般的なGoogle Analyticsはスクリプトが重く、Cookie同意バナーの設置も必要になるなど、静的サイトのシンプルさを損なう要因になりがちです。

そこで本稿では、Cloudflare Web Analytics を活用した、軽量かつプライバシーに配慮したアクセス解析の導入について解説します。 また、ダッシュボードを見るだけでなく、PythonとGraphQL APIを用いてデータをプログラムから取得・監視する方法も紹介します。

Cloudflare Web Analyticsのメリット

  1. プライバシーファースト: Cookieを使用せず、IPアドレスなどの個人特定情報も保存しません。GDPRなどの規制に準拠しやすいです。
  2. 超軽量: beacon.min.js は非常に小さく、サイトのパフォーマンス(Lighthouseスコア)に悪影響を与えません。
  3. 自動設定: Cloudflare Pagesを利用している場合、デプロイ設定で有効にするだけで自動的に計測が始まります。
  4. Web Vitals計測: PV数だけでなく、実際のユーザー環境でのLCPやFIDなどのCore Web Vitals指標を計測できます。

GraphQL APIによるデータ取得

Cloudflareのダッシュボードは優秀ですが、日々の監視を自動化するにはAPI経由でのデータ取得が不可欠です。 Cloudflareは詳細な分析データにアクセスするための GraphQL API を提供しています。

以下は、直近7日間のトラフィックデータを取得し、ボットを除外(可能な場合)してJSON形式で出力するPythonスクリプトの例です。

スクリプトの機能

  • Zone IDの自動検出: APIトークンから対象のZone IDを自動でルックアップします。
  • フォールバック機能: Freeプランで制限されている詳細データ(Adaptive Groups)が取得できない場合、自動的に日次集計データ(1d Groups)に切り替えます。

導入手順

  1. APIトークンの発行: Cloudflareダッシュボードの[API Tokens]から、「分析およびログを読み取る (Analytics Read)」権限を持つトークンを作成します。

  2. 環境変数の設定: プロジェクトルートに .env ファイルを作成し、トークンを記述します。

    CLOUDFLARE_API_TOKEN=your_token_here
  3. スクリプトの実行: リポジトリに含まれる web/scripts/analyze_traffic.py を実行します。

    uv run web/scripts/analyze_traffic.py --days 7 --json

実行すると、以下のようなJSONデータが得られます。

{
  "mode": "basic",
  "total_requests": 1752,
  "total_pageviews": 333,
  "details": [
    {
      "date": "2026-01-04",
      "requests": 570,
      "page_views": 121,
      "bytes": 114842033
    }
    ...
  ]
}

Freeプランの制限と対策

実装にあたり、Freeプラン特有のAPI制限に直面しました。 Cloudflare GraphQL APIには主に2つのデータセットがあります。

  • httpRequestsAdaptiveGroups: フィルタリングやドリルダウンが可能な詳細データ。
  • httpRequests1dGroups: 日次で集計された統計データ。

本来であれば前者の AdaptiveGroups を使用して、「User Agentごとの詳細なフィルタリング」を行いたかったのですが、Freeプランではこのクエリの一部が制限されており、エラー(unknown field)が返ってくることが判明しました。

そのため、開発したスクリプトではエラーを検知して自動的に httpRequests1dGroups へフォールバックする実装を行っています。 結果として、プランに関わらず最低限のトラフィック推移(PV数、リクエスト数、転送量)は確実に取得できるようになっています。

まとめ

Cloudflare Web Analyticsは、設定不要で高性能な解析基盤を提供してくれます。 APIを活用することで、サイトの健康状態をプログラムから「自律的に」監視する体制が整いました。 パフォーマンスとプライバシーを両立させたい静的サイト運営者には、最適な選択肢と言えるでしょう。