Firebaseの「Blazeプラン(従量課金)にアップグレードしますか?」というボタンを、自分は3週間くらい押せませんでした。

寝ている間に請求が爆発する話を読みすぎたせいです。Cloud Functionsが無限ループして朝起きたら数十万円、みたいなやつ。個人開発でそれをやったら普通に生活が終わります。

結局押しました。3本のアプリを実際に1ヶ月動かして、請求書を見ました。

発生した費用は3本合計で¥22。実際に払った金額は¥0でした。

内訳と、なぜ0円になるのかの仕組みを全部出します。

実測データ(2026年8月1日〜8月26日)

アプリ発生した費用無料枠による相殺請求額
AIひとこと日記¥6−¥6¥0
AI寝かしつけ絵本¥2−¥2¥0
AI行列待ち時間予測¥14−¥14¥0
合計¥22−¥22¥0

3本ともFlutter製で、バックエンドはCloud Firestore・Cloud Functions・Firebase Authenticationです。うち1本は生成AIのAPIを叩いていて、もう1本は外部の地図APIも使っています。それでこの金額でした。

正直に書くと、この数字を見た時「桁を見間違えたか」と思って請求画面を2回リロードしました。

「有料アカウントにした瞬間から課金が始まる」は誤解だった

自分が3週間ボタンを押せなかったのは、ここを完全に誤解していたからです。

Blazeプランに移行することを「無料プランを捨てて有料プランを買うこと」だと思っていました。違いました。

Google Cloudの請求は、この順番で処理されます。

Google Cloudの請求は3段階で処理される。3アプリとも第1段階の無料枠で全額相殺され、第2段階以降に到達していない

上の表の「¥6」「¥2」「¥14」は、STAGE 1で全額消えています。STAGE 2のクレジットにすら到達していません。

これは推測ではなく確認できます。自分の環境にはトライアルクレジットが約4万8千円分ありましたが、残高が1円も減っていませんでした。 元の金額と完全に同じです。つまりクレジットは使われていない。無料枠だけで賄われている。

ここが肝で、無料枠(Always Free)は有料アカウントになっても消えません。 Blazeプランへの移行とは「無料枠を超えた分だけ払う契約に変わる」という意味であって、無料枠そのものを手放すことではありませんでした。

STAGE 3に到達するには、いまの数百倍のトラフィックが必要な計算になります。使い方を変えない限り、請求は¥0のままです。

クレジット残高を安心材料にしていたのが、いちばん間違っていた

「4万8千円分のクレジットがあるから当分は大丈夫」——これも思い込みでした。しかも考え方が逆でした。

クレジットには有効期限があります。自分の場合、付与からおよそ1年で失効します。そして上に書いたとおり、月の消費が全額無料枠で収まっているので、このクレジットは1円も使われないまま期限切れで消えます。

つまり、クレジット残高は安心材料ではなく、最初から存在しないものと同じでした。

これに気づいたのは、全国展開したときの費用を試算していた時です。「クレジットが4万8千円あるから、初期の拡大コストはこれで賄える」という前提で計画を立てていました。失効日を確認して、その前提が丸ごと崩れました。

見るべき数字は残高ではなく、無料枠に対する実際の使用量でした。残高は減っていないのではなく、そもそも使われる経路に入っていないのです。

それでも予算アラートは必ず設定する

ここまで「0円だから怖くない」と書いておいて逆のことを言いますが、予算アラートは全アプリに設定してください。 自分は3本すべてに入れています。

理由は、費用が増えるパターンが「じわじわ」ではなく「ある日突然」だからです。

無限ループを書いてFunctionsが呼ばれ続ける。外部APIのクロール範囲を広げすぎる。想定外にバズってユーザー数が桁で増える。どれも一晩で起きます。月末の請求書で気づいたのでは遅い。

自分は月¥1,000という低い閾値で、50% / 90% / 100%の3段階アラートを設定しています。0円で回っている環境なら、¥1,000に届いた時点で何かが確実におかしいという判定ができるからです。閾値は高くするより低くするほうが効きます。

ここでハマった:「クレジットを含める」設定を間違えると何も検知できない

予算アラートを作るとき、Google Cloudには INCLUDE credits / EXCLUDE credits という設定があります。ここを意識せずに作って、自分は一度失敗しました。

  • INCLUDE credits(クレジットを含める): 相殺後の、実際に自分が払う金額を見る
  • EXCLUDE credits(クレジットを含めない): 無料枠やクレジットが無かった場合の「素の使用量」を見る

デフォルトのまま作ると、永遠に¥0なのでアラートが一生鳴りません。 実費は0円のままなので当然です。そして使用量が10倍に増えても、無料枠の内側にいる限り0円のままなので、異常が起きていることに気づけません。

いまは2本立てにしています。実費の監視にINCLUDE、使用量が伸びていることの早期検知にEXCLUDE。0円が続く環境では、後者がないと本当に何も見えません。

結論

個人開発の規模なら、Firebaseのクラウド費用はほぼ確実に0円で収まります。Blazeプランへの移行をためらう理由にはなりません。 自分が3週間止まっていたのは、単に仕組みを知らなかっただけでした。

ただし0円なのは「安いプランを選んだから」ではなく「無料枠の中にいるから」です。この違いを理解しておかないと、スケールした瞬間に何が起きるかを予測できません。

見るべきは請求額ではなく、無料枠の消化率です。


この3本のアプリは、AIエージェントに役割を割り振った「AI社員」の体制で開発しています。その体制で実際に何が起きたかは別の記事に書きました。

次は、実際の売上のほうを同じ粒度で公開する予定です。こちらは0円では済まない話になります。