🐕

Firebase ってなに?【前提知識】

2024/04/24に公開

firebaseとは?

  • web・モバイルアプリのバックエンド側での主たる機能を提供してくれるクラウドサービス
  • 例えば、SNS利用のアカウント作成やチャット機能や認証機能(バックエンド側)を提供してくれる
  • Firebase はアプリ開発で便利な15以上のサービス・機能の総称
  • 開発者は、提供されているサービスの中から必要なバックエンド機能を提供するサービスを使用する

主な機能

Firebase Realtime Database

Firebase Realtime Databaseとは、クラウドホスト型のNoSQLデータベースであり、
JSON形式でまるまるデータを保存してリアルタイムに同期できる。
また、オフラインでも動作するため、ネットワーク接続がなくてもデータを更新する。
Realtime Databaseの料金は、保存、ダウンロードする容量ごとであり、通信の回数や書き込み回数は料金に影響しない。なので、更新頻度が高く小さなデータを保存することに適正がある。

リアルタイムに同期?

データが変更されるたびに接続されているあらゆるデバイスがその更新を数ミリ秒以内に受信される。
(データベースの更新がクライアント側へ通知されるという認識)

オフラインでも動作?

DBへの接続がオフラインになってもアプリ自体は動作。
各デバイスの接続が復帰した際にオフラインの間に発生したデータの変更を含めてRealtime Database側に更新を同期、競合をマージする仕組みとなっている。
電波状況が不安定なモバイル端末や、回線が不安定な状況などでの使用を想定される場合と相性がよい。

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

Cloud Firestore

Cloud Firestoreとは、モバイルやWebアプリのデータの保存、同期、照会が
簡単にできるNoSQLデータベースとして使えるツール。

Firebase Realtime Databaseとの違いは?

Firebase Realtime Databaseと機能としては同じものに見えるが、違いは下記に公式の記載がある。
https://firebase.google.com/docs/database/rtdb-vs-firestore?hl=ja

こちらのサイト様によりわかりやすく違いがまとめられている。
これを読む限りでは基本的にCloud Firestoreの方を使うべきように思える。
https://techblog.kayac.com/rtdb-vs-firestore

Firebase Hosting

ウェブサイトやウェブアプリケーションを簡単にデプロイできるツール。
開発者はWebサーバーの設定や管理に時間を費やすことなく、素早くアプリを公開できる。
また、Firebaseの他の機能と統合されており、データベースや認証機能なども連携可能。
ウェブアプリやブログ、SPAやランディングページ等の公開で活用される。

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

Firebase Authentication

ウェブアプリに簡単に認証機能を追加することが可能になるツール。
独自に認証機能を追加する必要がなくなる。
下記パターンの認証機能が追加することができる。

  1. Google、Apple、Twitter、Facebook、GitHubのアカウントを利用した認証
  2. メールアドレスとパスワードでの認証
  3. 電話認証
  4. カスタム認証システムの統合(アプリ側で利用していた認証システムを、Firebase Authentication SDKに接続して利用する)
  5. 一時的な匿名アカウント認証(その後一時アカウント情報を利用して、本アカウントとして登録しなおしてもらうことも可能)

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

Firebase Analystics

アプリのユーザー行動をデータ化し、分析するための機能を備えたツール。
アプリ内でのユーザーの行動をトラッキングし、属性別のユーザーの行動を分析できる。

Firebase Cloud Messaging

iOS、Android、Webアプリで無料でメッセージや通知の送受信ができる機能
たとえば、プッシュ通知のような機能を実現するのに役立つサービスの模様。
高速で信頼性が高く、大量のユーザーに対してもスケーラブルな通知を実現が可能。

https://firebase.google.com/docs/cloud-messaging?hl=ja

Cloud Functions for Firebase

AWSをご存知の方向けに一言でいえば、AWS lambda。
サーバ不要でバックエンドを開発できるサービスのこと。
HTTPSリクエストをトリガーに実行するプログラムをサーバレスで実行させられるサービス。
トリガーされたイベントに応じてバックエンド側のコードを実行する。

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

サーバレス?

ここでいうサーバレスとは、サーバーの構築や保守をすることなく、
サーバー上でプログラムを実行できる仕組みのことであり、
決してサーバなしで動かすということではない。

Cloud Storage for Firebase

ユーザーが作成したコンテンツ(写真や動画など)を保存・提供できる機能
ストレージは高速かつ安全で、多くのユーザーが同時にアクセスしても問題なく利用できる
クライアントからファイルのアップロード・ダウンロードする際に活用される機能のイメージ。
実際の保存先は Google Cloud Storage となっており、 Firebase と Google Cloud の両方からアクセスが可能。オートスケールやリジューム機能にも対応。

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

料金プラン

  • Firebase には大きく無料プランの『Spark』と有料プランの『Blaze』が存在する
  • そこから更に各機能ごとに細かな料金設定が記載されている
  • Blaze プランは利用した分だけ費用がかかる従量課金制という仕組みになっている
    https://firebase.google.com/pricing?hl=ja

終わりに

ここまでいろいろ調べた事で、Firebaseがどういうものなのかは理解できたが、
実際に利用する際のイメージがつかめていないため
次は実践編として実際に活用してアプリを作ってみたい。

参考

https://n-v-l.co/blog/what-is-firebase

https://cloud-ace.jp/column/detail175/

Firebase Realtime Database

https://n-v-l.co/blog/what-is-firebase#index_k5YS9c74
https://qiita.com/seiya1121/items/1436fde30752843daa47
https://codezine.jp/article/detail/18308

Cloud Firestore

https://n-v-l.co/blog/what-is-firebase#index_5vW8rdzj

Firebase Hosting

https://n-v-l.co/blog/what-is-firebase#index_0ENC9zgM

Firebase Authentication

https://codezine.jp/article/detail/18203
https://giginc.co.jp/blog/giglab/Firebase_Authentication

Firebase Cloud Messaging

https://n-v-l.co/blog/what-is-firebase#index_5aCXvyA3
https://gihyo.jp/dev/serial/01/firebase/0009

Cloud Functions for Firebase

https://n-v-l.co/blog/what-is-firebase#index_YojIe2aL
https://zenn.dev/tentel/books/a96e4a64d3a672911f25/viewer/dfb375

Cloud Storage for Firebase

https://www.topgate.co.jp/blog/google-service/26796#cloud_storage_for_firebase_とは何か?

Discussion