モバイルアプリにおけるEvent Tracking:基礎知識、イベントの種類、設定方法

著者: IT Sectr 公開日: 2026-04-21 読了時間: 11 分

Event Trackingとは、モバイルアプリ内でのユーザーアクション(ボタンクリックから購入まで)に関するイベントの収集と分析です。質の高いevent trackingは、プロダクトアナリティクス、A/Bテスト、パーソナライゼーションの基盤となります。Amplitude(2024年)によると、体系的なEvent Trackingを導入しているチームは、データ駆動型アプローチにより製品決定を3倍迅速に行えます。イベントなしではアプリの分析は機能しません。

重要ポイント

  • Event Tracking — ユーザーアクションに関するデータの収集。各アクションはイベント名とパラメータで記述されます。
  • イベントの種類 — 自動(SDK)、カスタム(開発者定義)、収益イベントに分類されます。
  • イベントの命名 — Object + Actionの統一標準に従う必要があります(例:product_added_to_cart)。
  • イベントパラメータ — 価格、商品カテゴリ、遷移元などのコンテキストを含みます。
  • Event Trackingプラットフォーム — Firebase Analytics、Amplitude、Mixpanel、Segmentなど。

Event Trackingとは?

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)

SDKは分析プラットフォームが自動的に基本イベントを収集します:app_install、app_remove、session_start、screen_view。Firebase Analyticsはコードを1行も書かずに約20の自動イベントを生成します。これらのイベントは基本メトリクスをカバーしますが、ビジネスロジックの理解には不十分です。

カスタムイベント(Custom Events)

カスタムイベントこそがEvent Trackingを価値あるものにします。これらはビジネスアクションを記述します:add_to_cart、start_subscription、level_complete、share_content、search_performed。カスタムイベントはアプリケーションコードからの明示的な送信が必要です。

kotlin
// 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パラメータにより、ユーザーがどの画面からサブスクリプションを開始したか(オンボーディング、設定、ペイウォール)を把握できます。

User PropertiesとSuper Properties

イベントに加えて、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の設定方法

Event Trackingの設定は3つの段階で進めます:イベントスキーマの計画、SDKの統合、データの検証。

段階1:イベントスキーマ設計

Event Taxonomy(イベント分類ドキュメント)を作成します。各イベントの名前、パラメータ、送信トリガー、所有者を記述します。Eコマースの例:order_completed → パラメータ:order_id、total_price、items_count、payment_method、shipping_city。

  • 各イベントは「ユーザーは何をしたか?」に答える
  • 各パラメータは「どのようなコンテキストか?」に答える
  • パラメータのないイベントは避ける — 分析に役立たない

段階2:SDKの統合

Analytics SDKをプロジェクトに組み込みます。Firebase Analytics、Amplitude、Mixpanel — いずれのSDKもApplication.onCreate()での初期化が必要です。Flutterの例:

dart
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に増える可能性がありますが、フィーチャーごとにグループ化されているため構造は読みやすいままです。

段階3:DebugViewによる検証

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標準

object_actionパターン(小文字、snake_case)を使用します:product_added、cart_opened、payment_failed、subscription_cancelled。オブジェクトはエンティティ、アクションは過去形の動詞です。「商品が追加された」「カートが開かれた」のように文として読めます。

  • product_viewed(「tap_on_product_card」ではなく — イベントは結果でありアクションではない)
  • order_completed(「successful_payment_transaction」ではなく — 簡潔かつ明確に)
  • level_started(「begin_level_with_parameters」ではなく — 不要な単語を省く)

禁止パターン

スペース("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プラットフォーム

Event Trackingプラットフォームの選択はプロジェクトの規模とチームによって異なります。3つの異なるレベルのオプションを見てみましょう。

Firebase Analytics(無料、最大500イベント)

Firebaseはスタートアップの標準的な選択肢です。無料枠は最大500の異なるevent_name、パラメータ数は無制限です。BigQueryとの統合でカスタム分析も可能。欠点:セグメンテーションが限定的、イベントの自動セッションリンクなし。

Amplitude(Pro $1,000/月〜)

Amplitudeはプロダクトアナリティクスプラットフォームです。Behavioural Cohorts、Funnel Analysis、Pathfinderをサポート。実際のイベントの組み合わせから仮想イベントを作成可能。Segmentを通じて50以上のツールと統合。

Segment($120/月〜)

Segmentはイベント管理のためのミドルウェアです。イベントをSegmentに送信し、Segmentが300以上のツールに配信します。Firebase、Amplitude、Mixpanel、Braze、Salesforceを同時に使用するエンタープライズ環境で有用です。

PostHog(オープンソースの代替)

PostHogは独自のEvent Trackingを備えたオープンソースのプロダクトアナリティクスプラットフォームです。イベントの自動キャプチャ、セッション録画、フィーチャーフラグをサポート。自社サーバーにデプロイ可能で、GDPRや機密データを扱うプロジェクトに重要です。ETLパイプライン向けのPython互換APIを提供。

Flutterプロジェクトにはflutterfire_analytics + amplitude_flutterプラグインによるAmplitudeを推奨。React Nativeにはreact-native-firebase + mixpanel-react-nativeを推奨します。

よくある質問

1つのアプリで追跡すべきイベント数は?

最適な範囲はアプリあたり50〜150イベントです。50未満では分析に十分なデータが得られず、150超では品質が低下します(アナリストがすべてを追跡できません)。MVPには20〜30の主要イベントで十分です。

パフォーマンスに影響を与えずにイベントを送信する頻度は?

一般的なモバイルSDKはイベントをバッファリングし、5〜30秒ごとにバッチ送信します。安全な制限は端末あたり毎分100イベントです。それを超えると、接続不良時のデータ損失リスクが高まります。急激な増加(例:レベルの読み込み)は問題になりません。

オフラインモードでもイベントを送信すべき?

はい、最新のSDKはネットワークがない場合にイベントをローカルストレージに保存します。接続が回復すると、正しいタイムスタンプ付きで送信されます。Firebaseは最大7日間、Amplitudeは最大30日間のオフラインイベントを保持します。

既にリリース済みのアプリでイベント名を変更するには?

新しいevent_nameで新しいイベントを作成し、古いイベントは過去データ用に残します。BIレイヤー(SQLのCASE文やダッシュボード)でデータを結合するマッピングを作成します。既存のイベント名は決して変更しないでください — 履歴データが壊れます。

Event Trackingをパーソナライゼーションに使用できますか?

はい、Event Trackingはパーソナライゼーションの基盤です。イベントはリアルタイムでフィルタリングされます:ユーザーがproduct_viewedを3回送信したが購入に至っていない場合、割引ポップアップを表示します。AmplitudeとBrazeはイベントベースのトリガーをサポートしています。

まとめ

  • Event Tracking — コンテキスト(パラメータ、タイムスタンプ、user_id)付きのユーザーの個別アクションを収集します。
  • イベントの種類:自動(SDK)、カスタム(ビジネスロジック)、収益(トランザクション)。
  • 命名:Object + Action標準によるsnake_case。
  • 設定:イベントスキーマ、SDK、DebugView検証の3段階。
  • プラットフォーム:Firebase(無料)、Amplitude(Pro)、Segment(エンタープライズ)。
  • 最適数:アプリあたり50〜150イベント。
  • オフラインイベント:SDKがバッファリングし、接続回復時に送信。

ターンキー方式のモバイルアプリケーションを開発します

IT Sectrは2017年からスタートアップや企業向けにiOS・Androidアプリケーションを開発しています。私たちがご相談に乗り、最適なソリューションをご提案します。

プロジェクトについて相談

こちらもお読みください