Firebaseの有料プラン変更より前に絶対にやっておくべきGCPの無料トライアルへの登録

#概要

Firebaseは密接にGoogle Cloud Platform(以降、GCP)と連携しています。
Firebaseのいくつかのサービスを使用すると、自動でGCPのプロジェクトが作成されています。
そして、そのGCPには12か月間有効な無料トライアルクレジット約3.5万円(税込み)分の特典があります。
執筆時点(2019/07/15)でFirebaseの有料プランを変更してしまうと、本来受け取れるはずの**この特典が消滅してしまったお話です:scream:**

この特典を消失してしまっているFirebaseユーザーが一定数いるだろうと思い、展開することにしました。


#読者対象

- まだGCPの無料トライアルクレジットを受け取っていない全てのFirebaseユーザー
- まだGCPを使用していないが有料プランに移行済みのFirebaseユーザー


#結論

**本件はサポート問い合わせにより、後日ご案内ページ( https://cloud.google.com/free/docs/gcp-free-tier?hl=ja )？の更新があるはずなので、変更する可能性があります。**

**GCPの無料トライアルを未設定の状態では、絶対にFirebaseのプランを変更してはならない。**
Firebaseの有料プラン変更は、GCPの無料トライアルを通さない有料アカウントへのダイレクトなアップグレードを意味する。
GCP単体で使用する場合、無料トライアルの後に有料アカウントしかできないはずだが、Firebaseのプラン変更はこのガードの対象外の模様。
そのためFirebaseのプラン変更をする場合、**GCPの無料トライアルクレジットを先に有効化すること。**
そうすれば、Firebaseのプラン変更を実行しても無料トライアルのクレジットを残すことができる模様。
>有効期限が切れていない無料トライアルのクレジット残額はそのままアカウントに残ります。

これを怠った場合、サポートに問い合わせ、救済されることをGoogleに願うのみになります:confounded:

##どうして問題は発生してしまったのか

原因は以下の二つ。

1. システム的にFirebaseを有料プランに変更する際に自動付与や注意喚起のようなガードがない
2. FirebaseとGCPは密に連携しているので、GCPのガードが働くと思い込んでいた

2の根拠となった部分。最初の請求先アカウントを設定がFirebaseのBlazeプラン有効化もイコールだと思っていた。
https://cloud.google.com/free/docs/gcp-free-tier?hl=ja

>12 か月間の $300 相当の無料トライアルは、最初の請求先アカウントを設定すると、自動的に開始されます。
お客様の身元確認のため、請求先アカウントを設定する際にクレジット カードまたは銀行口座の情報をご入力いただく必要がありますが、無料トライアルの期間中に請求が発生することはありません。

FirebaseのBlazeプラン有効化によって、無料トライアルになるのか、無料トライアルを経由して即座にアップグレードすると予想していた。
>アカウントのアップグレードは、無料トライアルの開始後いつでも可能です。

思い込みの一助となったのがこれで、GCP→Firebaseの自動プラン変更が効くのだから逆も当然と思い込んだ。
（URLをはりたかったのですが、URLをみて想像がつく通り特定のページに対してURLが割り当てられていないため画像です。）
![自動で従量課金.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/310578/052d76f1-78ed-f76d-524c-bf3f9a62b6d1.png)


##この問題についてどう対処したのか

私が誤ったルートに入ってしまったのをおおむね理解し、ダメもとで下記サポートの方に問い合わせを実施。
https://support.google.com/cloud/contact/cloud_platform_billing?hl=ja
私のケースでは休日のためか、英語で日本チームの応答を待つか、英語で書けばこちらでサポートする旨が最初に来ました。（当然日本チーム選びましたが何か？）
ちなみに最初下記のサポート（無料トライアル専用？）に問い合わせると、すでに有料プラン移行済みのアカウントのため有料サポート案内の自動返信メールで門前払いされました:cold_sweat:
https://support.google.com/cloud/contact/free_trial_support?hl=ja

サポートからの回答抜粋。
>請求先アカウントに無料トライアルを付与するため、以下の条件に該当する必要がございます
- 以前に GCP を有料で利用したことがない。
- 以前に無料トライアルに登録したことがない。

>お調べ致しましたところ、ご利用頂いている請求先アカウント ID: XXX は 有料アカウントとして作成されたことが分かりました。FirebaseのコンソールにてBlaze プラン への変更を行う時、Firebase専用の有料アカウントが作成され、上記の条件と競合し、GCP内で無料トライアルアカウントを作成出来ない状態になっております。

>US $300分の無料クレジットを取得するには、最初にGCPコンソールでGCP無料トライアルアカウントを作成する必要がございます。

>US $300分の無料クレジットの適用に付きまして、弊社担当部署に依頼を提出させていただきます

GCPの無料クレジットが獲得できるものと思ってBlazeプランに変更した旨を承諾していただき、後日$300分の無料クレジットをゲットできました:relaxed:

![無料クレジット付与.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/310578/f516c29d-d818-10ce-2edb-d2003df99e23.png)



Blazeプラン変更済み「・・・俺たちのことは見捨てるのかよ？」
私「俺はもう付与されたから後は知らぬ存ぜぬよ・・・**だが断る。**」

私と同様のケースで無料トライアルクレジットの権利を失効したユーザーも同様に救済されるか、合わせて問い合わせ済みです:relaxed:
回答は以下でした。

>クレジットの承認又は適用処理は全て弊社別の担当部署によって行っているため、承認可否についてはお約束出来かねますので、ご了承ください。

私の方で調べたところ、2017/3あたりに有効期限二か月の$300から12か月に延長したようです。
https://jp.techcrunch.com/2017/03/10/20170309googles-cloud-platform-improves-its-free-tier-and-adds-always-free-compute-and-storage-services/

その辺もありますので、あまりに古いと否決されることも考えられます。
GCPへの興味があれば、既存ユーザーでも問い合わせてみる価値はあると思います。
新規ユーザーはミスしないようにしましょう。

#まとめ

GCPとFirebaseは密に連携しているとしつつも、きれいな統合は道半ばというのが実情。
FirebaseプロダクトがGCP サポートの対象になったのもつい先月のこと。
問い合わせすることで良化していったらいいなと思いました。
（課金関連以外では基本的にサポートは有料なのでサポートを購入してないと苦労しますが…）

#おまけ

##Firebaseのプラン変更シーケンス

![Firebase料金プラン.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/310578/627b2dcb-b2f5-2f4b-4862-1caea7531249.png)

Blazeプランを選択する。
![Firebase料金プラン2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/310578/ecfa1285-a446-a0e3-ebba-d8b02042f1ab.png)
次へを選択する。

ちなみにサポートよりいただいた無料トライアルクレジット登録後に実行した場合の画面。
ボタンが次へから購入に代わっているのでGCPへの遷移はないのかもしれません。
![スクリーンショット1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/310578/6f76cee9-5aae-a95f-dfd9-6bd3159a2e8f.png)


ドメインを見ればわかる通り、GCPに遷移します。
![Firebase料金プラン3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/310578/a36e7f0e-9297-f8d4-21ae-c2296a678bf5.png)

GoogleDomainsやAdsenseを利用しているアカウントのため、そのアカウントの情報が既に入っていて購入確定ボタンを押すだけです。
アカウントにクレジットカードが登録されていないと恐らくここで入力することになります。
![Firebase料金プラン4.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/310578/b1d4216e-8e13-2219-a8d0-16f8fe3900c6.png)

Firebaseに遷移してプラン変更完了。
![Firebase料金プラン5.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/310578/76a5b0b5-842f-e83d-bb5d-d3194d155080.png)



##GCPの無料トライアル登録シーケンス

GCPのコンソールの上部に無料トライアルの案内があるので、有効化をクリックします。
![Firebase料金プラン_有効化1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/310578/a9595311-17f4-60b4-f08d-72d1ad80dc14.png)

同意して続行を押す。
![Firebase料金プラン_有効化2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/310578/943aebed-a4da-11a3-57fd-cdb5fb743517.png)

有効化を先にしていなかったのでこの先は私にはわかりません:sob:
先にこっちをしていればよかったのですが、FirebaseをGCPは連携しているからFirebaseのBlazeプランで一気にしようとしたのが間違いでした…orz