【Swift/Firebase Analytics】ロギングの実装方法!カスタムイベントを発行

この記事からわかること
- Swift/Firebaseでイベントをロギングする方法
- Analyticsの使い方
- カスタムイベントを発行するには?
- AnalyticsクラスのlogEventメソッドの使い方
- DebugViewで表示されない問題の解決法
- Swift UIでの実装方法
index
[open]
\ アプリをリリースしました /
Firebaseの概要や登録方法については下記記事を参考にしてください。
イベントとは?
FirebaseではAnalytics機能を使用してアプリ内のイベントを観測することができます。イベントはあらかじめ定義されたものが自動で収集されています。
自動収集されているイベントは「Firebase」>「Analytics Dashboard」の「イベント数」から確認することができます。ここに反映されるイベントはリアルタイムではなく、1日ほどラグがあるので注意してください。

カスタムイベントとは?
そしてAnalyticsでは自動収集されているイベント以外にカスタムイベントを作成して観測することも可能となっています。カスタムイベントはアプリ内からコードで発行することができ、イベントの種類を自由に選べたり引数として様々な情報を持たせて発行することも可能になっています。
Analyticsでは最大500種類までのアナリティクスイベントをロギングできるようになっているようです。
今回はそのカスタムイベントをロギングする方法をまとめていきます。
※ちなみにロギング(Logging)とは「Log(記録データ)」を「ing(〜する)」で「データを記録すること」を指します。
DebugViewとは?
アプリから発生させたイベントはAnalyticsに反映されるまで時間がかかります。しかしこれではデバッグしたい時にイベントが発行できているか確認できません。リアルタイムでロギングしたい場合はFirebaseの「DebugView」を使用することで比較的少ないラグでイベントの発生を観測することが可能です。(それでもラグはあるので注意してください。)

DebugViewでは自動収集しているイベントの発生タイミングとカスタムイベントの発生タイミングを時間の流れとともに確認できます。確認できるのは30分以内のようで、30分が経過すると自動的に消去されていきます。
また今回の実装にはiOSアプリがFirebaseと紐づいており、Analyticsを導入している必要があります。以下の手順までは完了しているとするので、未導入の場合は先に実装しておいてください。
- Firebaseプロジェクトの作成
- iOSアプリの登録
- GoogleService-Info.plistの追加
- Firebase Analytics SDKの導入
- 初期化コードの組み込み
Firebase Analyticsでロギングする
手順
- スキームのArgumentsにキーを追加
- イベントをコードから発行
- カスタムイベントをコードから発行
- DebugViewで確認する
スキームのArgumentsにキーを追加
今回は「DebugView」にリアルタイムで表示させたいのでスキームのArgumentsにキーを追加してデバッグモードに切り替える必要があります。上部のスキームを選択し「Edit Scheme...」をクリックし、「Run」>「Arguments」タブに移動します。その中の「Arguments Passed On Launch」に-FIRAnalyticsDebugEnabled
を追加してチェックがついている状態にしておきます。

