サーバーレスなモバイルアプリ開発を実現するFirebaseの概要と主要機能
個人でアプリ開発をすると、バックエンドの実装ってかなり面倒です。
ちょっと手の込んだアプリを作りたかったら、ユーザ認証 や クラウドデータベース など、サーバサイドの実装が不可欠になってきます。
私のような趣味で開発してる人間からすると、それを全部自分で実装するのは時間がかかるし学習コストも大きいし、何よりアプリが永遠に完成しないという事態に陥る可能性があります。
「クライアントサイドの実装だけやりたい!」
「とりあえずリリースしないとモチベーションが上がらない!!」
私は自分に正直になり、面倒なサーバサイドの機能は全て Firebase に任せることにしました。
Firebaseは、モバイルアプリのバックエンド機能を提供するGoogleのクラウドサービスです。
多機能すぎる上に、無料枠も充実しているため、個人開発者の救世主です。
本記事では、Firebaseの概要と、モバイル開発に役立つ Firebase の主要機能についてまとめています。
目次
Firebase の概要と料金体系
Firebase は、mBaaS (mobile Backend as a Service) と呼ばれるサービスの 1 つです。
mBaaS は、モバイルアプリで汎用的に使われるサーバーサイドの機能を提供してくれるクラウドサービスです。
Firebase の料金体系は、3 つのプラン(Spark、Flame、Blaze)があります。
Spark (無料)プランでもほぼすべての機能を利用できますが、月 or 日ごとに利用可能なデータ量や処理量に制限があります(Flame プランも同様)。
Blaze が最も制限が少ないプランとなっていますが、たくさん利用するとそれだけ課金されていきます。
私は個人で開発をするので、Spark プランで十分かなと思います。
スケールアップが必要になれば、その時にプランを変更する形でいきましょう。
Firebase の主要機能(主観)
Firebase のすべての機能は 公式サイト に書いています。
見ていただければわかるように、色々な機能がありますね。
全部を使いこなそうとすると大変そうです。
個人的には、モバイル開発をするにあたっては、以下の機能があれば良いかなと感じます。
Firebase Authentication
Firebase Authentication は、ユーザ認証の機能を提供します。
メールアドレス・パスワードによる認証に加えて、フェデレーションIDプロバイダ(Googleアカウント、Twitter、Facebook)による認証が可能です。
また、ここで取得した認証情報を元に、データベース (Cloud Firestore) などへのアクセス制御を行なうことができます。
Cloud Firestore
NoSQL のクラウドデータベースです。
これまではベータ版でしたが、2019年2月頃から正式提供されました。
リアルタイム同期や、オフラインでの動作にも対応しています。
(オフライン時は、キャッシュされた Firestore のコピーデータにアクセスでき、書き込みが発生した際には情報がキューに保持され、オンライン復帰時に同期されるようです)
なお、類似機能として、Firebase Realtime Database がありますが、次世代版である Cloud Firestore の利用が推奨されています。
Cloud Firestore は RDB ではなく NoSQL です。どのように DB を設計するか、リレーションをどう持たせるかに関してなど、注意を払う必要がありそうです。この点について、参考リンクを以下に貼っておきます。
まず、Cloud Firestore を使う上で必要となる用語や、セキュリティルールについては、以下の記事が参考になりそうでした。
Firestoreでなにか作るときに覚えておいたほうがよさそうなこと
・ドキュメント、コレクション、サブコレクション
・アクセスコントロールはドキュメント単位
データの持ち方、サブコレクションを使った設計などについて。
Cloud FirestoreのSubCollectionとQueryっていつ使うの問題
その他、Firestore の DB 設計に役立つリンクをまとめてくれている記事。
Cloud Storage for Firebase
オブジェクトストレージサービスです。
写真や動画などの保管場所として使用できます。
また、Firebase Authentication が統合されており、アクセス制御が可能なのでセキュリティ面にも配慮されています。
Cloud Functions for Firebase
イベント駆動型のサーバーレスコンピューティングプラットフォームです。
JavaScript か TypeScript で記述された関数を定義し、サーバ上で実行できます。
関数の実行は、クライアントからの HTTP リクエストや、何らかのイベント(Cloud Storage にデータがアップロードされた、など)がトリガーとなる、イベント駆動です。
なお、無料プラン(Spark)だと外部 API が実行できなかったり、その他 Firebase 機能との連携ができなかったりするようです。
関連書籍
Firebase と Flutter によるモバイルアプリ開発に関する書籍です。
Flutter は、Google が開発したクロスプラットフォームフレームワークで、Dart 言語を使って iOS と Android の両方で動作するアプリを開発することができます。
まとめ
Firebase の主要機能をまとめました。
Firebase のメリットばかりに目を奪われていましたが、いろいろ調べているとデメリットもあるようです。
とはいえ個人で行うような小規模開発であれば、作業コストの削減によるメリットが大きいですね。
今後は、上で挙げた主要機能の中から、特に「Firebase Authentication」と「Cloud Firestore」を使用して、何らかのアプリ開発をしていきたいと考えています( ^ω^ )