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

第02章:2nd genを選ぶ理由(ざっくりでOK)🚀

この章のゴール🎯

「新しく作るなら、基本は2nd genでいいんだな🙂」って腹落ちして、迷いが消える状態にするよ✨ (そして、例外的に1st genが必要な場面もサクッと把握する👍)


まず結論💡

新規の関数は、だいたい2nd genでOKです🚀 理由はシンプルで、2nd genは Cloud Runベースで、スケールの仕方・性能・運用のしやすさが現代仕様になってるからです🏎️💨 (Firebase)

ちなみに最近の名称まわりで混乱しがちなんだけど、2nd genは「Cloud Run functions」と呼ばれる流れになってるよ(APIは引き続きCloud Functions APIが使える)🧠 (Google Cloud Documentation)


2nd genって何者?🧠

2nd Gen Architecture

ざっくり言うと、

  • 実行の土台がCloud Run(コンテナ実行の世界)📦
  • イベント配信がEventarc(イベントをいい感じに届ける係)📮
  • だから「より速く・より柔軟に・より運用しやすく」なってる✨ (Firebase)

2nd genが嬉しいポイント(ここだけ覚えればOK)🎁✨

1) 1台で“同時にさばける”=混んだとき強い💪🍜

Concurrency Metaphor

1st genは基本「1インスタンス=1リクエスト」みたいなノリになりがち。 2nd genは concurrency(同時処理) が使えて、1インスタンスで複数リクエストを並行処理できるよ🚀 (Firebase)

  • concurrencyは 1〜1000 で設定できて、デフォルトは80(HTTP)🎛️ (Firebase)
  • しかも、concurrencyを上げると 冷スタート回数が減りやすい(インスタンス乱立しにくい)❄️➡️🔥 (Firebase)

たとえると… 1st gen:席が1つの屋台🍢(注文が来るたび席を増やす) 2nd gen:席が多いフードコート🍔(同じ店が複数注文をさばける)

✅注意:concurrencyを使うには「CPUがちゃんと1以上」みたいな条件がある(CPUを小さくしすぎると並行処理が無効になる)⚠️ (Firebase)


2) パワーが出る&長く動ける🏋️⏱️

Power and Duration

AI系とか、ちょい重め処理って「少し時間がほしい」ことあるよね🙂 2nd genは インスタンスサイズが大きめまで選べるタイムアウト上限が伸びるので助かる💡 (Firebase)

  • 例:HTTPは最大60分、イベント系は最大9分(条件はトリガー種別で変わる)⏰ (Firebase)
  • メモリ/CPUも大きく取れる(例:最大16GiB/4vCPU)🧠💪 (Firebase)

👉 だから、AIの“裏側API”(要約・整形・分類・通知文生成など)を置く土台として相性がいい🤖✨ (後の章でやるGenkit連携も、関数として自然に組み込めるよ)(Firebase)


3) “運用がラク”寄りの機能が揃う🧯👀

Operational Features

2nd genはCloud Runの世界なので、デプロイが「サービス運用っぽく」なる✨

  • 複数リビジョンや**段階リリース(トラフィック分割)**ができる🛣️
  • ロールバックもしやすい💫

(本格運用の入口として、かなり嬉しいやつ!)


4) イベントの世界が広い🌍📣

2nd genはEventarcが絡むので、イベントソースがめちゃ多い(“90+”みたいな世界)📮✨ (Firebase)

そしてFirestoreも、2nd gen前提の拡張要素が出てきたりする(例:Named databases対応が2nd gen前提)🧩 (Firebase)


でも!2nd gen万能じゃない(ここ超大事)⚠️

1st vs 2nd Gen Scope

「基本は2nd gen」でOKなんだけど、一部は1st genにしか無い/差があるところがあるよ👀

  • Analyticsイベントのトリガーは1st genのみ📊 (Firebase)
  • Authの“昔ながらのイベント”も、対応が分かれてる(2nd genはBlocking系中心、など差がある)🔐 (Firebase)

✅ただし安心してOK:同じプロジェクトに1st genと2nd genを混在させる運用は普通にできるよ🙂(必要なところだけ1st genにする、みたいな戦い方)(Firebase)


迷ったときの超シンプル判断ルール✅

  • 新しく作るHTTP/API、Firestoreイベント、スケジュール処理 → 2nd gen🚀 (Firebase)
  • 「そのトリガー、2nd genに無いっぽい…」 → その部分だけ1st gen👈 (Firebase)

コストで事故らない小ワザ🧯💸(軽くでOK)

Min Instances Cost Warning

2nd genは「min instances(常駐)」が設定できて、冷スタートを減らせる反面、置いておくだけで課金が出ることがあるよ⚠️ (Firebase)

  • 「遅延がキツい本番APIだけ min instances=1」みたいに、ピンポイント運用が安全🙂

🛠️ 手を動かす(ミニ演習)📝✨

演習A:2nd gen推し理由を“自分の言葉”で3行にする✍️

次の型で埋めてみて👇

  • 2nd genは(    )ベースだから(    )が強い💪
  • (    )があるので、混んでも安定しやすい🚦
  • ただし(    )みたいな例外は1st genが必要⚠️

演習B:AIに添削させる🤖🧰

Antigravity / Gemini CLIにこう投げる👇

  • 「上の3行、嘘がないか公式ドキュメント基準でチェックして、言い回しを初心者向けに直して」 Firebase MCP server と Gemini CLI拡張を入れておくと、Firebase文脈での精度が上がりやすいよ📚✨ (Firebase)

✅ チェック(5問)💯

  1. 2nd genがCloud Runベースだと何が嬉しい?(1個でOK)🚀 (Firebase)
  2. concurrencyって何?(一言でOK)🧠 (Firebase)
  3. HTTP関数のタイムアウト上限は最大どれくらい?⏰ (Firebase)
  4. 「基本2nd genだけど例外で1st genが必要」になりがちな代表例は?📊 (Firebase)
  5. min instancesのメリデメを1つずつ言える?💸❄️ (Firebase)

次章につなぐよ🔗🙂

次は「じゃあ実際、どの言語・ランタイムで書くのが迷子にならない?」って話に進むよ🧩✨ (Node/TS中心で、必要ならPythonも…の整理を気持ちよくやる!)