NRIネットコム Blog

NRIネットコム社員が様々な視点で、日々の気づきやナレッジを発信するメディアです

Firebase(GA4)の自動スクリーン ビュー計測を止めて手動計測する

本記事はNRIネットコム Advent Calendar 2021 21日目の記事です。
🎄 20日目 ▶▶ 本記事 ▶▶ 22日目 🎅

はじめまして、廣岡です!
入社後4年程モバイルアプリの開発案件に携わり、現在はGoogle アナリティクスを中心としたGoogle マーケティング プラットフォーム(GMP)の導入、活用におけるテクニカルサポートを行っています。

Google アナリティクス 4(以下、GA4)の登場で、ウェブサイトとFirebaseで計測されたモバイルアプリの計測データを同じレポート上で見ることができるようになったこともあり、アプリ計測に関するご相談をいただくことが多くなったように思います。

本記事では、Firebaseでアプリを計測するための計測設計を実施させていただく際に、必ずお客様にお伝えしていることについてお話していきます。

はじめに

前提として、GA4のレポートでアプリの計測データを見るには、Firebaseを利用してアプリを計測する必要があります。

FirebaseではアプリにSDKを導入するだけで、計測するためのコードを実装せずとも、いくつかのイベントとユーザー ディメンション(ユーザー属性)を自動で計測してくれます。

[GA4] 自動的に収集されるイベント - Firebase ヘルプ
[GA4] 事前定義されたユーザー ディメンション - Firebase ヘルプ

アプリの計測項目の代表、スクリーン ビュー(画面が表示されたこと)を計測するための「screen_view」イベントも自動で計測されるイベントの一つです。

しかし、お客様には スクリーン ビューの計測は自動計測ではなく、手動 (※) で行いましょう と必ずお伝えしています。
※ 各画面表示時に実行される「screen_view」イベントを計測するコードを実装すること

ここからは、スクリーン ビューを手動で計測すべき理由と手動計測方法、自動計測の無効化設定について解説していきます。

スクリーン ビューを手動で計測すべき理由

なぜFirebaseが自動計測してくれる「screen_view」イベントをわざわざ手動で計測する必要があるのか、、
それは、自動計測では分析に活用できるようなデータが収集できないからです。

以下、「screen_view」イベント用に定義されているパラメータです。

パラメータ ディメンション 自動で計測される値
firebase_screen スクリーン名 なし
firebase_screen_class スクリーン クラス アプリ内で設定されているクラス名(アクティビティ名やコントローラー名)

実際に自動計測されたデータをGA4のレポート上で表示すると以下のようになります。

f:id:c-hirooka:20211217112604p:plain

スクリーン名は計測されないため「(not set)」と表示され、アクティビティ名やコントローラー名が値として計測されるスクリーン クラスからは画面の判別が難しい上にOS間で値が異なるため、
アプリのどの画面がどのくらい見られているかなどを把握することが難しいデータとなってしまいます。

スクリーン ビューの手動計測では、スクリーン名とスクリーン クラスに任意の値をセットすることができます。
そのため、スクリーン ビューは手動で計測し、スクリーン名とスクリーン クラスにAndroidとiOS共通の値をセットすることを推奨しています。

注意事項 : Firebase SDKのバージョン

スクリーン ビューの手動計測と、自動計測を無効にする設定は、2020年にリリースされた以下バージョンのSDKでサポートされました。 本対応を行う場合は、AndroidとiOSともに以下のバージョン以上のSDKを利用する必要があるのでご注意ください。

Android:17.5.0

 Firebase Android Release Notes  |  Firebase Documentation

iOS:6.29.0

 Firebase Apple SDK Release Notes

スクリーン ビューの手動計測

以下、スクリーン名とスクリーン クラスにセットする値の例です。(アプリでトップ画面を開いた場合の例)

パラメータ ディメンション セットする値 値の例
firebase_screen スクリーン名 任意の画面名 トップ
firebase_screen_class スクリーン クラス 画面を識別する任意の値 app/top

パラメータにセットする値は日本語でも問題ありません。
また、スクリーン クラスの値はクラス名である必要はないため、画面が識別できる任意の値をセットすることを推奨します。

上記例の値をセットし、「screen_view」イベントを計測するコードの実装例を以下に記載します。

Android
- Java
Bundle bundle = new Bundle();
bundle.putString(FirebaseAnalytics.Param.SCREEN_NAME, "トップ");
bundle.putString(FirebaseAnalytics.Param.SCREEN_CLASS, "app/top");
mFirebaseAnalytics.logEvent(FirebaseAnalytics.Event.SCREEN_VIEW, bundle);
- Kotlin
firebaseAnalytics.logEvent(FirebaseAnalytics.Event.SCREEN_VIEW) {
    param(FirebaseAnalytics.Param.SCREEN_NAME, "トップ")
    param(FirebaseAnalytics.Param.SCREEN_CLASS, "app/top")
}
iOS
- Swift
Analytics.logEvent(AnalyticsEventScreenView,
                   parameters: [AnalyticsParameterScreenName: "トップ",
                                AnalyticsParameterScreenClass: "app/top"])
- Objective-C
[FIRAnalytics logEventWithName:kFIREventScreenView
                    parameters:@{kFIRParameterScreenName: "トップ",
                                 kFIRParameterScreenClass: "app/top"}];


firebase.google.com


実際に計測したデータをGA4のレポートで表示すると以下のようになります。

f:id:c-hirooka:20211217111922p:plain

OS間で値に差異がなく、スクリーン名から簡単に画面を判別できるため、どの画面がどのくらい見られているかを一目で確認することができます。
※ レポート上の設定で、OS別のデータを確認することも可能です。

スクリーン ビューの自動計測 無効化設定

手動で計測した「screen_view」イベントと自動で計測される「screen_view」イベントの二重計測を防ぐために自動計測は無効化するようにしましょう。 設定方法を以下に記載します。

Android

AndroidManifest.xml ファイルの <application> 内で google_analytics_automatic_screen_reporting_enabledfalse に設定してください。

<meta-data 
  android:name="google_analytics_automatic_screen_reporting_enabled" 
  android:value="false" />
iOS

Info.plist に FirebaseAutomaticScreenReportingEnabled を追加し、Typeを Boolean、Valueを NOと設定します。

f:id:c-hirooka:20211215103235p:plain

iOSアプリ起動時に以下のようなログが表示されれば、スクリーン ビューの自動計測は無効化されています。

f:id:c-hirooka:20211216104413p:plain ※ Androidアプリにおいてはログは表示されません。

まとめ

今回は、モバイルアプリの計測設計において特に重要なスクリーン ビューについて記載しました。
開発コストの関係でどうしても手動計測が難しい場合や、ユーザー数のみわかればいいからスクリーン ビューの計測は不要といった場合以外は手動計測を行い、分析、活用しやすいデータを収集できるようにしましょう!

NRIネットコム Advent Calendar 2021
🎄 20日目 ▶▶ 本記事 ▶▶ 22日目 🎅

執筆者廣岡 千菜美

Google アナリティクスを中心としたGoogle マーケティング プラットフォーム(GMP)の導入、活用におけるテクニカルサポートを行っています。