第20章:改善サイクル完成(AIも使って回す)🔁🤖🏁
この章はゴール回🏁✨ ここまで作ってきた Analytics / Remote Config / A/B / Performance を「バラバラの道具」じゃなく、**改善を回す“1つの型”**にまとめます🧩 さらに、**Gemini(AI)を“開発の相棒”**にして、改善の回転数をグッと上げます🤝🤖
この章でできるようになること 🎯✨
- 仮説 → 変更 → 計測 → 判断 → 次の仮説 を、1日で1周できる🚴♀️💨
- 変更をいきなり全員に出さず、Remote Configで安全に段階ONできる🎛️🛡️
- A/Bで勝ち負けを数字で決める(勘に頼らない)🧪⚖️ (Firebase)
- 遅さも証拠で直す(Performance + カスタム計測)⚡🧾 (Firebase)
- AI(Gemini CLI / Gemini in Firebase / Antigravity)で 「調査 → 実装案 → 変更 → 事故防止チェック」まで爆速化できる💻🤖 (Google for Developers)
今日の“1周セット”の全体図 🗺️🔁

- 観測:いまの数字(現状)を取る📊
- 仮説:「ここを変えたら良くなるはず」を1つに絞る💡
- 安全に出す:Remote Configで段階的にON🎛️
- 比較する:A/Bで勝ち負けを見る🧪
- 遅さも見る:Performanceで「体感」を数値化⚡
- 判断して広げる:勝った案をロールアウト🏁
- 次の1周へ:また仮説を立てて回す🔁
今回の例題(ミニアプリ想定)📝🤖
**「メモ+AI整形」**でよくある改善テーマ👇
- 課題A:AI整形ボタンが押されない(使われない)😢
- 課題B:押すと処理が遅い(待たされる)🐢💦
この2つを、1周でまとめて改善します🔥
Step 1:KPI(北極星)とガードレールを決める 🌟🧯

まず “勝ち負けの定義” を決めます。ふわっと始めると、最後に迷子になります😇
-
KPI(北極星)候補
ai_format_success_rate(AI整形の成功率)ai_format_usage_rate(AI整形ボタンが押された割合)
-
ガードレール(悪化したら中止)
error_rate(エラー増えたらアウト)perf_p95(体感遅さが悪化したらアウト)⚡
ここは「1つずつ」でOK🙆♂️ 今回のKPIは “AI整形の利用率” にします📈
Step 2:イベントと“遅さの証拠”を仕込む 🧩📊⚡

2-1. イベント(最低これだけ)📣
ai_format_click(押された)ai_format_success(成功した)ai_format_fail(失敗した)memo_save(保存した)←ガードレールにも使える
イベント送信の基本は公式の「Log events」に沿えばOKです📘 (Firebase)
(例:ボタンクリック時に送る)
import { getAnalytics, logEvent } from "firebase/analytics";
const analytics = getAnalytics();
export function trackAiFormatClick() {
logEvent(analytics, "ai_format_click", { screen: "memo" });
}
(Firebase)
2-2. カスタムトレース(AI処理の時間を測る)⏱️🧾
Performance Monitoringは、標準で「ページ読み込み」「ネットワーク」などが取れます。さらに自分の処理も カスタムトレースで測れます⚡ (Firebase)
(※Web導入は “Get started” の手順どおりに) (Firebase)
ポイント:Performanceのデータは少し遅れて届く(まとめて送るのでタイムラグあり)⌛ (Firebase)
Step 3:Remote Configで「安全に出す」🎛️🛡️

