メインコンテンツまでスキップ

第13章:料金の感覚(どこで課金が起きる?)💸🧠

この章のゴールはこれ👇 「Extensionsは“入れるだけ”だけど、どこでお金が発生するかを説明できる」 ようになること!😎✨ 特に Resize Images を例にして、“課金ポイントの地図” を頭に入れちゃうよ〜🗺️🧩


まず結論:Extensions自体が課金されるんじゃない🙅‍♂️➡️ “裏で動くサービス”が課金される💸

Billing Source

  • Extensionsはたいてい Blaze(従量課金)必須。でも 「入れた瞬間に料金が発生」ではなく、裏で使うサービス(Functions/Storageなど)の利用量で増えるイメージだよ📈 (Firebase)
  • つまり… “便利さ”=“自動で動く処理”=“どこかのメーターが回る” ってこと😆🧠

Resize Images の “課金ポイント地図” 🧩📷➡️🖼️

Resize Images は、ざっくり言うと 「Storageに画像が来たら、Functionsで加工して、またStorageに保存する」 って流れ。だから課金ポイントも素直👇 (Firebase)

① Cloud Storage(保存+操作+配信)🪣📦🌍

Storage Cost Factors

増えるとコストが増えるもの

  • 保存容量:元画像+サムネ(複数サイズだと増えやすい)📦
  • 操作回数:アップロード/ダウンロード/メタデータ操作など🧾
  • ネットワーク転送(配信):表示回数が増えるほど増えがち🌍

節約のコツ

  • サムネサイズを増やしすぎない(必要最小限でOK)🧠
  • “全部の画像を常にフルサイズで配信”を避ける(まず軽いサムネ→必要なら元画像)⚡

② Cloud Functions(画像処理の実行)⚙️🔥

Functions Cost Factors

増えるとコストが増えるもの

  • 実行回数(= 画像が来るたびに起動)🔁
  • 実行時間・CPU/メモリ(重い処理ほど)⏱️
  • ログ(大量に吐くと地味に増える)🪵

節約のコツ

  • でかすぎる画像を最初から弾く(最大サイズを決める)🧯
  • エラー時にログを出しすぎない(必要な情報だけ)🪵✂️

③ Eventarc(イベント配線)📣🧷

Resize Images の Billing欄でも明記されてるポイントで、Eventarc の料金が発生することがあるよ📌 (Firebase) (「イベントを配る仕組み」の利用料、みたいな感覚)


④ “無駄な起動”がいちばん怖い😱(重要!)

Trigger Scope Efficiency

Resize Images には注意書きがあって👇 「バケット内の全変更を監視する設定だと、不要な関数呼び出しが増える」 ことがあるのね💥 なので、できれば 専用バケット対象パスを絞る設計 が超効く!🧠🛡️ (Firebase)


⑤ (オプション)AI系機能をONにすると…🤖✨

AI Feature Cost

Resize Images には Genkit を使った AI画像モデレーション(内容チェック)もある。ONにすると便利だけど、処理が増える=利用量が増えやすいのは感覚として持っておこう🧠⚖️ (Firebase) (課金の詳細は「使っているAI側の料金体系」に従うので、ONにする前に確認するのが安全👍)


“無料枠”の感覚:Blazeでも「無料枠ゼロ」じゃない🙆‍♂️✨

Firebaseの料金ページを見ると、Cloud Storage や Cloud Functions には no-cost(無料枠)があるよ📌 しかも 日次でリセットされるタイプもある(= 小さく始めるなら意外と無料枠に収まることもある)🌱 (Firebase)


手を動かす🖐️:30分でできる “ざっくり見積もり” 🧾📏

ステップ1:まず “前提” を数字で置く(ここが9割)🎛️

下の表を埋めるだけでOK!🙆‍♂️

項目メモ
1日の画像アップロード数500多い日で考えると安全📈
元画像の平均サイズ2MBスマホ写真は大きくなりがち📷
サムネの数2個例:200px/600px
サムネ1個の平均サイズ0.2MB圧縮できると良い✨
画像の保存期間30日履歴を残すほど増える📦
1画像あたりの表示回数10回配信(転送)が増えやすい👀

ステップ2:ざっくり容量を出す(例)📦

Cost Calculation

