Firebaseで無料枠の範囲内のはずが課金されたのならこれが理由かも？

#Overview

Firebaseの無料枠はかなり大きい。
私もCloudFunctionsが外部にリクエストを投げれていたら、まだ課金プランにはしていなかった可能性が高い。
外部リクエストのためだけに課金を有効にして数か月、明細を見てみたらFirebase Hostingで課金が発生している:fearful:
たった8円なので影響は0に等しいが、その理由を理解しておかないと危険と考え原因を究明することに。
今回は結論に至るまでの過程を記録しておきます。

#読者対象

- Firebaseで今後課金プランへの移行を検討している方
- Firebaseで既に課金プランへ移行している方

#いきなり結論
Firebaseを課金プラン（Blazeプラン）に移行すると日割り計算のプロダクトが出てくるため。
無課金のSparkの無料枠に加え、Blazeプランでは日割りでの上限が設定されているようです。

細かいことを知りたい場合は続く。

**<2020/02/08追加>**

以下の手順で使用料と請求額の画面より、各サービスの課金ラインがわかりやすくなっています。

- 各サービスの使用状況タブを選択し、「使用量と請求を表示する」をクリック
- 左のDrawerメニューから「Project Overview」の右にある歯車の設定アイコンをクリックし、「使用量と請求を表示する」を選択

画面遷移するとそれぞれのサービスでのボーダーが一目瞭然です。

![課金ライン一目瞭然.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/310578/33814955-8712-ffcf-5671-b5b6020e2032.png)


また、デイリーでの超過状況については、各サービスにポイントすると「使用量を見る」のボタンが出るので、それを選択するとそれぞれについて超過状況が時系列ぐラグで見れます。

![課金ライン追加2020.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/310578/7bec4248-e386-f918-e88b-61d0c4c28507.png)


#What happened?

##意味不明の8円

請求書を気まぐれで眺めたら、9月の請求書にFirebase Hostingで8円の請求が:open_mouth:

![Firebaseの請求.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/310578/9f425902-629d-3c78-b9e6-fcf3b9a7404e.png)

理解できない…無料枠は10GB/月なのに6.7GB/月ならどう考えても無料の範囲内。
仮に無料枠が異なっていても中途半端な8円の計算式が想像できない。(＄0.15/GB)
怪しい動きは重大事項の前触れかもしれない。

これはサポートに聞いてみるしかない！

##GCPサポートに問い合わせた

以下のサポートに8円課金の計算式を知りたいと問い合わせる。
https://support.google.com/cloud/contact/cloud_platform_billing?hl=ja

通常サポートは有償であるが、課金関連は有償プランのサポートを購入していなくてもOK。
しかも日本語で質問できるのがありがたい:smile:

当日中にメールが届き、要約するとFirebaseは担当外だから以下を使ってねと。
今回の質問はFirebase担当部署に引き継ぎましたよと。
https://firebase.google.com/support?hl=ja
https://firebase.google.com/support/troubleshooter/contact?hl=ja

すいません:sob:

##Firebaseサポートから返答が来た

>Note that free usage limit on Blaze plan is calculated daily with the exception of some products: Cloud Functions, Phone Auth, and Test Lab, as mentioned on our pricing page. As also stated on our blog post here, free usage on the Blaze plan is calculated daily, whereas the Spark plan is calculated monthly.
>
>For Hosting Outgoing bandwidth (GB transferred), there’s a free usage of 10 GB/month, but there’s also a daily quota of 360MiBy/day on a Blaze plan free usage. You might have exceeded this daily quota which caused the billing usage of 8 JPY.

文中にあるサポートの示したブログURLはこれ。
https://firebase.googleblog.com/2018/03/adding-free-usage-to-blaze-pricing-plan.html
以前はBlazeプランに無料枠はなかったが、無料枠を含めるようにした際のブログ。
この中でBlazeプランの無料使用は毎日計算されますが、Sparkプランは毎月計算されます。とおっしゃっている。

サポートの示したURLのもう一つはFirebaseの料金URL。
https://firebase.google.com/pricing/?hl=ja

>*Free usage on Blaze plan is calculated daily. Details differ slightly for Cloud Functions, ML Kit, Phone Auth, and Test Lab.

前述の日割りの注釈だけど、日本語ページでは翻訳されてないというね…これは見落としても無罪。


それでは話を戻して、Google翻訳先生お願いします。

>Blazeプランの無料の使用制限は、価格設定ページに記載されているように、クラウド機能、電話認証、テストラボなどの一部の製品を除き、毎日計算されます。 こちらのブログ投稿でも述べているように、Blazeプランの無料使用は毎日計算されますが、Sparkプランは毎月計算されます。
>
>Hosting Outgoing帯域幅（GB転送）の場合、10 GB /月の無料使用量がありますが、Blazeプランの1日あたり360MiByの無料使用量もあります。 この1日の割り当てを超えたために、8円の請求が発生した可能性があります。

謎は…全て解けた！
たしかに9月はTwitterの祝砲を頂き、アクティブユーザーが100人越えという快挙を成し遂げた。
1日に360MBを超えた可能性が極めて高い。

請求をさらに掘り下げると課金の発生した日にちも特定。
サポートの言う通り、ピークが日割り計算の無料枠を超えた模様。

![Firebaseの請求調査.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/310578/de8a3e0d-2a25-5a56-1a28-5cf3822da365.png)

日割りという一言から、10 GB/月の無料枠にプラスして360MB/日という上限もできていた:weary:


##感動した

今回のこととは関係ないが、メールの冒頭に以下の文章が。

>We will try our best to understand your question by using Google Translate and will send our feedback in English. Feel free to let us know if there is any misunderstanding.

Google翻訳先生お願いします。

>Google翻訳を使用して質問を理解できるように最善を尽くし、英語でフィードバックをお送りします。誤解がある場合は、お気軽にご連絡ください。

すばらしい:thumbsup:
全俺が震えた:sob:
歌は国境を超えるというが、Firebaseのサポートも確かに国境を越えていた。
Google翻訳先生が翻訳しやすいよう、丁寧に回答していただいたんだと思う。
今後もご指名したいと思った素晴らしきサポート！

#まとめ

無課金のSparkとBlazeでは同じ無料枠でも、日割り計算の都合から見えない上限があるという話でした。
今回はFirebase Hostingでしたが、月毎の枠を持ち例外に該当しないプロダクトはCloudFirestoreとRealtimeDatabaseですかね？（CloudFunctionsは例外）
無料枠は大きいといっても料金にすれば1000円程度だと思いますので、企業ベースでは気になりませんが、収益が少ないところでは気にしたいところです。

今回のことで、じゃあBlazeへの移行はやめようと躊躇する必要はありません。
下記の記事に詳しく書いていますが、GCPの新規入会キャンペーン的なお試し用クレジットをゲットすれば1年は課金が発生することはないでしょう。
https://qiita.com/qrusadorz/items/bfb22e061bb122fbef65

Have a great day!