いきなり全員に新仕様を出すと事故るので、Remote Configを“ハンドル”にします🚦 Webの導入フローは公式手順どおりでOKです🧰 (Firebase)
3-1. 使うパラメータ例(今回の改善用)🧾
enable_ai_format(bool:AI整形ボタン出す?)ai_prompt_variant(string:プロンプトをA/Bで変える)ai_daily_limit(number:使いすぎ防止)ai_ui_copy(string:ボタン文言をA/Bで変える)
3-2. 取得の作法(fetchAndActivate)📦
“アプリ起動時にfetchして反映” みたいな戦略は公式の Loading strategy が参考になります🧠 (Firebase)
(例:フラグでUIを出し分け)
import { getRemoteConfig, fetchAndActivate, getValue } from "firebase/remote-config";
import { app } from "./firebaseApp";
export async function loadFlags() {
const rc = getRemoteConfig(app);
await fetchAndActivate(rc);
return {
enableAi: getValue(rc, "enable_ai_format").asBoolean(),
uiCopy: getValue(rc, "ai_ui_copy").asString(),
promptVariant: getValue(rc, "ai_prompt_variant").asString(),
dailyLimit: getValue(rc, "ai_daily_limit").asNumber(),
};
}
(Firebase)
Step 4:A/Bテストで「勝ち負け」を決める 🧪⚖️

Remote Configの値をA/Bで出し分けて、Analyticsで成果を測るのがFirebase流です📊 A/B Testingの公式ガイドを土台に進めます🧭 (Firebase)
4-1. 今回のA/B案(超わかりやすいやつ)🗣️
- A案(現状):ボタン文言「AI整形」
- B案(改善):ボタン文言「文章をきれいにする✨」
つまり ai_ui_copy をA/Bで変えるだけ。初心者でも回せます🙆♂️
4-2. コンソールでやること(手順イメージ)🧭
- Firebase Console → A/B Testing → “Remote Config”の実験を作成
- 対象パラメータ:
ai_ui_copy - 目的(Objective):例)
ai_format_clickを増やす - テスト端末で バリアントが固定されて見えるか確認
- 実験を走らせる🏃♂️💨
- 勝ったら Roll out variant で全体へ🏁
この流れ自体が公式にまとまっています📘 (Firebase)
4-3. Webの注意:シークレットだと別ユーザー扱い🕵️♂️
WebのA/Bは Firebase installation ID(FID) を使って割り当てが保存されます。 ただし、ブラウザが違う / シークレット / IndexedDB消去 だと別扱いになって、違うバリアントになることがあります⚠️ (Firebase)
Step 5:AI(Firebase AI Logic)で機能改善そのものも加速 🤖⚡
ここからが“今どき”ポイント🔥 AIを入れるなら、Firebase AI Logic の公式導線が土台になります(Gemini/Imagenに安全にアクセス)(Firebase)
今回の改善では、例として👇
ai_prompt_variantによって 整形プロンプトを切り替える- 反応が良かったプロンプトを 勝ちとして採用
こういう運用ができます🎛️🤖
Step 6:AIで「改善の回転数」を上げる(開発AIの使いどころ)🧠💻

6-1. Gemini in Firebase(コンソールで相談)🧯
Firebaseコンソールの中で、調査・デバッグ・手順確認の助けになるやつです👀 (Firebase)
おすすめの聞き方👇
- 「A/Bの結果画面、どこを見れば判断できる?」
- 「Performanceで遅いページロードが出てる。原因候補を並べて」
6-2. Gemini CLI(ターミナルで“実装案→変更→テスト案”)⌨️🤖
Gemini CLIは、ターミナルから使える オープンソースのAIエージェントで、複雑な作業を ReAct(考えて→行動)で進められます🧠→🛠️ (Google for Developers)
おすすめの使い方👇
- 「イベント名の表とコードを突き合わせて、表記ゆれを直して」
- 「Remote Configのキーを一覧化して、未使用を検出して」
- 「A/Bの仮説を3つ出して、実装コストが低い順に並べて」
6-3. Firebase エージェントのスキル(AIに“Firebase文脈”を移植)🧩🧠
Firebase公式が用意している “AIにFirebaseの型を覚えさせるモジュール” です📦 Antigravity や Gemini CLI などで動きます。インストール例も公式にあります👇 (Firebase)
- Antigravity:
npx skills add firebase/agent-skills
- Gemini CLI:
gemini extensions install https://github.com/firebase/agent-skills
(Firebase)
6-4. Antigravity × Firebase MCP(“つなぐ/設定/実装”をエージェントにやらせる)🛸🔌
Firebase公式ブログで、Antigravityに Firebase MCP server を追加して、エージェントがFirebase連携を進められる流れが紹介されています🧠 (The Firebase Blog)
例:
- エージェントに「Firebase初期化して」「このプロジェクトをリンクして」などを頼める
- 必要なら途中で質問して止まってくれる
- 何をやったかの手順も見せてくれる
この章の結論としては、“改善サイクルを回す作業”はAIと相性がめちゃ良いです🔥
ミニ課題:24時間で「改善を1周」してみよう 🏁🧪⚡

