0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

GA4・Firebase Analytics・BigQueryでイベントデータを集計・分析する際の違いと注意点

0
Posted at

はじめに

WebやモバイルアプリからFirebase AnalyticsのlogEventでイベントを送信した後、「送ったイベントデータをどこで集計・分析すればいいのか」で迷うことがあります。

Firebase Analyticsでイベントを送信すると、そのデータはGoogle Analytics 4(GA4)にも自動で共有されます。さらにBigQueryにエクスポートすれば、SQLで自由に分析でき、Looker Studioでダッシュボード化も可能です。

しかし、GA4・Firebase Analytics・BigQueryにはそれぞれ得意なことと制限があり、目的に応じて使い分ける必要があります。

用語について

Firebase AnalyticsではlogEvent関数を使ってイベントを送信します。
この記事では、以下のように用語を使い分けます。

用語 意味
イベント logEventで送信する1回分のデータ。イベント名とパラメータのセット(例: button_clickイベント + log_id, log_nameなどのパラメータ)
イベントデータ 送信されたイベントが蓄積されたもの全体。GA4やBigQueryで集計・分析する対象
ログ 文脈によっては「イベントデータ」と同義で使われることがある。CloudWatch Logsなどのシステムログとは別物

「ログを送る」「データを見る」「イベントを集計する」は、いずれもこのlogEventで送信されるイベントデータを指しています。

解消ポイント

  • Firebase AnalyticsのlogEventでイベントを送信したが、GA4との違いや関係性がよくわからない
  • 送信したイベントデータをどこで確認・集計すればいいか迷っている方
  • GA4・Firebase Analytics・BigQueryの使い分けを整理したい

イベントの送信方法

Firebase AnalyticsのlogEventを使うと、Webアプリからもモバイルアプリからもカスタムイベントを送信できます。

実装例

  • Web(JavaScript)
import { initializeApp } from 'firebase/app';
import { getAnalytics, logEvent } from 'firebase/analytics';

const firebaseConfig = {
  apiKey: "YOUR_API_KEY",
  authDomain: "your-app.firebaseapp.com",
  projectId: "your-app",
  storageBucket: "your-app.firebasestorage.app",
  messagingSenderId: "0000000000",
  appId: "1:0000000000:web:xxxxxxxxxxxx",
  measurementId: "G-XXXXXXXXXX"
};

const app = initializeApp(firebaseConfig);
const analyticsInstance = getAnalytics(app);

// カスタムイベントの送信
logEvent(analyticsInstance, 'button_click', {
  count: 1,
  timestamp: new Date().toISOString(),
  log_id: "log_001",
  log_name: "signup_button"
});
  • モバイル(React Native)
import analytics from '@react-native-firebase/analytics';

const eventName = 'button_click';
const eventParams = {
  count: 1,
  timestamp: new Date().toISOString(),
  log_id: "log_002",
  log_name: "purchase_button",
};

await analytics().logEvent(eventName, eventParams);

logEventの構造

上記のコードで送信しているイベントは、以下の構造になっています。

logEvent(イベント名, パラメータ)
         │              │
         │              ├── count: 1
         │              ├── timestamp: "2026-03-14T..."
         │              ├── log_id: "log_001"
         │              └── log_name: "signup_button"
         │
         └── "button_click"

このイベント名 + パラメータの組み合わせが、GA4やBigQueryで集計・分析する対象になります。

イベントデータの流れ

Mobile / Web
    │
    │  logEvent() で送信
    ▼
Firebase Analytics ←→ GA4(自動で共有)
    │
    │  BigQuery Export(設定が必要)
    ▼
BigQuery → Looker Studio(ダッシュボード化)

ポイント

  • logEventで送信したイベントデータは、Firebase AnalyticsとGA4の両方に自動で共有されます。別々に送信する必要はありません
  • BigQueryへのエクスポートは別途設定が必要です(GA4/Firebase Analyticsの管理画面から連携設定を行う)
  • BigQueryに蓄積したイベントデータは、Looker Studioと連携してダッシュボードを作成できます。SQLで自由にクエリを書けるため、GA4のレポート機能では実現できない柔軟な分析やカスタムダッシュボードが構築可能です

重要な注意事項:イベントデータの転送はベストエフォート

mobile/webからGA4/Firebase Analytics、およびGA4からBigQueryへのイベントデータの転送はベストエフォート(最善努力型) です。これは、以下のケースでデータの欠損や遅延が発生する可能性があることを意味します。

  • ネットワーク障害やデバイスのオフライン状態による送信失敗
  • BigQueryのストリーミングエクスポートにおけるレイトヒット(遅延データ)
  • セッションが複数のエクスポート周期にまたがることによるデータ重複

logEventで送信したイベントが100%到達することは保証されません。正確なイベント数の一致が必要な要件の場合は、別途対策を検討する必要があります(後述の「その他のイベントデータ送信方法」を参照)。

GA4・Firebase Analytics・BigQueryの比較

logEventで送信したイベントデータを「どこで見るか」によって、できることが大きく異なります。

