Firebaseを徹底解説!

記事タイトルとURLをコピーする

G-gen の佐々木です。当記事では Google Cloud のサービスではなく、同じく Google によって提供されている Firebase について解説していきます。

Built with Firebase

Firebase とは

Firebase は Firebase, Inc. が 2011 年に開発し、2014 年に Google が買収した モバイル・Web アプリケーション開発プラットフォームです。
2022 年 9 月 現在、Google Cloud のサービスには含まれていませんが、一部のプロダクトや請求が Google Cloud と統合されています。

Firebase は BaaS ( Backend as a Service ) もしくは MBaaS (Mobile Backend as a Service) と呼ばれるサービス形態となっており、アプリケーションが必要とするサーバ機能が一括して提供されます。
BaaS によりユーザーによる運用保守が不要なバックエンド環境が提供され、ユーザーはフロントエンドの開発に専念することができます。

Firebase では、Web ページのホスティング、アプリケーションの認証、NoSQL データベースなどの基本的な機能から、アプリのテストやリリース、モニタリングをサポートする機能、そして Google Analytics や Google Cloud サービス(Cloud Storage、Cloud Functionsなど)との連携が提供されます。

Firebase と Google Cloud の共通点・相違点

共通点

プロダクト

Firebase と Google Cloud は、Cloud FirestoreCloud FunctionsCloud Storage の 3 つが共有されたプロダクトとして提供されています。
これらのプロダクトは、Firebase と Google Cloud のどちらのコンソールからでも管理することができ、サーバー SDK ( Google Cloud ) とクライアント SDK (Firebase) の両方からアクセスすることができます。

プロジェクト

Firebase のプロダクトを利用するためには、作成するリソースの管理単位である Firebase プロジェクト を作成する必要があります。
ここで作成するプロジェクトは 内部的に Google Cloud のプロジェクトと同じもの となっており、既存の Google Cloud プロジェクトを Firebase プロジェクトとして利用することも、その逆も可能です。

料金の請求

料金はプロジェクト単位で請求されます。
Firebase でも Google Cloud 同様、請求先アカウントをプロジェクトに紐付けます。
請求先アカウントの詳細については、以下の記事で解説しています。

blog.g-gen.co.jp

アクセス制御

Google Cloud 同様、プロジェクトレベルのロールベースアクセス制御が可能です。
Firebase のコンソールからはプロジェクトの オーナー編集者閲覧者 の基本ロールと、Firebase の事前定義ロール を設定できます。

利用規約

2022年 9 月現在、以下の Firebase プロダクトは、Google Cloud の利用規約 のもとで提供されます。

  • Firebase Authentication
  • Cloud Storage for Firebase
  • Cloud Functions for Firebase
  • Cloud Firestore
  • Firebase Test Lab

今後、より多くの Firebase プロダクトが Google Cloud 利用規約に移行していくようです。

ユーザーアカウント

Firebase と Google Cloud に対しては、Google アカウントを使用してアクセスすることが可能です。

相違点

Firebase は Google のモバイル開発プラットフォームであり、クライアントサイドのアプリケーションの開発者によって利用されることが想定されています。
Firebase では、新規アプリの構築と既存アプリへの機能追加、ユーザーの拡大に焦点が当てられます。

Google Cloud はクラウドコンピューティングサービスのスイートであり、バックエンド、サーバーサイドの開発者による利用が想定されています。
Google Cloud は、Google のインフラストラクチャ(コンピューティング、ストレージ、ネットワーキング、データ分析、機械学習)を活用した開発に利用されます。

Firebase プロダクトの概要

Firebase のプロダクトは、大きく 3 つのカテゴリに分けられます。
当記事では、各プロダクトを概要レベルで紹介していきます。

Build プロダクト

Build プロダクト は、主にアプリに必要なマネージドな(ユーザーによる管理が不要な)インフラストラクチャを提供するプロダクトです。