次のどっちかでOK(片方だけで十分)👇
お題1:AI整形ボタンの利用率を上げる 📈✨
ai_format_clickをイベントで送る- Remote Configで
ai_ui_copyを作る - A/Bで文言を2案にして走らせる
- 勝ったらロールアウト🏁 (Firebase)
お題2:AI整形の“待ち時間”を短くする 🐢➡️🐇
- Performance導入
- AI整形処理にカスタムトレース
- 遅い原因を1つに絞って改善
- 改善前/後で数字比較🧾 (Firebase)
チェックリスト(できたら勝ち)✅🎉
- KPIとガードレールを1つずつ言える🌟🧯
- Remote Configで 段階ONできる🎛️ (Firebase)
- A/Bで「勝ち」を判断し、必要ならロールアウトできる🏁 (Firebase)
- Performanceで “遅い” を数字で語れる⚡ (Firebase)
- AI(Gemini CLI / Gemini in Firebase / Antigravity)を「調査・実装・検証」に使えた🤖 (Google for Developers)
よくあるミス集 🧯(先に潰す)
- イベント名が表とズレる(
ai_format_clickとai_format_clickedとか)→ 集計が割れる😇 (Firebase) - A/Bテストをシークレットで確認して「端末ごとに固定されない!」って焦る → Webの仕様あるある🕵️♂️ (Firebase)
- Performanceのダッシュボードにすぐ出ない → 少し遅れて届く仕様⌛ (Firebase)
- Remote Configを取りに行きすぎる → 取得戦略は公式の考え方をベースに🎛️ (Firebase)
ちいさな理解テスト(答えつき)📝✅
-
なぜRemote Configを挟むの? → 事故を減らして、段階的に出せるから🎛️🛡️ (Firebase)
-
A/Bの勝ち負けは何で決める? → 事前に決めたKPI(目的イベント)で決める📊🧪 (Firebase)
-
WebでA/Bが固定される仕組みは? → FIDがIndexedDBに保存されて割り当てが維持される🧠 (Firebase)
-
“遅い” を当てずっぽうで直さないために何する? → Performanceで証拠を取り、必要ならカスタムトレースを入れる⚡🧾 (Firebase)
-
AIはこの章で何に使うのが強い? → 仮説出し・実装案・チェック項目・デバッグの加速🤖💨 (Firebase)
まとめ 🎊
これで「作って終わり」卒業🎓✨ あなたのミニアプリは、数字で育てられるアプリになりました📊🌱 次にやると超気持ちいいのは👇
- 「毎週この時間にダッシュボードを見る」📅👀
- 「改善ネタをAIに“候補10個”出させて、1個だけ実験」🤖🧪
- 「勝った案だけを静かに全体展開」🎛️🏁
必要なら、この第20章の内容をそのまま “教材の本文フォーマット(読む→手順→よくあるミス→小テスト)” に整形して、章末の提出物テンプレ(提出チェック表つき)まで作れます📚✨