Chapter 29無料公開

 01.Firebaseの概要

kazutxt
kazutxt
2023.04.15に更新

Firebaseの概要

Firebaseは、Googleが提供するアプリ開発のプラットフォームです。クラウドサービスとして、アプリのサーバーサイドの機能を提供してくれます。
Googleには、GCP(Google Cloud Platform)というクラウドコンピューティングサービスもありますが、Firebaseの方がよりモバイルアプリ向けになっており、mBaaS(mobile Backend as a Service)と呼ばれることもあります。
FirebaseとGCPは組み合わせて使うこともできます。

Firebaseの代表的なサービス

Firebaseには以下のようなサービスがあります。(全てではありません)
いくつかは本書の中で取り上げ、詳しい設定方法/利用方法を解説します。なお、ベータ版のサービスもありますので、利用時はご注意ください。

サービス名(一部略称) 概要 本書での解説
Authentication ユーザ認証サービス
Firestore スケーラブルな新しいNoSQLのDBサーバ
Realtime Database 従来のNoSQLのDBサーバ
Storage ファイルストレージ
Hosting Webアプリ等のホスティングサービス
Functions サーバレスの関数実行環境
Machine Learning 機械学習サービス
Cloud Messaging ユーザへの通知管理
Crashlytics クラッシュレポートの統合ソリューション
Performance 性能の統合ソリューション
TestLab 様々なテスト環境の提供
App Distribution テスターへのアプリの効率的な配布管理
In-App Messaging アプリ内通知管理
AdMob 広告マネタイズの管理

Firebaseのメリット

Flutterアプリを開発していると、サーバを立てて機能を拡張したいというシーンが出てきます。一番シンプルな実現方法は、自分でサーバマシンを購入してセットアップを行い、必要な機能を実装しアプリと連携することです。

しかし、大きく3つの課題が発生します。
1つめは、サーバのメンテンナンスコストが高いことです。 自分でインフラやOSやセキュリティの設定などのメンテナンスをし続けるのは非常にコストがかかります。

2つめは、サーバサイドの実装が大変なことです。 認証、DB、PUSH通知など、アプリごとにこれらの機能を全て自前で実装するのは非常に大変です。

3つめは、アプリとサーバの連携が煩雑になることです。 アプリと各種機能を提供するサーバ間の連携を1つずつ個別に設定するのは大変です。

これらをまとめて簡単に解決してくれるのがFirebaseです。
1つめの課題であるメンテナンス性については、クラウドサービスであるためインフラやミドルウェアの保守などをFlutterエンジニアが意識する必要はありません。従量課金で必要な時に必要な分だけサービスを利用できます。(無料枠もあります)

2つめの課題である機能の実装については、認証、DB、ホスティング、エラー解析、機械学習、広告など20以上の様々なクラウドサービスを独立した機能単位で利用でき、高い生産性を実現できます。

3つめの課題である設定の煩雑さについては、FlutterとFirebaseはどちらもGoogle製で連携を容易にするためのパッケージが提供されており、非常に高い親和性を持ちます。そのため、わずかな設定のみでFlutterアプリとFirebaseプロジェクトを連携させることができます。

Firebaseアカウントの作成

FirebaseをFlutterアプリで利用するためには、最初にFirebaseアカウント(Googleアカウント)を作成する必要があります。
下記のFirebaseの公式サイトにアクセスし、アカウントの作成を行います。アカウント作成は容易なため、詳細手順は割愛します。
https://firebase.google.com/?hl=ja

Firebaseプロジェクトの作成

アカウント作成後に、Firebaseのプロジェクトを作成します。画面の案内に従って作成します。

Google アナリティクスとの連携は、有効が推奨されているため設定します。明確に不要であれば無効にしても構いません。



Google アナリティクスとの連携を行うと、特段追加の設定をしなくても、利用状況がアプリごとに表示できます。

Flutterアプリとの紐づけ方法

プロジェクト作成後に、Flutterアプリとの紐づけを行います。
下記のアイコンをクリックすると詳細手順を確認できます。

まず、firebase-toolsをインストールしfirebaseにログインします。

ターミナル
% npm install -g firebase-tools
% firebase login

コマンドを入力するとブラウザが立ち上がり、ログインとFirebaseCLIへのアクセス許可が求められます。承認すると、ブラウザ及びターミナルにログイン成功が表示されます。

続いて、viを使って(vi以外で行ってもかまいません)パスを通し、プロジェクトの設定を行います。なお、Windows環境の場合は、dart pub global activate flutterfire_cliコマンド実行後に、「C:\Users\{username}\AppData\Local\Pub\Cache\bin」にパスを通して下さい。

ターミナル
% dart pub global activate flutterfire_cli
# flutterfireコマンドを実行するためにパスを通す
% vi ~/.zshrc
# iで編集モードに切り替え
# export PATH=$PATH:/Users/kazutxt/.pub-cache/bin を追記。(パスは適宜修正)
# ESCキーを押してから「:wq」で上書き保存
# 反映
% source ~/.zshrc
# 設定を行う
{プロジェクトのルート} % flutterfire configure --project={firebaseのプロジェクト名}

最後に、必要なパッケージをインストールします。

pubspec.yaml
# 必要部分のみ抜粋/バージョンは各自の環境に合わせたものを使う
dependencies:
  flutter:
    sdk: flutter
+ firebase_core: ^1.19.1

プラットフォーム単位の紐づけ方法

下記の該当のアイコンから各プラットフォーム単位に紐づけを行うこともできます。前述のFlutterのアイコンから紐づける手順を実施した場合は、プラットフォーム単位の紐づけは不要です。

本書では、Fluterアプリでの紐づけを推奨しますので、プラットフォーム単位での紐づけの詳細は割愛します。必要な方は、各プラットフォームの紐づけ手順に従って設定をしてください。

  • Android : パッケージ名を入力し、「google-services.json」をプロジェクトの指定フォルダに配置します。
  • iOS : バンドルIDを入力し、「GoogleService-Info.plist」をプロジェクトの指定フォルダに配置します。
  • Web : アプリ名を入力し、Firebase Hostingの設定を行います。

また、各プラットフォームに応じたSDKのインストールも必要となります。