Skip to main content

第03章:イベント設計のコツ(名前・粒度・パラメータ)🧩📝

この章のゴールはシンプルです🙂✨ 「イベント表」を1枚つくって、迷いなく実装に進める状態にします📊➡️🛠️


1) まず最初に知っておく “現実ルール” 📏😇

firebase_analytics_performance_ts_study_003_naming_rules.png

イベントは「好きに名付けてOK」…なんだけど、最低限のルールがあります👇

  • 大文字小文字は別物扱い(例:memo_create と Memo_Create は別イベントとして数えられる)(Firebase)
  • イベント名は先頭が英字、使える文字は 英数字とアンダースコアのみスペースは不可(Google ヘルプ)
  • 予約済みのイベント名・予約済みの接頭辞がある(例:page_view / click などは予約扱いの対象になりやすいので要注意)(Google ヘルプ)
  • 名前は40文字未満が安全(長いと集計や運用で事故りやすい)(Google ヘルプ)
  • 1イベントにつけられるパラメータは最大25個(多すぎると落ちる可能性がある)(Google ヘルプ)
  • イベント種別は最大500種類まで(増やしすぎると上限に近づく)(Firebase)

そして大事な方針👇 おすすめ(recommended)イベントが合うなら、それを優先するとレポートが充実しやすいです📈✨(Firebase)


2) 名前の設計コツ 迷わない型 🧠🧩

コツA:基本は「動詞_目的語」🗣️➡️🎯

firebase_analytics_performance_ts_study_003_naming_convention.png

例)

  • memo_create(メモを作った)
  • memo_save(保存した)
  • ai_format_click(AI整形ボタンを押した)
  • ai_format_result(整形の結果が出た)

この型にすると、レポートで一覧にしたときに意味が読めるんですよね🙂📊

コツB:小文字+アンダースコアで統一🧼✨

ルール上 “大文字も送れてしまう” ことはあっても、チーム運用で揺れると地獄です😇 「小文字+_」に固定しちゃうのが一番ラクです👍

コツC:予約語っぽい名前を避ける🧯

特に page_view / click / scroll / session_start みたいな “それっぽい” のは、あとで混乱のもとになりやすいです(予約リストも存在します)(Google ヘルプ) 自作イベントは、アプリ固有の意味に寄せるのが安全です🛡️


3) 粒度の設計コツ “細かすぎ問題” を回避 🧠🔍

firebase_analytics_performance_ts_study_003_event_granularity.png

イベント設計で一番多い失敗はこれ👇 「細かく取りすぎて、見ない」 😇📉

なので、粒度はこの順で決めると楽です👇

ステップ1:知りたい質問を先に書く ❓✍️

例)

  • どの機能が一番使われてる?👀
  • AI整形ボタン、押されてる?🤖🖱️
  • AI整形は成功してる?失敗が多い?🧯
  • 保存まで到達してる?途中で離脱してる?🚪💨

ステップ2:質問に必要な “最小イベント” にする 🎯

  • ✅ いい例:memo_save(保存した)
  • ❌ やりすぎ例:memo_save_button_hover / memo_save_button_mousedown / memo_save_button_mouseup …(見ない😇)

ステップ3:分岐は “イベント名” ではなく “パラメータ” に寄せる 🎛️

firebase_analytics_performance_ts_study_003_parameter_grouping.png

例えば「成功/失敗」を分けたくなりますが…

  • 方式A:イベントを分ける

    • memo_save_success
    • memo_save_fail
  • 方式B:イベントは1つ+結果はパラメータ

    • memo_save(result=success / fail)

初心者には 方式Bが管理しやすいです🙂✨ (イベント名が増えすぎない、集計しやすい、表が崩れにくい)


4) パラメータ設計コツ “便利そうで危険” を避ける 🧨😇

コツA:パラメータは最大25個まで📦

増やしすぎるとドロップの可能性があるので、まずは3〜6個くらいに絞るのが安心です🙂(Google ヘルプ)

コツB:値が無限に増えるパラメータは避ける♾️🙅‍♂️

firebase_analytics_performance_ts_study_003_high_cardinality.png

例えば…

  • ❌ memo_id(ユーザーごとに無限)
  • ❌ memo_text(本文は無限+センシティブ)
  • ❌ url(クエリに色々混ざって無限)

