Firebase 入門 - Firebase とは

2020/08/06

 

Firebase とは

Firebase は Google が提供する MBaas 型サービスで、Webやスマホアプリ開発で必要なサーバ側(バックエンド)の処理を自前サーバを用意せずに支援します。

似たようなサービスに AWS Amplify があり、Firebase と比較して高機能なため最近 Amplify のシェアも伸びています。

開発レベルであれば基本的に無料

Firebase は利用した分だけ課金される「従量課金性」ですが、条件の範囲に収まっていれば無料で利用できます。

開発レベルや大量の通信やアカウントのアクセスがなければ無料で運用できるかも知れません。

2つのプラン

Spark

Sparkプランは、サービスによって機能制限があります。無料枠を使い切った場合にデータ取得ができなくなります。

Blaze

Blazeプランは、無料枠を使い切ったあとに従量課金制で、大規模開発に対応する全ての機能が利用できます。

認証やデータ取得の回数に応じて課金されるので、料金計算シミュレーターやアラート設定などを利用して料金を抑えるようにしましょう。

Firebase のメリット

Firebase を利用するメリットは、

  • アプリとサーバでデータのリアルタイム同期を実現
  • 自前サーバを用意しなくてもよい
  • 面倒な SNS認証やプッシュ通知が簡単に実現
  • 様々な言語に対応(JavaScript、Swift、Objective-C、Java など)

など、サーバ側の処理を 1から開発することなくアプリ開発に集中できます。

Firebase の主な機能

Firebase の主な機能として、静的コンテンツ(HTML、画像など)を配置したり、データベースのリアルタイム通信、SNS認証やプッシュ通知といった、ネットワーク経由でリアルタイム性のある機能をサポートします。

主な機能は以下の通りです。

Realtime Database(リアルタイムデータベース)

https://firebase.google.com/docs/database?hl=ja

NoSQL のクラウドデータベース(JSON型で保存)で、タイムラグの少ない同期を実現します。

Cloud Firestore

https://firebase.google.com/docs/firestore?hl=ja

リアルタイムデータベースの高機能版で、Google では Firestore を推奨しています。

料金は動作によって異なりますが無料枠があります。(2020/08時点)

無料枠

無料枠 割り当て
保存データ 1 GiB
ドキュメントの読み取り 50,000/日
ドキュメントの書き込み 20,000/日
ドキュメントの削除 20,000/日
ネットワーク(下り) 10 GiB/月

超過分

  無料割り当て超過分の料金
ドキュメントの読み取り ドキュメント 100,000 点あたり $0.06
ドキュメントの書き込み ドキュメント 100,000 点あたり $0.18
ドキュメントの削除 ドキュメント 100,000 点あたり $0.02
保存データ $0.18/GiB/月

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

Cloud Functions

https://cloud.google.com/functions/docs?hl=ja

Cloud functions は軽量なコンピューティングで、サーバ環境を用意せずにアプリからリクエストしたときに即座に応答する仕組みです。

Cloud 上でスタンドアロンの関数を作成することで実行でき、同じようなサービスに「AWS Lambda」があります。

料金は月間 200万回以内は無料で、それ以降は 100万回ごとに $0.40 料金が発生します。(2020/08時点)

https://cloud.google.com/functions/pricing?hl=ja

Cloud Storage

Cloud Storage は、アプリで利用する画像や動画などのコンテンツを保管するクラウドサービスです。

安全性と品質の高いネットワークで Firebase アプリでのファイルのアップロード・ダウンロードができます。

無料枠

リソース 1 か月あたりの無料使用量上限
Standard Storage 5 GB(期間合計)
クラス A オペレーション 5,000
クラス B オペレーション 50,000
ネットワーク(下り) 1 GB、北米から各 GCP 宛て下り(外向き)ネットワーク(オーストラリアと中国を除く)

https://cloud.google.com/storage/pricing?hl=ja

クラス A, B オペレーション

https://cloud.google.com/storage/pricing?hl=ja#operations-pricing

Firebase Authentication

アプリとサーバでデータ送受信や連携するには「ユーザー ID」の識別が必要で、メール、OAuth 、SNS など様々な認証が利用できます。

アプリ側では、FirebaseUI Auth や Firebase Authentication SDK を利用して認証します。

Firebase Hosting

Firebase Hosting は Webアプリや静的・動的コンテンツなどを、ドメインと紐づけて本番環境とホスティングするサービスです。

Web アプリを高速にデプロイしたり、コンテンツを CDN で配信することができ、SSL にも自動的に発行され安全性・信頼性も高くなっています。

Firebase Cloud Messaging

Firebase Cloud Messaging は、デバイス対して 通知メッセージやデータメッセージを送ることができます。 

※従来の Google Cloud Messaging API は非推奨となっています。

Firebase Admin SDK または FCM サーバー プロトコル を利用して送信します。

Firebase の利用

大量のネットワーク通信が発生し、リアルタイム性を求められると自前のサーバで運用するのは困難です。

Google が用意した SDK と Firebase のプロダクションを利用することでサーバ設定の負担が減り、アプリ開発に集中することができます。

AWS Amplify と機能を比較しながら利用するとよいでしょう。

Mac に minikube をインストール
途中から .gitignore に追加する
Larevel 6.x から Laravel 8.x にバージョンアップ
Composer で Allowed memory size (メモリ不足)エラー
Blade でカスタムクラスを利用する
git push git pull にブランチ指定せずに実行する
git pull や git push できなくなったとき
Docker のコンテナからホストOS に接続
Mac で ローカル IP アドレス(ipv4)のみを表示する
ホストOS から Docker の MySQLコンテナに接続
caching_sha2_password のエラー
node-config で環境設定ファイルを利用する
rootパスワードを初期化(再設定)する
Git から clone したときのエラー対処
Mac に MySQL をインストール
Mac に PostgreSQL をインストール
Laravel 環境構築 - Mac ネイティブ編
Firebase 入門 - Firebase とは
Firebase 入門 - CLI インストールとデータベースの設定
AWS 無料枠(t2.micro)で容量とメモリエラー
Cloud9 を起動する -初心者編-
gcloud で GCEインスタンスを起動してみる
AWS CLI と jq でインスタンス一覧を整形して表示
React と Laravel7 のプロジェクトを作成する
Homebrewインストール-2020年版
3直線で囲まれた範囲塗りつぶし
PuLP で線形最適化問題を解く
カスタムのペジネーションを作る
node-sass を使って sass をコンパイルする
Log ファサードでSQLログを分離して書き出す
いちから始める Docker - 複数のコンテナを使う - (2020年)
いちから始める Docker - docker-compose を使う - (2020年)
AWS ECR を使ってみる
Laravel7 でマルチ認証
Mac に AWS Client を設定する
Laravel7 リリース
v-html でHTML表示する
Laravel で Nuxt.js を使ってみる(Docker環境)
Laravel で Vue コンポーネントを使う
いちから始める Docker -コンテナをビルド- (2020年)
いちから始める Docker -起動してみる- (2020年)
Mac で MySQL(8系)
composer で vendor がインストールできない
Eloquent の日付を Carbon で扱う
webpack 4 入門(npm編)
[Mac]容量を減らす
DIコンテナはじめ
freee SDKを Laravel で使ってみる
freee API を使ってみる
Segueを利用しない画面遷移