Flutter

【Google】Firebaseを学ぶ!

こんにちは!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。
機械学習の経験の有無を問わず、わずか数行のコードで実装できます。
Authentication1 万/月まで
(超えると1認証×$0.01)
ユーザー認証機能パスワード、電話番号、SNS(Google、Facebook、Twitter)などを
使用した認証を行うことができます。
Cloud Storage従量課金ストレージサーバー写真や動画など、ユーザーが作成したコンテンツを保管、提供する必要のある
アプリデベロッパー向けに構築されています。
ペタバイトの容量保管できるそうなので、不足は絶対しないでしょう。

上記の中でも最初にピックアップしたいは「Cloud Firestore」です。要はDB(データベース)ですね。DBはNoSQLで構築されており、かつオートスケールしてくれるので、助かります。また、セキュリティ的にもGoogle独自のセキュリティ施策が行われているようで自身で構築するよりも遥かに安全ではないでしょうか。


Cloud Storage」もいい機能です。アプリ開発で欠かせないのはファイルの管理です。写真や文書データを格納しておくためのストレージを提供します。Google フォトなどで採用しているテクノロジーを活用しているのも強みです。

品質の向上 ->

名称費用一言でいうと説明
Crashlytics無料クラッシュ レポートツールクラッシュをインテリジェントにグループ化し、
クラッシュにつながった状況をあぶり出すことによって、
トラブルシューティングの時間を節約できます。
Test Lab10 件/日
(超えると$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の料金プラン

いやいや、ちょっと待て。俺は勉強も兼ねてFirebase使って個人開発がしたいんだ!課金プランになるかもしれないなら触りたくない。って思うのは人の心理ですよね。
個人開発でヒットするまでなら十分使うことができると思います。

基本的には無料プランで出来ることは多い印象です。
・Authentication(認証)では月1万ユーザー可能。
・Cloud Firestore(データベース)は合計1GB。
・Cloud Storage(ファイル管理)は5GB。
個人開発であれば、アプリがヒットするまでは耐えられるかな…?
今後、無料プランで出来ることを整理してみたいと考えてます。いつか書けたらいいな。

まとめ

  • FirebaseはBaaS
  • 出来ることが多い
  • 無料プランから従量プランに移行する

Flutterと絡めて話をしていきたいですがFirebase自体を説明せねば、通れない道と思い、説明させていただきました!

Firebaseと連携したFlutterアプリを作成して、お見せ出来るように頑張っていきます!

それでは、see you again!

ABOUT ME
Ikumasa
3人家族の夫やってます。結婚4年目突入しました。 私はFF7Rにはまってます。 嫁はあつ森です。嫁はカニです。 仕事は設計業務から開発工程を中心に仕事しています。 高専(電子科)→情報系大学編入→2014年情報系大学院卒→IT企業就職~現在に至 主にJavaでの開発に従事、多少VB.NETでの開発も。 Framework:Struts、Seaserなどを経験。 DB:oracle11g,postgreSQL,MySQL,SQLite,SqlServerなど。 JP1を活用したバックエンド側を中心に3年ほど実施。 当時はLinuxOSでのShellScriptなど。携わった言語は広く浅く長くw どちらかというとバックエンドよりのエンジニア。 最近はフロントエンド側もやってます。 独学でFlutterなどの新規案件獲得に向け日々勉強中