観点 GA4 Firebase Analytics BigQuery
ダッシュボード機能 標準・探索レポートあり。カスタマイズ性は限定的 アプリ向けの基本ダッシュボード ダッシュボードなし。Looker Studio連携で自由に構築可能
時系列分析の粒度 時間/日単位が基本 日単位が基本 マイクロ秒単位。秒・分単位の分析が可能
リアルタイム分析 直近30分のデータを確認可能 DebugViewでリアルタイムデバッグ可能 ストリーミング: 数分以内。日次のみ: 翌日反映
ディメンション設定数 イベントスコープ50個、ユーザースコープ25個 GA4と共通 制限なし(GA4側の1イベント25パラメータ上限は適用)
パラメータの参照 カスタムディメンションの事前登録が必要 GA4と同様 事前登録不要。SQLで任意のパラメータを直接参照
通常ダッシュボード反映 24〜48時間以内 24〜48時間以内 日次: 翌日。ストリーミング: 数分以内
無料枠・コスト 無料 無料 10GBストレージ・1TBクエリ無料。超過分は従量課金
サンプリング 1,000万イベント超でサンプリング発生の可能性あり GA4と同様 サンプリングなし。全データで正確な数値
データの削除・修正 個別の削除・修正は不可 GA4と同様 SQLで自由に削除・修正可能

Google Analytics(無料版: GA4)の制限事項

logEventで送信するイベントには、GA4側で以下の制限が適用されます。

収集の制限

項目 無料版の上限
1イベントあたりのパラメータ数 25個
イベントパラメータ名の長さ 40文字
イベントパラメータ値の長さ 100文字
イベント名の長さ 40文字
登録可能なイベント名の種類 アプリ: 500個(自動収集イベント除く)、Web: 制限なし
1ユーザーあたりの1日のイベント送信数 100,000件

例えば、logEventで26個以上のパラメータを送信しても、25個を超えた分はGA4に記録されません。イベント名が40文字を超えた場合も同様です。

レポート・データ保持の制限

項目 無料版の上限
標準レポートのデータ保持期間 無制限(集計済みデータのため)
探索レポートのデータ保持期間 デフォルト2ヶ月、最大14ヶ月まで延長可能
探索レポートのサンプリング 1,000万イベント超でサンプリングが発生
BigQuery日次エクスポート 1日あたり100万イベントまで
BigQueryストリーミングエクスポート イベント数の上限なし。BigQuery側で1GBあたり$0.05の追加費用が発生

有料版(Google Analytics 360)について

上記の制限値を超える場合は、有料版のGoogle Analytics 360を検討することになります。360にアップグレードすると、以下のような緩和が受けられます。

  • 探索レポートのデータ保持期間: 最大50ヶ月
  • BigQuery日次エクスポート: 最大数十億イベント
  • サンプリングの軽減
  • 毎日(高頻度)エクスポートの利用

ただし、Google Analytics 360の料金は公開されておらず、高額であるとされています。正確な費用については、Google公式パートナーまたはGoogleに直接お問い合わせすることを推奨します。

参考: Google Analytics 360 の機能

その他のイベントデータ送信方法

Firebase AnalyticsのlogEvent経由の転送はベストエフォートであるため、イベントデータの正確性が厳しく求められるケースでは、以下のようなアーキテクチャも選択肢になります。

Mobile / Web → Cloud Run → BigQuery → Looker Studio

Firebase Analyticsを介さず、Cloud Runに直接イベントデータを送信する方式です。

Cloud Runを中継することで、以下のメリットがあります。

  • ベストエフォートの問題を解消: アプリケーション側でリトライやキューイングを実装でき、イベントデータの到達保証を高められる
  • データ加工の自由度: BigQueryに書き込む前にデータの整形・フィルタリングが可能
  • GA4の制限に依存しない: パラメータ数やイベント数の制限を受けない

ただし、以下の考慮事項もあります。

  • Cloud Run自体のプログラム実装・運用が必要
  • Cloud Runのスケーリング上限やタイムアウトの考慮が必要
  • GA4のレポート機能(リアルタイムレポートなど)は利用できない
  • 追加のインフラコストが発生する

logEventによる手軽さを取るか、Cloud Run経由の正確性を取るかは、プロジェクトの要件次第です。

まとめ

観点 GA4 / Firebase Analytics BigQuery
手軽さ ✅ 設定不要で利用開始 連携設定・SQLの知識が必要
リアルタイム ✅ リアルタイムレポートあり ストリーミングで数分遅延
分析の自由度 制限あり ✅ SQLで自由に分析
サンプリング 探索レポートで発生の可能性あり ✅ なし
データ保持 探索レポートは最大14ヶ月 ✅ 自分で管理(無制限)
コスト ✅ 無料 無料枠あり、超過分は従量課金
ダッシュボード 標準レポートのみ ✅ Looker Studioで自由に構築

logEventで送信したイベントデータは、GA4・Firebase Analytics・BigQueryのどこからでも参照できますが、手軽にデータを確認したい場合はGA4のレポートサンプリングのない正確な分析やカスタムダッシュボードが必要な場合はBigQuery + Looker Studio、という使い分けがおすすめです。

参考: 公式ドキュメント

GA4

BigQuery Export

Firebase Analytics

Looker Studio

Measurement Protocol(サーバーサイド送信)

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?