やるぜ！Flutter！結局Firebaseだよ登録編

やっぱりいまどきFlutterやるならFirebaseだよね！なんたってFirebaseは安くて早くてうまいよね！

て、いまどきの技術者風に行ってみたけど、実際のところFirebaseってなんなの？何ができるの？どうしたら使えるの？
ネットにつながらないと使えないアプリっていうのもなんだかなぁと思っていたけど、完全スタンドアロンで動かすこともできない（そもそもネットにつながないとインストールができない）んだから、そこはそれ、便利なものは取り入れていこうって思ったけど、いざやるとなると、何したらいいの？って道に迷いました。

なので例によって自分のためにFirebaseの使いどころや設定なんかを整理していくよ。from Flutterで。
まずは入門編だ。

# 1. Firebaseで何する？
Firebaseって普通の仮想サーバーとは違うっぽいが、具体的に何ができるかわかりづらい気がする。特に古い技術知識を持っている人には。なんか発想が違うんだよね。
サーバを借りるというより、サービスを使う、という考え方だよね。
だから、「Firebaseの〇〇機能を使って△△を実現する」って考えないと、なんだかよくわからなくなる気がする。
じゃあ、どんな機能があるの？
この辺をやりたい範囲で調べていこう。

## (1)認証機能
### ・Authentication
ユーザ認証やログインなどの機能を提供してくれる。よくあるgoogle、facebook、twitterなどのIDで認証する機能も簡単に実装できそう。多分。

## (2)データ保管機能
データベースっぽい機能やStorageを管理する機能がある。
### ・Cloud Firestore
NoSQLのデータベース。Firebase ExtentionsにあるAlgoliaを使うと、全文検索もできるらしい。Algoliaは有料だけど。同じくExtentionsのTriggerEmailを使うと、Cloud Firestoreに登録したemailアドレスにメールを送る機能なんかもあるらしい。有料だけど。
### ・Realtime Database
JSON形式でデータを保管するNoSQLデータベース。元々はこれがFirebaseのデータベースだったが、今はCloud Firestoreができて、使い分けできるらしい。JSONでデータを扱いたいときや、大量データの場合はこっちを使ったほうがいいらしい。
### ・Cloud Storage
画像や動画などを保存しておけるストレージ。

## (3)ホスティング
Webサーバーの機能が提供されている。デプロイすればそれだけでWebサイトが構築できる。FlutterをWebページに変換してデプロイすることもできる。魔法のようだね。

## (4)管理機能
サーバの運用や管理を楽にしてくれるツール類があるよ。
### ・Remote Config
サーバの設定だけでアプリの内容を変更できる。そうなの？すげーな。
### ・Cloud Function
Firebaseへのリクエストに応じてAPI等を自動的に動かす機能。ちょっと何言っているかよくわかんない。

なんか最後の方はぞんざいな説明になったが、実際に使うときにもうちょっと真剣に考えることだろう。

今回はまずFirebaseを使えるようにするところまでやってみるよ。

# 2.プロジェクトを作ろう
ほんだばとりあえずFirebaseのサイトにアクセスしてみよう。
[Firebase Console](https://console.firebase.google.com/u/0/?hl=ja)にアクセスしたら、なんかもうプロジェクト作成画面になったよ。いつの間に申し込んだっけ？
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/137858/3288b60e-fc37-a024-d959-945f760fa986.png)
まあいいや、プロジェクト作成をクリックだ（危ないリンク踏む奴の発想）。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/137858/7ba9d449-5f8e-7174-d448-1d649820e84f.png)
プロジェクト名の入力が求められる。適当なプロジェクト名を入力して続行をクリック。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/137858/a666f921-dd7c-e4c6-3c41-07d758ce5aea.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/137858/71880c5b-d8cf-0800-0211-cf0d77008e84.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/137858/cd01451e-de4c-f275-5b76-c4eeba5129c8.png)
Googleアナリティクスを有効にするっていうから、有効にしてみたよ。この辺好みだね。
それで続行をクリック。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/137858/eca70acb-2fc5-401c-c65e-a43a67776451.png)
アカウントを設定しろっているから、googleのアカウントを選択したよ。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/137858/10497f0c-e4da-d1df-168b-ec0ca98f5f59.png)
プロジェクトを作成ボタンが押せるようになるので、クリック。
作成中の画面が表示される。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/137858/e003e20e-2321-4143-fcfc-c3dac9ce69aa.png)

準備ができました！って言われたら続行をクリック。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/137858/b225c63f-de3d-2368-386e-d13003c1bc9a.png)

プロジェクトのコンソールが表示されたよ。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/137858/a2fa95bc-c986-4847-1c08-85275c2f7a15.png)

これでFirebaseが使えるようになったはず。
よし、まずはデータベース機能を使ってやる！
しかし、喜びもつかの間、まさかこんな敵が現れるとは…
次回、[「結局FirebaseだよFirestore編」](https://qiita.com/apricotcomic/items/a657396d1c745e0a54c8)をお楽しみに！
Firebase王に、俺はなる！（なんだこの締）