Firebase

 

FROM https://www.topgate.co.jp/firebase01-what-is-firebase

モバイルアプリケーションをいち早くリリースするには、バックエンドで動くサービスの構築がネックになります。 DB サーバを用意したり、 DB にアクセスするための API サーバの構築や認証など、どうしても作業が多くなってしまい、コストもかかってしまいます。
リリースしてもサーバの管理は必要になり、利用者が増えればスケーリングなどの対応が必要になってきます。今回はこのような問題を解決するための GCP の
mobile Backend as a Service(mBaaS)「 Firebase 」を紹介します。

この記事の目的

  • Firebase とは何かを理解しよう。
  • Firebase の使いどころや特徴を学ぼう。

Firebase とは

Firebase は Google が提供しているモバイルおよび Web アプリケーションのバックエンドサービスです。クラウドサービスの形態では BaaS に位置付けされます。 Firebase を使うことで、開発者はアプリケーションの開発に専念でき、バックエンドで動くサービスを作成する必要も管理する必要もありません。
サービスの早期リリースという要件が求められたときに、サーバレスアーキテクチャが注目され、 BaaS というクラウドサービスの形態が登場しました。サーバサイドの開発費を抑え、かつ工数もかからない。サービスの利用者が増えてもサーバの増築を意識しなくて良いなどの利点から、 Web サービスほどサーバを必要としないモバイル向けのサービスの BaaS に注目され、様々な BaaS が登場しました。
Firebase もその中の一つです。 Firebase はもともとは Google とは独立したサービスでしたが、2014年に Google に買収され、 GCP の仲間入りをしました。現在は GCP の様々なサービスと連携して使うことができるようになっています。

Firebase の機能

BaaS には、独自のビジネスロジックを組み込むことはできません。そのため、多くの BaaS には、データベース機能以外にも、 SNS 連携や Android 、 iOS の SDK などが提供されています。煩わしい認証は SDK が BaaS と連携してくれて、クライアントは数行のコードを書くだけで実現することができます。もちろん Firebase にもこういった機能がサポートされており、 Firebase では以下のような機能が提供されています。

Firebase の機能

Realtime Database

Firebase に元から含まれているオブジェクト型のデータベースです。リアルタイムでクライアント全体の状態を同期させることができ、オフラインで動作するときはデータをキャッシュしてオンラインになった時に自動的にデータを同期します。

Realtime Database

Cloud Firestore

Realtime Database の性能をさらに向上させた、新しい主力のデータベースです。 Realtime Database より高速でスケールアウトにも対応しています。こちらもオブジェクト型のデータベースとなっています。現在ベータ版となっていますが、 Google は Realtime Database より Cloud Firestore を推奨しているため、今後は Realtime Database に取って代わるデータベースになるように思われます。

Cloud Firestore

Cloud Storage for Firebase

写真や動画などバイナリーデータを保存します。保存先は Cloud Storage となっており、 Firebase と Google Cloud の両方からアクセスできます。また、スケールアウト機能も兼ね備えており、急激なアプリケーションの拡大にも対応しています。

Cloud Storage for Firebase

Firebase Authentication

Firebase Authentication は、 Google のフェデレーション認証で、 Google 以外にも Facebook 、 GitHub 、 Twitter などのサードパーティの認証情報を使用して、クライアントアプリケーションのログインを行うことができます。また、フェデレーション ID 以外にもパスワード認証や電話番号認証にも対応しています。

Firebase Authentication

Firebase Cloud Messaging(FCM)

Firebase Cloud Messaging を使うことで、様々なプラットホームで動いているアプリケーションに対してメッセージを送ることができます。今までは Google Cloud Message を使ってサーバからのプッシュ通知を行っていましたが、これからは、Firebase Cloud Messaging を使うことが推奨されています。

Firebase Cloud Messaging

Google Cloud Functions for Firebase

Cloud Functions for Firebase を使うことで、イベントドリブンなアプリケーションを作成することができます。 SMS メッセージの送信などの処理のような外部サービス連携などを行うことが可能になります。また、クライアントアプリケーションに実装させるには重たすぎるような処理を Cloud Functions for Firebase に委ねることができます。

