はじめに
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に直接お問い合わせすることを推奨します。
その他のイベントデータ送信方法
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
- Firebase Analytics ドキュメント
- イベントをログに記録する(Web)
- イベントをログに記録する(Android)
- イベントをログに記録する(iOS)
- DebugView でイベントをモニタリングする