プロダクト 説明
Cloud Firestore Firebase の最新のデータベースで、スケーラブルな NoSQL データベース です。
データはドキュメントとして保存され、柔軟な階層型データ構造をもつドキュメントを高機能なクエリで扱うことができます。
すべてのクライアントアプリ間の リアルタイムなデータ同期 が行われます。
デバイスがオフラインのときは、データキャッシュを用いた オフラインのデータ読み書き を実行できます。デバイスがオンラインに戻るとローカルの変更がすべて同期されます。
データはリージョン内(複数ゾーン)、もしくはマルチリージョンでレプリケーションされます。
Realtime Database Firebase に従来からあるデータベースで、Cloud Firestore と同じ NoSQL データベース です。
データは JSON 形式で保存され、Cloud Firestore と比較すると複雑な階層型データの取り扱いには向きません。
Cloud Firestore 同様、リアルタイムなデータ同期オフラインの読み書き が提供されています。
Cloud Firestore と比較すると、リアルタイム同期におけるレイテンシの低さ が特長となっています。より詳細な比較についてはこちらの ドキュメント もご一読ください。
Firebase Extensions 2022 年 9 月現在 ベータリリースのプロダクトです。
パッケージ化されている既存のソリューションを自分のアプリの拡張機能として使用することができます。
ソリューションには Google が提供する 公式 Firebase Extension と、パブリッシャーから提供される 早期アクセス パートナー拡張機能 があります。
拡張機能は Cloud Functions 関数として実装されており、Firebase 上のイベントや HTTPリクエスト 、Cloud Scheduler イベントなどのトリガーがあらかじめ定義されています。
App Check 承認されていないクライアントがバックエンドリソースにアクセスするのを防ぐことができます。
保護対象のバックエンドリソースとしては Cloud Firestore 、Realtime Database 、Cloud Functions 、Cloud Storage がサポートされています。
認証プロバイダとして Apple プラットフォームの DeviceCheck または App Attest 、Android の Play Integrity または SafetyNet 、Web アプリの reCAPTCHA v3 または reCAPTCHA Enterprise が使用できるほか、カスタムプロバイダとしてその他サードパーティや独自のプロバイダの利用も可能です。
Cloud Functions Firebase 上のアプリの動作拡張として、Cloud Functions 関数を Firebase アプリのサーバーサイドのロジックとして使用できます。
関数は JavaScript 、TypeScript で実装します。
呼び出し元がクライアントサイドの Firebase SDK になりますが、基本的には Google Cloud の Cloud Functions と同じ仕様となっています。
Authentication OAuth 2.0 や OpenID Connect などの業界標準に準拠したユーザー認証機能を Firebase アプリに実装することができます。
また、Firebase Authentication with Identity Platform にアップグレードすることで、多要素認証やユーザーアクティビティのモニタリング、監査ロギング、その他様々な追加機能が利用できます。
Hosting 静的コンテンツと動的コンテンツの両方を Firebase のフルマネージド環境にホスティングできます。
Cloud Functions と組み合わせることで、Firebase 上でマイクロサービスを構築することができます。
SSD ストレージとグローバル CDN が基盤となっており、コンテンツを高速で配信することができるほか、組み込みの SSL が提供されます。
Cloud Storage Cloud Storage 用の Firebase SDK により、クライアントアプリケーションから Google Cloud Storage バケットに対して直接ファイルをアップロード、ダウンロードできます。
デバイスのネットワーク接続状況が悪いときでも、アップロードを中断、再開できます。
Firebase ML 2022 年 9 月現在 ベータリリースのプロダクトです。
パッケージ化された機械学習モデルをクラウド、もしくはクライアントアプリに実装することができます。
カスタムモデル APIAutoML Vision Edge はクライアントデバイス上で ML モデルによる推論を実行できます( オンデバイスモデル )。オンデバイスモデルではネットワーク接続が必要ないため、高速で推論を行うことができます。
テキスト認識、画像ラベリング、ランドマーク認識 API はクラウド上で ML モデルによる推論が実行されます。オンデバイスモデルと比較してクラウドの豊富な計算資源を利用できるため、精度の高い推論を行うことができます。
Firebase Local Emulator Suite 2022 年 9 月現在 ベータリリースのプロダクトです。
ローカルで Firebase アプリを開発するために、Firebase サービスの動作を正確に再現するためのツールセット(エミュレータ)が提供されます。

Release & Monitor プロダクト

Release & Monitor プロダクト は、主にアプリのテストやリリース、リリース後の品質改善に役立つツールが提供されます。

プロダクト 説明
Firebase Crashlytics Apple 、Android 、Flutter 、Unity で動作するリアルタイムのクラッシュレポートツールを利用できます。
アプリのクラッシュに対して重要度付けをしてグループ化し、トラブルシューティングしやすくできるほか、重要度の大きいクラッシュをリアルタイムに通知できます。
また、Google Analytics と統合することで、特定のクラッシュデータを細かく分析したり、クラッシュ前のイベントを追跡したりできます。
Firebase Performance Monitoring Performance Monitoring SDK を使用してアプリからパフォーマンスデータを収集し、コンソール上で Firebase アプリのパフォーマンスの問題をリアルタイムに分析できます。
Firebase Test Lab Google のデータセンターでホストされている iOS 、Android デバイス上で、Firebase アプリをテストすることができます。
Firebase App Distribution 開発途中の Firebase アプリを効率的にテスターに配布することができるプラットフォームが提供されます。
テスターをグループで管理し、アプリの配布や通知を行うことができます。
Google Analytics や Firebase Crashlytics と併用することで、配布したアプリのログを収集、分析することも可能です。

Engage プロダクト

Engage プロダクト は、主にユーザーエクスペリエンスの最適化に役立つツールが提供されます。

