こんにちは!Flutterエンジニアになりたいと日々奮闘しているバックエンドエンジニアです!
皆さんは知ってますか?私たちバックエンドエンジニアの仕事を奪う存在を…その名は
🔥Firebase
一言で言うならば、「素晴らしい」の一言に尽きます。Flutterで開発をしていくとFirebaseという単語は必ず聞きます。
今後、Firebaseの機能を使ったアプリ開発をしていく予定ですので、一度ぐらいは説明(自分の整理)をしておいたほうがいいかなと!
Googleのサービスということもあり、公式ページで細かく説明されています。ただ、如何せん細かすぎるので、表面的に理解したい場合には少しハードルが高いなと感じます。
そこで、今回は「Firebase」を開発目線で説明していきます。深く知りたい!って方は回れ右でGoogle公式サイトを見に行くことをお勧めします。
ここは触りだけでも知りたい人にちょうどいいように説明してみます!
概要
Firebaseとは
FirebaseとはGoogle が提供しているWebアプリケーションのバックエンドサービスです。所謂、MBaas(mobile backend as a Service)と言われるもので、バックエンドのAPIを作成する必要ありません。要はサーバーレスで開発ができるということです。
(ここでバックエンドエンジニアの仕事はかなり減りますね!)
スマートフォン向けのサービスでは利用するユーザー数に応じてバックエンドとなるサーバー(DBサーバーやファイルサーバなど)を増築する必要があったりしますが、その必要性がないということです。何故なら、
「🔥Firebase」だからです。
もちろん、他にもBaaSのサービスはありますが、Flutter×Firebaseでアプリケーションを作っていくこと主流になると思います。
余談ですが、BaaSてBlockchain as a Serviceのことも言うのね。個人的にはBackend as a Serviceのがしっくり来ますね。
Firebaseで出来ること
Firebaseはとにかく色んなことができます。色々出来すぎます。
Flutter以外にも様々な言語をサポートしているので、既存のソースを活用して切り替えることも可能です。JavaとかPythonなどにも対応。
例えば、Web版のアプリはJavaで、スマホアプリはFlutterでという使い方も可能です。
FirebaseはBaaSということで、いろいろとサービスがあります。
説明はしきれないので各サービスと概要をまとめてみました!
分類すると「開発の効率化」「品質の向上」「事業拡大」の三つに分かれていると思います。
分野ごとに整理してみたので見てみてね。
開発の効率化 ->
名称 | 費用 | 一言でいうと | 説明 |
---|---|---|---|
Cloud Firestore | 従量課金 | NoSQLデータベース(最新版) | Cloud上のNoSQL データベース、データの保存、同期が容易に行えます。 オフラインの場合は、端末にキャッシュしたデータを利用します。 形式はJSON |
Cloud Functions | 従量課金 | 独自の機能をJavaScript/TypeScriptベースで作成 | サーバーレス フレームワークで、Firebase の機能と HTTPS リクエストによってトリガーされたイベントに応じて、 バックエンド コードを自動的に実行できます。 独自の webhook を作成して、サードパーティのサービスと統合することもできます。 |
Hosting | 従量課金 | 開発環境用のレンタルサーバー | デベロッパー向けの、本番環境レベルのウェブ コンテンツ ホスティングです。 1 つのコマンドですばやくウェブアプリをデプロイすることができ、 静的コンテンツと動的コンテンツの両方を グローバル CDN(コンテンツ配信ネットワーク)に配信できます。 |
Realtime Database | 従量課金 | NoSQLデータベース | Cloud上のNoSQL データベース、データの保存、同期が容易に行えます。 オフラインの場合は、端末にキャッシュしたデータを利用します。 形式はJSON |
Firebase ML BETA | 従量課金 | 機械学習の利用 | Google の機械学習の機能を Android アプリや iOS アプリとして提供するモバイル SDK。 機械学習の経験の有無を問わず、わずか数行のコードで実装できます。 |
Authentication | 1 万/月まで (超えると1認証×$0.01) | ユーザー認証機能 | パスワード、電話番号、SNS(Google、Facebook、Twitter)などを 使用した認証を行うことができます。 |
Cloud Storage | 従量課金 | ストレージサーバー | 写真や動画など、ユーザーが作成したコンテンツを保管、提供する必要のある アプリデベロッパー向けに構築されています。 ペタバイトの容量保管できるそうなので、不足は絶対しないでしょう。 |
上記の中でも最初にピックアップしたいは「Cloud Firestore」です。要はDB(データベース)ですね。DBはNoSQLで構築されており、かつオートスケールしてくれるので、助かります。また、セキュリティ的にもGoogle独自のセキュリティ施策が行われているようで自身で構築するよりも遥かに安全ではないでしょうか。
「Cloud Storage」もいい機能です。アプリ開発で欠かせないのはファイルの管理です。写真や文書データを格納しておくためのストレージを提供します。Google フォトなどで採用しているテクノロジーを活用しているのも強みです。
品質の向上 ->
名称 | 費用 | 一言でいうと | 説明 |
---|---|---|---|
Crashlytics | 無料 | クラッシュ レポートツール | クラッシュをインテリジェントにグループ化し、 クラッシュにつながった状況をあぶり出すことによって、 トラブルシューティングの時間を節約できます。 |
Test Lab | 10 件/日 (超えると$1/デバイス/時間) | 自動テスト機能 | Google データセンターで管理している様々な端末に対して、 自動テストをします。 端末差異を検出できます。 |
App Distribution BETA | 無料 | テスト端末へのアプリ配布ツール | アプリをテスターのデバイスに迅速に配布できます。 AooStore/GooglePlayを介さずアプリを配布できます。 |
Performance Monitoring | 無料 | パフォーマンスの問題分析 | iOS アプリ、Android アプリ、ウェブアプリの パフォーマンス特性を把握できます。 |
「Test Lab」の機能がいいなって感じます。多種多様な端末に対してテストコード一つで様々な端末にテストすることが可能です。
ネックなのは金額かなと思いました。
ただ、企業で開発する分にはエンジニアを雇ってテストするコストを考えれば、かなり安くつきますし、何よりも再テストが容易であることが魅力的ですね。
事業拡大 ->
名称 | 費用 | 一言でいうと | 説明 |
---|---|---|---|
In-App Messaging BETA | 無料 | アプリからの通知機能 | アプリから様々な形式で通知を行えます。 ユーザーの誘導に役立ちます。 |
Google Analytics | 無料 | アプリの使用状況分析 | Google アナリティクスのアプリ版。 エンゲージメントなど、各種情報を取得できます。 |
Predictions | 無料 | ユーザーのアクティビティ予測 | アナリティクス データ×機械学習で ユーザーの行動を予測します。 キャンペーンなどに活用できます。 |
A/B Testing BETA | 無料 | アプリの改善検証テスト | UI、機能などでAとBどちらが良いか?などを検証する機能。 アプリの使用体験の最適化に役立ちます。 |
Cloud Messaging | 無料 | メッセージ送信 | 新しいメールやその他のデータがあることを クライアント アプリに通知できます。 |
Remote Config | 無料 | リモートで動作と外観を変更 | サーバー上に配置したパラメータを変更するだけで、 アプリの動作や外観を変更できます。 季節ごとのイベントなどの変更などもできます。 ユーザーはアプリのアップデートは不要です。 |
Dynamic Links | 無料 | リンククリック時の最適化 | アプリのインストールを促す場合や、 ブラウザで開きたいページへ移動する場合に利用できます。 |
事業拡大?の枠かなって思いましたが、「A/B Testing」と「Remote Config」を組み合わせて使うことは非常に有用です。
「Remote Config」というサービスはリリース済みのアプリに対して、Cloud上の設定値を変更することで、アプリに同期して変更を反映することが可能です。つまり、アプリのアップデートを必要とせず、修正が可能になります。アップデートプロセスには時間を要するものですがこの方法を活用すれば、変更は容易になります。
さたに「A/B Testing」を組み合わせることである特定のユーザーグループのみ反映させることも可能になり、アプリに多様性をもたせることができます。
各サービスを複合的に組み合わせて使用することができます。
各サービスを組み合わせてバックエンドサービスを構築していけることがFirebaseの最大の強みではないでしょうか。
無料プラン、従量制プラン
Firebaseには無料プランと従量制プランが存在します。
無料で利用出来るけど使いすぎたら従量プランになるから払ってねみたいな感じ。
いやいや、ちょっと待て。俺は勉強も兼ねてFirebase使って個人開発がしたいんだ!課金プランになるかもしれないなら触りたくない。って思うのは人の心理ですよね。
個人開発でヒットするまでなら十分使うことができると思います。
基本的には無料プランで出来ることは多い印象です。
・Authentication(認証)では月1万ユーザー可能。
・Cloud Firestore(データベース)は合計1GB。
・Cloud Storage(ファイル管理)は5GB。
個人開発であれば、アプリがヒットするまでは耐えられるかな…?
今後、無料プランで出来ることを整理してみたいと考えてます。いつか書けたらいいな。
まとめ
- FirebaseはBaaS!
- 出来ることが多い!
- 無料プランから従量プランに移行する!
Flutterと絡めて話をしていきたいですがFirebase自体を説明せねば、通れない道と思い、説明させていただきました!
Firebaseと連携したFlutterアプリを作成して、お見せ出来るように頑張っていきます!
それでは、see you again!