![見出し画像](https://assets.st-note.com/production/uploads/images/93175846/rectangle_large_type_2_8fa1531103920f357fa13f80de2aec5d.png?width=800)
賢めのサルでもわかるFirebase
どうも。
今はアメリカという名の者です。
今回は、とある雑談カテゴリアドベントカレンダーの #パソコン 担当として本記事を公開いたします。
QiitaやZennやらに書こうと一瞬思ったんですが、パソコンメガネじゃないのでやめました。
パソコンメガネのみなさんも、そうでないみなさんも、よろしくお願いします。
そもそもFirebaseって何?
Google提供のWeb / モバイル向けのアプリケーションプラットフォームです。
「なんのこっちゃ?」だと思うのでざっくり言うと、「かんたんホームページとかスマホアプリ作れるくん」です。だいたいタダで使えて、あんまり準備する必要もないので、初心者におすすめのサービスですね。
(ここはパソコンメガネ向けエリアです)
基本的にFirebaseのバックエンドはGoogle Cloudと統合されているため、Google Cloudの使用経験があるとかなり使いやすいかと思います。
無料プラン(Spark)もあるのですが、FaaSであるCloud Functionsなどから外部アクセスができなかったり、BigQuery以外のGoogle Cloudプロダクトが使えなかったりするので、基本的には従量課金プラン(Blaze)をお勧めします。
他のクラウドサービス同様、従量課金プランでも無料プランと同等の無料枠が確保されているため、個人開発程度なら無料枠で事足ります。
ただ、もちろん支払方法(多分クレカだけ)を登録する関係上DDoSとか受けたら支払い爆増なので注意してください。まあ大体大丈夫です。
事前にFirebase CLIのインストールとFirebaseプロジェクトの作成を済ませておくと躓きにくいです。
何ができるの?
色々できます。例えば、
ホームページを公開する
ホームページにログイン機能をつける
画像とか文章を保存する
などですね。
他にもいろいろできるのですが、今回は以下の4つを紹介していこうと思います。
Hosting
Authentication
Cloud Functions
Cloud Storage
それ以外のプロダクトあんまり使ったことないだけです。
(Firestoreは説明がややこしいのでやめました)
本当はRealtime DatabaseやらFirebase MLやら使ってみたいんですが、高すぎたり使う必要なかったりなんですよね。
それでは行きましょう。
1. Hosting
https://firebase.google.com/docs/hosting
通称「ホームページ公開できるくん」です。
ウソです。
HTMLファイルとかプログラム(なくてもいい)をアップロードすることで、インターネットにホームページを公開することができます。
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="utf-8">
<title>こういうやつ</title>
</head>
<body>
<p>インターネットジジイのみなさんはよくご存じだと思います。</p>
</body>
</html>
ホームページを公開する時には「サーバ(でっかいパソコン)を準備する」「ドメイン(http://ほげほげ.com)を契約する」みたいなめんどくせ~ことをする必要があるのですが、Hostingを使うとこういうことを(あんまり)やらなくてよくなります。
みんなメモ帳とHostingでホームページを作って自分のことを全世界にさらけ出そう!
基本的には静的コンテンツを提供するのがHostingの役割ですが、Cloud Functions(関数)やCloud Run(コンテナ)と組み合わせることで動的コンテンツを提供することもできます。
とはいえ、処理内容によってはクライアントでやって問題ないときもあるので、HTMLのビルド前に何か処理を挟みたいというときに使うことが多いと思います。
まあこの辺はherokuやらなんやらと似た感じなので、まずは使ってみるとよいかと思われます。
2. Authentication
https://firebase.google.com/docs/auth
「ログインくん」です。
これもサーバ(でっかいパソコン)を用意する必要がありません。
ログイン機能を準備するのって割とめんどくさかったりするんですが、これを使うことでとてもかんたんに準備することができます。
メールアドレスとパスワードのログインだとか、電話番号のログインだとか、Googleアカウントのログインだとかができます。
ホームページに書くためのプログラムも準備してあるので、誰でも隠しページが作れますね。
隠しページ作るだけなら埋め込みでいいだろ!
…………というのは置いといて、不特定多数のユーザが利用することを想定したアプリケーションを作る際、認証・認可サーバに頭を悩ませることなくログイン・ユーザ管理機能を実装することができるのはかなり良いです。
Firestoreでユーザデータ管理すれば鬼に金棒ですね。
トークンの生成・利用もサポートされているので、既存のバックエンドアプリケーションとの統合も容易です。
基本的にはよくある認証パターンはビルトインのものもありますが、他の認証方法や既存のIDPのユーザ情報を流用したい!というユースケースも「カスタムトークン」を利用することでカバーできます。
3. Cloud Functions
https://firebase.google.com/docs/functions
「なんかするくん」です。
これもサーバ(でっかいパソコン)を用意する必要がありません。
これはちょっと難しいのですが、アクセスすると何か計算して答えを教えてくれるプログラムなどを作ることができます。
例えば、今の時間をもとにアメリカや中国の時間を教えてくれるやつを作れたりします。
便利ですね。
上の例は正直イマイチです。
Cloud Functionsはバックエンドの重めの処理をサーバレスプラットフォームで回せるのがいいところなので、ホームページの例だと「クライアントでやればええやん」になってしまうわけですね。
使いどころとしては裏のDBサーバにクエリかけたりFireastore、Realtime Databaseからデータひっかけてくるのが多いかと思います。
Node.jsやPython, Go, Javaなどランタイムも結構準備されているので、「js/ts書きたくない…………」って人にもお勧めです。
基本的にはHTTPリクエストをトリガーに動かすことが多いですが、Cloud Schedularを使ってcronっぽく動かすこともできます。
基本的にはGoogle CloudのCloud Functionsと同じなのですが、Firebaseのそれは他のFirebaseプロダクトと利用することを前提とされているので、デフォルトだとFirebaseからしかアクセスできない設定になってくれたりして考えることが減るのもいいですね。
4. Cloud Storage
https://firebase.google.com/docs/storage
「おっきいデータ入れるくん」です。
これもサーバ(でっかいパソコン)を用意する必要がありません。
ここには画像やテキストなどを入れるのがおすすめです。
HDDやGoogle Drive、iCloudのように容量を事前に確保しておく必要がないので、ホームページに載せたいクソgifクソ動画をいくらでも保存することができます。
また、そのファイルにアクセスするためのアドレスも作ってくれるので、ブラウザから直接ファイルを見ることもできます。
Google CloudのCloud Storageと同じです。
いわゆるオブジェクトストレージですね。基本的にはバイナリデータを保存することが多いです。
Cloud Functionsでリクエストに応じて生成したダウンロード可能なデータを配置し、Hostingで公開したサイトにリンクを貼る…………などということもできます。
このサービスは特にほかのGoogle Cloudサービスとアプリケーションを統合する際に効いてくることが多いので、初めての方だと使うのは先になるかもしれません。
まとめ
いかがでしたか?
FirebaseはWebサイトやスマホアプリを作るのにとっても便利です!
ぜひ使ってみてくださいね!
それぞれのプロダクトなどのドキュメントにチュートリアルがあるので、おとなしく手を動かしましょう。自身の経験に勝るものはありません。
初心者向けのガイドも(ちゃんと日本語で!)準備してあるので、怖がらずにまずはよんでみてください。
https://firebase.google.com/docs/guides
「お金がかかるのが怖い…………」という方はまずLocal Emulator Suiteを使ってみましょう。ローカルでエミュレーションできるので簡単にそれぞれのサービスを試すことができます。
https://firebase.google.com/docs/emulator-suite
本記事の内容に関しまして、何かご指摘・ご意見・ご質問等あれば気軽にご連絡ください。
それではパソコンメガネのみなさんも、そうでないみなさんも、よい一日を。
🤓
この記事が気に入ったらサポートをしてみませんか?