これでDebugViewに表示される準備が整いました。アプリをリリースする際などはデバッグモードを戻しておいた方が良いのでロギングが終了したら忘れないうちにチェックを外しておくようにしてください。
※「DebugView」に表示させる必要がない(カスタムイベントのみ実装したい)場合はここは飛ばして「2.イベントをコードから発行」のみ行なってください。
イベントをコードから発行
まずはあらかじめ用意されているイベントから発行してみます。そのためにまずはimport
文を追加しておきます。
import FirebaseAnalytics
コードからイベントを手動で発行させるにはAnalytics
クラスのlogEvent
メソッドを使用します。引数にはイベントの種類(String型)とパラメータ([String:Any])を渡します。
公式リファレンス:logEvent(_:parameters:)
class func logEvent(_ name: String, parameters: [String : Any]?)
Analytics.logEvent(AnalyticsEventSelectContent, parameters: [
AnalyticsParameterItemID: "アイテムID",
AnalyticsParameterItemName: "アイテムネーム",
AnalyticsParameterContentType: "コンテンツタイプ",
])
イベントの種類や辞書型のキー文字列はあらかじめ定義された定数を使用します。ここには自動収集されているイベントなどがあるので任意のタイミングで既存のイベントを流すことも可能になります。他にも様々な定数が定義されているので公式サイト(↓)を参考にしてください。
公式リファレンス:FirebaseAnalytics Framework Reference - Constants
また引数(params)として渡せるのは25個までのようです。
カスタムイベントをコードから発行
先ほどはあらかじめ定数として定義されたイベント名を選択していましたが、自由にイベント名を変更してカスタムイベントを発行することができます。イベント名では大文字と小文字が区別され、_
などで繋ぐスネークケース記法(button_click)がおすすめされています。Button Click
など空白を入れるとうまく動作しないことがあるので注意してください。
カスタムイベントも先ほどのAnalytics
クラスのlogEvent
メソッドを使用して実装します。引数に渡していたイベント名を以下のように任意の文字列に置き換えればOKです。
Analytics.logEvent("font_button_click", parameters: [
AnalyticsParameterItemID: "Test",
AnalyticsParameterItemName: "FontWeight",
AnalyticsParameterContentType: "Button",
"custom_key": "Button"
])
また引数として渡せるキー名もカスタムに変更できるようです。
DebugViewで確認する
コードで作成したイベント発行をアプリ内のボタンタップなどに組み込んでおきイベントを発行します。
Button {
Analytics.logEvent("font_button_click", parameters: [
AnalyticsParameterItemID: "Test",
AnalyticsParameterItemName: "FontWeight",
AnalyticsParameterContentType: "Button"
])
} label: {
Text("FontWeight")
}
ボタンをクリックするとXcodeのコンソールにもイベントが出力されます。
2023-08-30 08:49:52.484281+0900 BigMoji[50891:14658990] 10.14.0 - [FirebaseAnalytics] Event is not subject to real-time event count daily limit. Marking an event as real-time. Event name, parameters: font_button_click, {
content_type = Button;
ga_debug (_dbg) = 1;
ga_event_origin (_o) = app;
ga_realtime (_r) = 1;
item_id = Test;
item_name = FontWeight;
}
そしてFirebaseのDebugViewにも以下のように自動収集しているイベントや追加したカスタムイベントが時間の流れとともに表示されるようになります。引数として渡した情報もイベント名をタップすることで中身を確認することができます。

左側の「デバッグに使用するデバイス」にロギングされているデバイスが追加されていきます。アプリを一度消して再度ビルドしたりすると別デバイスとして認識されるようなので注意してください。
DebugViewに表示されない問題の解決方法
私はイベントを発行するコードを追加し、アプリを起動させ実行してみましたが、Xcodeのコンソールに表示されるもののいくらまってもDebugViewには表示されませんでした。
結果解決方法はFirebase Analytics SDKのバージョンアップをすることでした。私はCocoa Podsで導入していたのでpod update
コマンドを実行し、以下のようにバージョンアップしたところ正常にDebugViewに表示されるようになりました。
Installing FirebaseAnalytics 10.14.0 (was 10.7.0)
Installing FirebaseCore 10.14.0 (was 10.7.0)
Installing FirebaseCoreInternal 10.14.0 (was 10.7.0)
Installing FirebaseInstallations 10.14.0 (was 10.7.0)
Installing Google-Mobile-Ads-SDK 10.9.0 (was 10.3.0)
Installing GoogleAppMeasurement 10.14.0 (was 10.7.0)
Installing GoogleUserMessagingPlatform 2.1.0 (was 2.0.1)
Installing GoogleUtilities 7.11.5 (was 7.11.0)
イベントのロギングは実機、シミュレーターを問わずに実装できるはずなのでうまく表示されない場合はアプリを一度削除してから再度ビルドしてみると直ることもあります。
Androidのやり方はこちら
GA4/カスタムイベントのカスタムパラメータを確認する探索レポートの作成
発行したカスタムイベントは自動収集されているイベント同様にAnalyticsのイベントから確認することができますが、カスタムパラメータは確認しづらい仕様になっています。GA4の探索レポートを使用することでオリジナルのレポートを作成できるのでそれを使用してカスタムパラメータを確認する探索レポートを作っておくと管理しやすいかもしれません。

作成方法は以下の記事を参考にしてください。
まだまだ勉強中ですので間違っている点や至らぬ点がありましたら教えていただけると助かります。
ご覧いただきありがとうございました。