Cloud Functions for FirebaseのBlazeプラン無料枠は12.5万回/月ではない

#概要
SparkプランのCloud Functions for Firebase(以降CFF)の無料枠は、GCPのCloud Functions(以降CF)と比較してかなり小さいものになっています。
この無料枠の違いにより、CFでの構築を検討した方もいると思います。
私もCFで検討したうちの一人ですが、調査すると無料枠の違いはなさそうだということが分かったので、調査結果の展開をしておきます。

#結論
従量課金のBlazeプランにしてしまえば、無料枠はCFFでも200万回呼び出しをはじめとしたCFと同等の無料枠がある。
Sparkプランについては、そもそも課金設定をしないと外部へのリクエストができないため利用用途は限定的。（調査対象外）
FlameプランについてはCFの無料枠分と同等のため、Blazeプランの0円相当とみなしていると考えられる。（調査対象外）

#調査

どのように結論に至ったのかを記録しておきます。

##どうやらSparkとFlameプランのCFFは特別らしい

「firebase functions free」でgroupsを検索したらそれらしいQAがあった。

https://groups.google.com/forum/?hl=ja#!search/firebase$20functions$20free/firebase-talk/fQBGtJmw1gE

>Think of the Firebase Spark and Flame as a special capped plans. This allows us to allocate a smaller set of hardware and scaling tools to maintaining the instances, but in return, you accept a stricter set of limits than normal Cloud pricing.

>The Firebase pay-as-you-go (Blaze) plan is ultimately the same as Cloud (Firebase functions are Cloud functions--they don't charge you differently somehow based on where the function was deployed). So the 2 million free ops still applies here, and you're charged at the same rate.

Googleの中の人の回答で頼もしい:grin:
Google翻訳先生お願いします:relaxed:

>Firebase Spark and Flameを特別な上限計画として考えてください。 これにより、インスタンスを維持するために少数のハードウェアおよびスケーリングツールを割り当てることができますが、その代わりに、通常のクラウド価格設定よりも厳しい一連の制限を受け入れることができます。

>Firebaseの従量課金（Blaze）プランは、最終的にはクラウドと同じです（Firebaseの機能はクラウドの機能であり、機能がどこにデプロイされたかによって料金が異なるわけではありません）。 そのため、ここでも200万の無料オプスが適用され、同じ料金で請求されます。

うれしい結論が見えた…だがしかし…根拠が欲しい。
まだだ、まだ終わっていない。

##どうやら根拠はFirebaseの料金ページに書いているらしい

いくつかググったところ、以下のQ&Aにたどり着く。
question事態に関連性はないが、途中の質問に対する回答で、Firebseの料金ページに200万の無料枠が従量課金プランにあるとの発言を見つける:laughing:
…しかしそんな記述ないと思うんだが…半信半疑だったのですが…

https://stackoverflow.com/questions/42854865/what-is-the-difference-between-cloud-functions-and-firebase-functions

##答えは？の中にある

よくよく見ているFirebaseの料金ページ。

https://firebase.google.com/pricing/?hl=ja

改めて見ると？アイコンのツールチップがあるじゃないか…

>The Spark plan allows outbound network requests only to Google-owned services. Inbound invocation requests are allowed within the quota. On the Blaze plan, Cloud Functions provides a perpetual free tier. The first 2,000,000 invocations, 400,000 GB-sec, 200,000 CPU-sec, and 5 GB of Internet egress traffic is provided for free each month. You are only charged on usage past this free allotment. Pricing is based on total number of invocations, and compute time. Compute time is variable based on the amount of memory and CPU provisioned for a function. Usage limits are also enforced through daily and 100s quotas. For more information, see Cloud Functions Pricing.

先生お願いします:relaxed:

>Sparkプランでは、Googleが所有するサービスに対してのみ送信ネットワーク要求を許可しています。 インバウンド呼び出し要求は割り当て量内で許可されます。 Blazeプランでは、Cloud Functionsは永続的な無料利用枠を提供しています。 最初の200万回の呼び出し、40万GB秒、20万CPU秒、5 GBのインターネット出力トラフィックが毎月無料で提供されます。 あなたはこの無料割り当てを過ぎた使用に対してのみ課金されます。 価格は、呼び出しの総数と計算時間に基づいています。 計算時間は、機能に割り当てられたメモリとCPUの量によって異なります。 使用制限は、1日の割り当て数と100秒の割り当て数によっても強化されます。 詳しくは、Cloud Functions Pricingを参照してください。


#まとめ

Sparkプラン＝無料枠と決めつけがちだが、注意深く見れば答えは最初からあった。
CFFにもCFと同じ200万回の無料枠があることが確定。
これで安心してCFFを使おう…**だが断る**

用途がクローラーでフロントと関係性が皆無故、Firebaseである必要がない。
それなら最初から調査する必要がなかった…まあ、今回無駄だったとしてもあきらめることはない。
向かおうとする意志が大事なのであって、私には無駄だったとしても誰かのためになるんだろう。
そして全てを把握しているから、迷いなく作業を進めていける。
一般的に遠回りと思われるこの回り道、しかし私にとってはこれが最短の道だったんだろう。
…ネタパクりまくりですいません:sweat_smile:

#おまけ
##GCPで課金を有効にすると自動で従量プランになるらしい

画像じゃなくてリンクを張りたかったが、パンくずリストを直接呼び出すと文字化けするため画像で代替。
Firebaseから従量課金へ変更しようとするとGCPのコンソールが出るから連携しているのは把握していたが、GCP→Firebaseもありなのは知らなかった。

![自動で従量課金.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/310578/c121fa59-8705-47a8-fa8d-71231798b3be.png)