プロダクト 説明
Remote Config ユーザーがアプリをアップデートしなくても、サーバー側で変更したパラメータをすべてのユーザーのアプリに対してオーバーライドすることで、アプリの動作や外観を変更することができます。
パーセンテージロールアウト 機能を使用し、アプリのアップデートを一定の割合のユーザーに段階的に配信することができます。
Google Analytics Google Analytics の機能を Firebase に統合し、Firebase SDK で定義できる最大 500 種類のイベントに関してレポートを生成することができます。
デバイスデータ、カスタムイベント、ユーザープロパティなどの情報をもとにカスタムのユーザーリストを定義し、新機能や通知メッセージのターゲットとして Firebase の他の機能からリストを使用することができます。
Firebase A/B Testing 2022 年 9 月現在 ベータリリースのプロダクトです。
Google オプティマイズ の機能を利用することで、小規模な範囲のユーザーに A/B テストを実施してアプリの変更をテストしつつ、収益などの主要な指標への影響を確認することができます。
Cloud Massaging と連携して様々なマーケティングメッセージのテストをしたり、Remote Config と連携して様々なパラメータのアプリをテストすることで、アプリのどの動作や外観が最も高い効果を発揮できるのかを確認したりできます。
Cloud Messaging 特定の端末、端末のグループ、トピックのいずれかに対して、通知メッセージを無料で確実に送信することができます。
エンドユーザーのデバイスに通知を表示させる 通知メッセージ と、クライアントアプリが処理するためのメッセージを送信する データメッセージ の 2 種類のメッセージを送信することができます。
Firebase Dynamic Links 異なるプラットフォーム上で同じように動作する ディープリンク を実装することができます。
また Google Analytics による、リンクに関するイベントのトラッキングの情報を、 Firebase コンソール上で分析できます。
Firebase In-App Messaging 2022 年 9 月現在 ベータリリースのプロダクトです。
ターゲットのアプリ画面に対して、バナーやポップアップなどの形式でメッセージを表示することができます。
表示するメッセージは Firebase コンソール上(GUI で)カスタマイズすることができます。

料金

Firebase では 2 種類の料金プランが提供されています。
以前は Flame プランという定額制のプランもありましたが、現在は廃止されており、既存の Flame プランのプロジェクトはすべて Spark プランにダウングレードされています。

プラン 説明
Spark プラン 無料のプランで、月ごとのリソース使用量制限があります。
リソース使用量の制限を超過すると、アプリが利用不可になってしまいます。
検証環境向けのプラン。
Blaze プラン 従量課金制のプランで、プロジェクトに対して請求先アカウントの紐付けが必須となります。
プロダクトによっては無料枠あります。
Google Cloud のサービスを利用してアプリの機能を拡張することができます。
本番環境向けのプラン。

プロダクトごとの使用量制限や従量課金については ドキュメント をご一読ください。

Google Cloud 側でプロジェクトに対して請求先アカウントを紐付けた場合、Firebase のプランは自動的に Blaze プランにアップグレードされます。
逆に、Google Cloud 側でプロジェクトと請求先アカウントの紐付けを解除した場合、Firebase のプランが自動的に Spark プランにダウングレードされます。

プランをダウングレードした際、Blaze プランでのみアクセスできるプロダクトを使っていたり、Spark プランの無料利用制限を超えていた場合、再度 Blaze プランにアップグレードするまで Firebase にデプロイしたアプリが使用できなくなったり、有料のサービスが利用できなくなったりします。

権限管理

プロジェクト内の各 Firebase プロダクトに対するアクセス制御は、Google Cloud 同様に Google アカウントGoogle グループサービスアカウント に対して ロール を割り当てることで行います。

ロールの種類 説明
基本ロール Google Cloud を含めたすべてのプロダクトに対するアクセス権を設定するロールです。
過剰な権限を与えてしまうことになるため、基本的には利用は推奨されていません。
以下の 3 種類の基本ロールがあります。
・オーナー
・編集者
・閲覧者
事前定義ロール 基本ロールよりも詳細にアクセス権を制御できるロールです。
Firebase における事前定義ロールは以下の 3 つに分類されます。
・Firebase レベルのロール( Firebase 全体に対するアクセス権を設定 )
・プロダクトカテゴリのロール(特定カテゴリの複数の Firebase プロダクトに対するアクセス権を設定 )
・プロダクトレベルのロール( 特定の Firebase プロダクトに対するアクセス権を設定 )
カスタムロール ユーザーが構成した独自の権限セットを含む、カスタマイズされたロールです。
最小権限の原則 に従い、細かなアクセス制御を行うことが推奨されています。

佐々木 駿太 (記事一覧)

G-gen最北端、北海道在住のクラウドソリューション部エンジニア

2022年6月にG-genにジョイン。Google Cloud Partner Top Engineer 2024に選出。好きなGoogle CloudプロダクトはCloud Run。

趣味はコーヒー、小説(SF、ミステリ)、カラオケなど。