DroidKaigi 2024「 データに基づく意思決定を支える、Google Analytics for Firebase のイベント送信」の YAML ファイルによる Analytics イベント定義リポジトリ実装例
同一仕様の iOS アプリと Android アプリに対して、YAML ファイルで定義した Analytics イベントに対応する構造体 / クラスを自動コード生成するリポジトリです。
アプリ開発者は YAML ファイルに Google Analytics for Firebase のイベントの仕様を定義します。
本システムは YAML ファイルに対して、文字数、種類数、イベント名重複のチェックを行います。そして iOS / Android アプリに対して、イベント構造体 / クラスを自動作成します。
- 文字数制限やイベント名の種類数制限を超えたイベントを送信してしまう
- iOS と Android でイベント名やイベントパラメータ名が違う
- イベント仕様の共有
Analytics イベント送信担当メソッドは、自動生成された構造体 / クラスを引数に取ることにより、未定義のイベントを送信することを防いでいる。
events.yaml ファイルに Analytics イベント仕様を定義します。
- description: ランドマーク一覧画面
class: LandmarkList
value: LandmarkList
conversion: false
actions:
- description: いいねを付けたランドマークのみを表示するスイッチ
class: FavoritesOnlySwitch
value: FavoritesOnlySwitch
parameters:
- description: スイッチの ON/OFF
property: favoritesOnly
key: favorites_only
type: boolean
各フィールドの解説
フィールド名 | 解説 |
---|---|
description | 画面の説明文 |
class | 画面遷移イベント構造体 / クラスの名前 |
value | Analytics 画面遷移イベント名 |
conversion | 独自のイベント名にするか、screen_view イベントの screen_name パラメータの value にするかのフラグ |
actions[].description | 画面内操作の説明文 |
actions[].class | 画面内操作クラス名 |
actions[].value | 画面内操作イベント名 |
actions[].parameters[].description | パラメータの説明文 |
actions[].parameters[].property | Swift / Kotlin でのプロパティ名 |
actions[].parameters[].key | Analytics イベントパラメータの key |
actions[].parameters[].type | Analytics イベントパラメータ value の型。string, int, long, float, double, boolean が設定可能 |
actions[].parameters[].conversion | 独自のイベント名にするか、イベントパラメータの value で区別するかのフラグ |
プルリクを作成すると GitHub Actions により、以下の処理が実行されます。
- イベント仕様の検証
- イベント仕様書を作成するコミットを追加 (ドラフトで無いときのみ実行)
main ブランチにマージすると、GitHub Actions により、以下の処理が実行されます。
サンプルアプリに向かって、プルリクエストを作成します。 自分のアプリに対してプルリクエストを作成する場合は、本リポジトリをフォークの上、ワークフローを修正してください。
Analytics イベント構造体 / クラスのパッケージ名、ディレクトリ名を変更する場合は、こちらを改修します。