例の数字だと👇

  • 1枚あたり:元2MB + サムネ(0.2MB×2)= 2.4MB
  • 1日:2.4MB × 500 = 1200MB ≒ 1.17GB/日
  • 30日保存:1.17GB × 30 = 約35.16GB 📦

ここまで出せると、もう勝ち😆🔥 (「あ、無料枠5GBとかなら絶対超えるな」みたいに肌感が掴める)


ステップ3:コスト事故を防ぐ “安全装置” を入れる🧯🔔

Budget Alert limit

Firebaseの料金プラン側でも、予算アラート(Budget alerts) が推奨されてるよ📣 ただし アラートは“通知”であって、料金を自動停止はしない点が大事⚠️ (Firebase)

✅ やること(超おすすめ)

  • 予算アラートを小さめに設定(例:最初は低め)🔔
  • 画像の最大サイズ制限(でかい画像は弾く)🧯
  • 対象パス/専用バケットで “無駄な起動” を抑える🪣✂️ (Firebase)

さらに安全に:Emulatorで試すときの注意🧪⚠️

Extensions Emulator は「本番前に試して課金や事故を減らす」ための道具なんだけど… 一部の拡張はエミュレートされないAPIを叩いて、実際に課金が発生する可能性があるって公式にも注意があるよ😱 (Firebase) なので、Emulatorでも “何が本当に呼ばれるか” は意識しよ🧠


AIも使って“見積もり&事故予防”を速くする🤖⚡

Gemini CLI:コストの洗い出しをAIに手伝わせる🧾🤝

Gemini CLI は、使うエディションによって利用枠があったり、APIキーで従量課金(pay-as-you-go) にもできるよ📌 (Google Cloud Documentation) だから「AIもタダじゃない」って意味でも、この章と相性いい😆💸

プロンプト例(そのまま投げてOK)🗣️

Resize Images 拡張で課金が発生しうるポイントを
Storage / Functions / Eventarc / ログ / ネットワーク の観点で箇条書きにして。
初心者向けに、事故りやすい順で。

Antigravity:AIエージェントに “チェックリスト作成係” をやらせる🛸✅

Antigravity は “エージェント前提の開発環境” として紹介されてるので、 「見積もりシート」や「運用チェックリスト」を作る係に向いてるよ🧩✨ (Google Codelabs)

Gemini in Firebase:エラーやクラッシュの説明をAIに噛み砕かせる🧠🪵

たとえば Crashlytics で Gemini を有効化すると、原因や修正案の説明を出してくれる方向があるよ(ログ読解の助けになる)📌 (Firebase)


ミニ課題🎯:無料枠を超えそうなポイントを1つ挙げよう🕵️‍♂️

次から1つ選んで、「なぜ超えそう?」を一言で書けたらOK🙆‍♂️

  • A:サムネを5種類作ってた(保存も操作も増える)🖼️📈
  • B:対象パスを絞らず全バケット監視(無駄起動が増える)😱 (Firebase)
  • C:画像がデカすぎる(処理が重くなる)📷💥
  • D:表示回数が増えて配信(転送)が増える👀🌍

チェック✅(言えたら勝ち😎)

  • 「Extensionsはタダっぽく見えるけど、裏のサービス利用で課金される」って説明できる (Firebase)
  • Resize Images で Storage / Functions / Eventarc がメインの課金ポイントだと分かる (Firebase)
  • 無駄な起動(監視範囲が広い) がコスト事故になりやすいと分かる (Firebase)
  • 予算アラートは便利だけど 自動停止ではないと理解してる (Firebase)

おまけ:クラウド Functions 系のランタイム目安(2026)🧩⚙️

「拡張の裏側=Functions」なので、バージョン感も軽く把握しとくと安心👍

  • Cloud Functions for Firebase(Firebase側)

    • Node.js 22 / 20(18は非推奨)(Firebase)
    • Python 3.10〜3.13(3.13がデフォルト)(Firebase)
  • Cloud Run functions(GCP側・より多言語)

    • .NET 8 なども選べる

次の第14章が「2026の注意点(デフォルトバケットと課金要件)」だったよね📅⚠️ 第13章で“料金の地図”ができたから、次は 「期限系の地雷を踏まない」 を固めると無敵になるよ😆🛡️