こういう “値の種類が爆発する” ものは、高カーディナリティ問題になりやすく、レポートで (other) にまとめられたり、探索で制限の影響が出たりします📉😇(Google ヘルプ)

代わりにこう👇

  • ✅ length_bucket:short / mid / long(3択にする)
  • ✅ screen:memo / settings / home(固定セット)
  • ✅ method:button / shortcut(固定セット)

コツC:個人情報っぽいものは送らない🫥🛑

メールアドレス、電話番号、氏名、ユーザー名、住所、正確すぎる位置情報…などは避けます。ポリシー的にもNGになり得ます🧯(Google ヘルプ)


5) 手を動かす イベント表を5個つくる 🗒️🖊️✨

ここからが本番です🔥 ミニアプリ(メモ+AI整形)を想定して、まず 5イベントだけ作ります。

5-1 イベント表テンプレ 📋✨

firebase_analytics_performance_ts_study_003_event_table.png

イベント名いつ送る?何を知りたい?パラメータ例注意
memo_create新規作成した瞬間作成が使われてる?screen, methodまずは最小でOK
memo_save保存実行した瞬間保存まで行けた?result, screen, methodsuccess/fail は param に寄せる
memo_delete削除確定した瞬間削除利用は多い?screen, method取りすぎ注意
ai_format_clickAI整形ボタン押下AI機能が押されてる?screen, method, variantvariant は A/B で使える
ai_format_result整形が終わった成功率・失敗率・時間は?result, duration_bucket, modelduration はバケツ化

パラメータの“値の固定セット”例 🎛️

  • screen:home / memo / settings
  • method:button / shortcut
  • result:success / fail / cancel
  • duration_bucket:lt_1s / 1_3s / 3_10s / gt_10s
  • variant:A / B(将来のA/B用)
  • model:gemini(将来モデル増えるなら固定語彙で)

6) ミニ課題 その場で完成させよう 🏁😆

やること 3つだけ ✅

  1. 上の表をコピって、あなたのアプリ用にイベント名を確定する✍️
  2. 各イベントに「何を知りたい?」を1行で書く🧠
  3. パラメータの値を “固定セット” にする(3〜5個でOK)🎛️

できたら勝ちです🎉✨


7) AIでイベント表を一瞬で良くする 🤖⚡

firebase_analytics_performance_ts_study_003_ai_review.png

ここはAIがめちゃ役に立ちます🙂 たとえば Gemini CLI はターミナルから使えるAIエージェントで、設計レビューや命名の整形が得意です💻🧠(Google for Developers) Antigravity はエージェントを並行で動かしつつ調査も進められる作りになっていて、「命名レビュー→表の整形→実装用定数ファイル生成」みたいな流れがやりやすいです🛸📚(Google Codelabs)

そのまま投げてOKなプロンプト例 📨✨

あなたはGA4/Firebase Analyticsの設計レビュー担当です。
以下のイベント表について、(1)命名ルール違反の有無 (2)予約語/予約プレフィックスの危険
(3)パラメータ数とカーディナリティの危険 (4)改善案 を指摘してください。

【イベント表】
(ここにあなたの表を貼る)

AIに直してもらったら、最後に人間が「このイベントで何が分かる?」を見てOKなら確定👍


8) チェックリスト ここまでできたら合格 ✅🎓

  • イベント名は小文字+アンダースコアで統一できた?🧼
  • 先頭英字、英数字+_のみ、スペースなしになってる?📏(Google ヘルプ)
  • 予約語っぽい名前を避けた?🧯(Google ヘルプ)
  • 1イベントのパラメータは25個未満、できれば少数にした?📦(Google ヘルプ)
  • 値が無限に増えるパラメータ(ID/本文/URL)を避けた?♾️🙅‍♂️(Google ヘルプ)
  • 個人情報っぽいものを送らない設計にした?🛑(Google ヘルプ)

次の第4章では、このイベント表をそのまま使って Reactから送信→DebugViewで確認まで行きます📣🧑‍💻✨ よければ、あなたのミニアプリが「メモ中心」か「画像中心」か「AI中心」かだけ教えてください。イベント例をその軸に寄せて、表を“完成版”に磨きます😆🧩