Event Trackingとは、モバイルアプリ内でのユーザーアクション(ボタンクリックから購入まで)に関するイベントの収集と分析です。質の高いevent trackingは、プロダクトアナリティクス、A/Bテスト、パーソナライゼーションの基盤となります。Amplitude(2024年)によると、体系的なEvent Trackingを導入しているチームは、データ駆動型アプローチにより製品決定を3倍迅速に行えます。イベントなしではアプリの分析は機能しません。
重要ポイント
Event Trackingとは、アプリケーション内でのユーザーの個別アクションを収集、保存、分析するプロセスです。各イベントは名前(event_name)と一連のパラメータ(event_params)で構成されます。例えば、purchaseイベントにはprice、currency、product_id、quantityなどのパラメータがあります。
Screen Viewが画面を開いた事実を記録するのに対し、Event Trackingはユーザーがその画面で何をしているかを具体的に記述します:「購入」ボタンを押した、カートを開いた、プロモコードを適用した。イベントなしではユーザーアクションの動機やコンテキストを理解することは不可能です。
各Analytics Eventは必須フィールドとオプションフィールドで構成されます。必須:event_name、event_timestamp、user_id(またはdevice_id)。オプション:パラメータ、コンテキストの説明。
| フィールド | 必須 | 例 |
|---|---|---|
| event_name | はい | "purchase_completed" |
| event_timestamp | はい | 1719876543000 |
| user_id | はい | "user_abc123" |
| session_id | いいえ | "session_456def" |
| revenue | いいえ | 9.99 |
| currency | いいえ | "USD" |
revenueパラメータは特に重要で、MMPプラットフォームに渡されROASやLTVの自動計算に使用されます。
イベントは発生源と目的によって分類されます。この分類はデータ構造の整理と、チームごとのアクセス権限設定に役立ちます。
SDKは分析プラットフォームが自動的に基本イベントを収集します:app_install、app_remove、session_start、screen_view。Firebase Analyticsはコードを1行も書かずに約20の自動イベントを生成します。これらのイベントは基本メトリクスをカバーしますが、ビジネスロジックの理解には不十分です。
カスタムイベントこそがEvent Trackingを価値あるものにします。これらはビジネスアクションを記述します:add_to_cart、start_subscription、level_complete、share_content、search_performed。カスタムイベントはアプリケーションコードからの明示的な送信が必要です。
// Firebaseにカスタムイベントを送信
val bundle = Bundle().apply {
putString(AnalyticsParam.ITEM_ID, "prod_789")
putString(AnalyticsParam.ITEM_NAME, "Premium Subscription")
putString(AnalyticsParam.CURRENCY, "USD")
putDouble(AnalyticsParam.PRICE, 29.99)
putString(AnalyticsParam.SOURCE, "onboarding_screen")
}
FirebaseAnalytics.getInstance(this)
.logEvent("subscribe_premium", bundle)
この例ではsubscribe_premiumイベントに4つのコンテキストパラメータが含まれています。sourceパラメータにより、ユーザーがどの画面からサブスクリプションを開始したか(オンボーディング、設定、ペイウォール)を把握できます。
イベントに加えて、Event TrackingにはUser Properties(ユーザーに紐づく属性:サブスクリプションレベル、国、アプリバージョン)があります。User Propertyは一度送信され、そのセッションの以降のすべてのイベントに適用されます。これにより、イベントごとにパラメータを追加せずに分析をセグメント化できます。
Super Properties(Amplitude)またはGlobal Properties(Mixpanel)は、ユーザーではなくセッションに紐づく属性です。A/Bテストに使用され、variant_idをSuper Propertyとしてセッション内のすべてのイベントに追加することで、分析者がユーザーのグループを識別できます。
収益イベントはトランザクションを記録するための独立したクラスです。金額、通貨、購入タイプ(サブスクリプション、単発購入、復元)を含みます。MMPプラットフォーム(AppsFlyer、Adjust)はROAS計算のために収益イベントを必要とします。
Branch(2024年)のデータによると、収益イベントをMMPに正確に送信しているアプリは、アトリビューションデータの精度が25%向上し、CPIではなくLTVに基づいたキャンペーン最適化が可能になります。
Event Trackingの設定は3つの段階で進めます:イベントスキーマの計画、SDKの統合、データの検証。
Event Taxonomy(イベント分類ドキュメント)を作成します。各イベントの名前、パラメータ、送信トリガー、所有者を記述します。Eコマースの例:order_completed → パラメータ:order_id、total_price、items_count、payment_method、shipping_city。
Analytics SDKをプロジェクトに組み込みます。Firebase Analytics、Amplitude、Mixpanel — いずれのSDKもApplication.onCreate()での初期化が必要です。Flutterの例:
import 'package:firebase_analytics/firebase_analytics.dart';
class AnalyticsService {
final _analytics = FirebaseAnalytics.instance();
Future<void> logPurchase({
required String productId,
required double price,
required String currency,
}) async {
await _analytics.logEvent(
name: 'purchase_completed',
parameters: {
'product_id': productId,
'price': price,
'currency': currency,
'timestamp': DateTime.now().millisecondsSinceEpoch,
},
);
}
}
AnalyticsServiceクラスはすべてのイベント送信を集中管理します。各メソッドはビジネスアクションに対応しています。これにより、イベントが送信されない場合の原因特定が容易になります。プロジェクトの規模が拡大しても、メソッド数は50〜100に増える可能性がありますが、フィーチャーごとにグループ化されているため構造は読みやすいままです。
Firebase DebugViewを使用すると、開発端末上のイベントをリアルタイムで確認できます。次のコマンドでモードを有効にします:adb shell setprop debug.firebase.analytics.app your.package。すべてのイベントが5秒未満の遅延でFirebaseコンソールに表示されます。
DebugViewを有効にしたら、アプリを開いてテストシナリオ(登録、購入、カタログ閲覧)を実行します。コンソールで以下を確認します:すべてのイベントが送信されたか、正しいパラメータが渡されているか、重複がないか。Amplitudeにも同様のツール — Amplitude Debugger(iOSおよびAndroid向け)があります。
CI/CDによる自動検証は次の品質レベルです。パイプラインにスクリプトを追加し、スキーマ内の各イベントがテスト実行中に少なくとも1回送信されたことを確認します。これにより、イベントが欠落したバージョンのリリースを防止し、QAエンジニアの時間を節約します。
イベントの命名はEvent Trackingにおいて最も過小評価されている側面です。誤った名前は、プロジェクトに50を超えるイベントがあると分析を無意味にします。
object_actionパターン(小文字、snake_case)を使用します:product_added、cart_opened、payment_failed、subscription_cancelled。オブジェクトはエンティティ、アクションは過去形の動詞です。「商品が追加された」「カートが開かれた」のように文として読めます。
スペース("Add to Cart")、CamelCase("AddToCart")、ドット("add.to.cart")、ハイフン("add-to-cart")は使用しないでください。ほとんどのSDKはsnake_caseを推奨しています。UI要素名("btn_submit_clicked")も使用しないでください — イベントは技術的ではなくビジネス的なものであるべきです。
プレフィックスとしてフィーチャー名や画面名を追加します:onboarding_step_completed、checkout_payment_selected。これにより、レポートで機能ごとにイベントをフィルタリングできます。
パラメータは3種類に分類されます:string(値)、number(集計用の数値)、boolean(フラグ)。Stringパラメータはカテゴリデータ(国、トラフィックソース、商品名)を含みます。Numberパラメータはメトリクス(価格、数量、期間)に使用されます。Booleanパラメータは状態を示します:is_trial、is_promo_applied。
1つのパラメータにオブジェクトや配列を渡すのは避けてください — 分析プラットフォームはそれらを解析できません。JSON文字列を1つのフィールドに入れる代わりに、複数のフラットパラメータとして渡します。例えば、items_count_totalの代わりにitems_countとtotal_priceを個別に渡します。
Event Trackingプラットフォームの選択はプロジェクトの規模とチームによって異なります。3つの異なるレベルのオプションを見てみましょう。
Firebaseはスタートアップの標準的な選択肢です。無料枠は最大500の異なるevent_name、パラメータ数は無制限です。BigQueryとの統合でカスタム分析も可能。欠点:セグメンテーションが限定的、イベントの自動セッションリンクなし。
Amplitudeはプロダクトアナリティクスプラットフォームです。Behavioural Cohorts、Funnel Analysis、Pathfinderをサポート。実際のイベントの組み合わせから仮想イベントを作成可能。Segmentを通じて50以上のツールと統合。
Segmentはイベント管理のためのミドルウェアです。イベントをSegmentに送信し、Segmentが300以上のツールに配信します。Firebase、Amplitude、Mixpanel、Braze、Salesforceを同時に使用するエンタープライズ環境で有用です。
PostHogは独自のEvent Trackingを備えたオープンソースのプロダクトアナリティクスプラットフォームです。イベントの自動キャプチャ、セッション録画、フィーチャーフラグをサポート。自社サーバーにデプロイ可能で、GDPRや機密データを扱うプロジェクトに重要です。ETLパイプライン向けのPython互換APIを提供。
Flutterプロジェクトにはflutterfire_analytics + amplitude_flutterプラグインによるAmplitudeを推奨。React Nativeにはreact-native-firebase + mixpanel-react-nativeを推奨します。
よくある質問
最適な範囲はアプリあたり50〜150イベントです。50未満では分析に十分なデータが得られず、150超では品質が低下します(アナリストがすべてを追跡できません)。MVPには20〜30の主要イベントで十分です。
一般的なモバイルSDKはイベントをバッファリングし、5〜30秒ごとにバッチ送信します。安全な制限は端末あたり毎分100イベントです。それを超えると、接続不良時のデータ損失リスクが高まります。急激な増加(例:レベルの読み込み)は問題になりません。
はい、最新のSDKはネットワークがない場合にイベントをローカルストレージに保存します。接続が回復すると、正しいタイムスタンプ付きで送信されます。Firebaseは最大7日間、Amplitudeは最大30日間のオフラインイベントを保持します。
新しいevent_nameで新しいイベントを作成し、古いイベントは過去データ用に残します。BIレイヤー(SQLのCASE文やダッシュボード)でデータを結合するマッピングを作成します。既存のイベント名は決して変更しないでください — 履歴データが壊れます。
はい、Event Trackingはパーソナライゼーションの基盤です。イベントはリアルタイムでフィルタリングされます:ユーザーがproduct_viewedを3回送信したが購入に至っていない場合、割引ポップアップを表示します。AmplitudeとBrazeはイベントベースのトリガーをサポートしています。
まとめ
ターンキー方式のモバイルアプリケーションを開発します
IT Sectrは2017年からスタートアップや企業向けにiOS・Androidアプリケーションを開発しています。私たちがご相談に乗り、最適なソリューションをご提案します。