Google Cloud Functions for Firebase

Firebase Hosting

Firebase Hosting はスタティックな Web ページを公開することができます。近年では HTML 、 CSS 、 Javascript を組み合わせてアプリケーションのような Web ページを実現することができるようになりました。こういった Web ページも Firebase Hosting を使って公開することもできます。
また、 Web ページでは、エッジキャッシュの機能を利用することができので、世界各地に分散している Google のエッジ接続拠点を使って高速にユーザに配信することができます。

Firebase Hosting

その他

その他に、 Test Lab for Android や Performance Monitoring などの機能があります。

Firebase SDK

これらの機能を簡単に使える SDK が提供されています。サポートされているプラットフォームには、 Android 、 iOS 、 Web 、 Unity 、 C++ 、などがあります。最近話題の、 Google のモバイル開発向けクロスプラットフォーム Flutter もサポートしています。また、一部の SDK はオープンソースで公開されており、 GitHub でソースコードを確認することができます。
これらの SDK は一部の IDE からも利用することができ、 Android Studio ではリファレンスを開かなくても、そのまま使うことができるサンプルコードが表示されるという便利な機能があります。主要な SDK 以外にも以下のような SDK やツールが提供されています。

  • Firebase SDK
    • Realtime Database, Cloud Firestore, Firebase Hosting など Firebase の主要な機能をサポートします。
    • Javascript, Android, iOS, Unity などのプラットホームをサポートしている
  • Firebase UI
    • Firebase SDK 上に UI の構築をサポートする。ログイン UI の構築などが提供されている。
  • Firebase Admin SDK
    • Realtime Database の完全な読み書きや、エンドユーザーのアクセス権限などのような管理機能が提供されています。
  • ML Kit
    • Firebase から、テキスト抽出や、顔認識、バーコード読み取りなどの画像認識機能を実装することができます。

Android Studio

Firebase の使い所

Firebase にたくさんの機能があることはご理解いただけたと思います。では、どんなときに Firebase を使うのかを考えてみましょう。
まず、プラットホームが Android 、 iOS を対象としたモバイル向けのゲームアプリケーションを開発することになったとします。そして、ゲームにはチャット機能、お知らせ機能、 SNS アカウントによるログインを想定しています。このような場合は、チャット機能に FireStore 、お知らせ機能に FCM 、 SNS アカウントのログインに Firebase Authentication が使え、バックエンドサービスを構築する必要がありません。
バックエンドサービスの代わりに Firebase を使うことで、すばやくアプリケーションをリリースすることができ、管理も不要です。 Firebase にはたくさんの機能があるので、例えばリリース後に動画のストリーミング再生の機能が必要なっても今度は Cloud Storage For Firebase を使って実現することができます。
Firebase はサーバレスアーキテクチャを導入しようとしたときに最適なサービスとなっており、特にモバイル向けのサービスやフロントエンドな Web アプリケーションの開発には有効な手段となっています。






FROM https://medium.com/ho-japan/%E5%89%8D%E7%AB%AF%E4%BA%BA%E7%9A%84%E6%95%91%E6%98%9Ffirebase%E7%9A%84%E7%94%A8%E9%80%94%E8%88%87%E5%AF%A6%E4%BD%9Ctodolist-c7af49fe3104

使用Firebase,可以幫助開發者省下很多管理與實作基礎架構的時間,以上的Project應用到了安全身份認證(Authentication)、即時資料庫(Realtime Database)以及網頁託管服務(Hosting),我覺得這些服務帶給我們最大的優點是:

  • 快速實作支援各平台(Github, Google, Facebook, …)的登入身份認證系統
  • 能夠提供使用者即時同步的數據體驗,且不需要伺服器架構
  • 即使離線後,保有Local Cache幫助我們優化體驗
  • 資料庫擁有安全的存取機制,而且客製化的方法簡單
  • 部署簡單且能夠快速傳遞內容給使用者





留言

熱門文章