2019/01/27

FusionTablesからFirebaseCloudFireStoreへ

FusionTables -> Firebase

GoogleのDriveのアプリのFusionTablesを使ったアプリを個人利用で作ってみた。
しかし、FusionTablesのサービスがクローズする事となったため、下記のTweetをしたら、Googleの「Firebase Realtime Database」というものを友人が教えてくれた。
その備忘録である。
https://twitter.com/o310yusuke/status/1078644337422913536

Firebaseとは

いろいろな方が説明されているので、割愛させていただき、私が個人的に抑えておきたい特徴は下記の通り。
  • Googleが運営しているmBaaSである
    • mBaaS(mobile backend as a service ):モバイルアプリ向けに汎用的な機能を提供するバックエンドのサービス、ってところ
  • 無料でも使える
  • データの同期を自動でやってくれる
  • Googleの認証を使える
  • Android/iOS/Webサービスのいずれでも利用できる

Firebaseのデータベースの種類

利用できるデータベースには、現時点では2種類ある。
比較の詳細については、公式サイトを参照のこと。
下記には、個人的は要約を記載する。
今回は「Cloud Firestore」を利用してみる。

Realtime Database

  • 従来からあるFirebaseのデータベース
  • リアルタイムのクライアント間の同期が必要なモバイルアプリ向け
  • 1つの大きな保存領域(CloudFirestoreのドキュメントに相当)があり、JSON型でデータを保存する(1つの大きなJSONツリーとして保存)

Cloud Firestore

  • 2019/01/26時点ではベータ版
  • Realtime Databaseより効果的らしい
  • 複数の保存領域(ドキュメント)をまとめて(コレクション)、そこにデータを保存する
    • コレクション:フォルダのようなもの
    • ドキュメント:一つのファイルのようなもの
    • データ:ドキュメントにかかれている情報

設定手順

基本的には、Cloud Firestoreのスタートガイドのサイドに従って設定を行った。
下記には、私が行った設定内容を備忘録代わりに記載する。

プロジェクトを追加

プロジェクトの追加

  • プロジェクト名
    • 自分が管理しやすい名称をつけるのが良さそう
    • firebase用のプロジェクトとわかる名前を設定
  • プロジェクトID
    • URLとして公開されるとのことなので、注意が必要そう
    • プロジェクト名を入力すると自動入力されるが、アプリの名称に変更
  • 地域/ロケーション
    • アナリティクス:日本
    • ロケーション:asia-northeast1
  • Firebase向けGoogleアナリティクスのデータ共有にデフォルトの設定を使用する:チェックOn
  • アプリでFirebaseサービスを使用することに・・・:チェックOn
上記の設定を行い「次へ」ボタンを押下すると、プロジェクトが作成される。
プロジェクトが作成されると、プロジェクトのページへ自動遷移する。
なお、作成されるプランは、「Spark」で無料$0/月である。

Databaseの設定

開発タブの中から「Database」を選択し、設定を行う。
Cloud Firestoreを作成するボタンを押下する。

Cloud Firestore セキュリティルール

  • テストモードで開始を選択
    • 本来であれば、認証必須にすべき
    • 今回はテスト開発のため、テストモード(参照権限を有するユーザは読み書き可)を選択
  • 作成が完了したら、ルールタブを選択し、ルールを変更
    • 下記のように認証必須の設定に変更し、公開ボタンを押下
    • if ~の部分を追加
      // Allow read/write access on all documents to any user signed in to the application
      service cloud.firestore {
        match /databases/{database}/documents {
          match /{document=**} {
            allow read, write: if request.auth.uid != null;
          }
        }
      }
      

開発環境の設定

Cloud Firestoreを利用するAndroidアプリを開発するための設定を記載する

必要な依存関係とクライアントのライブラリを追加する

  • AndroidStudioでFirebase用のプロジェクト(カラのActivity)を作成する
  • 作成したAndroidアプリのプロジェクトに、Android アプリに Firebase を追加するに従って、Firebase Assistantを使用して、設定を追加する
    • Firestoreを探して、「Read and write documents with Cloud Firestore」のリンクを押下
    • 表示された手順に従い、先程作成したプロジェクトを選択
    • 接続したら、Cloud Firestoreを利用するためのGradleの設定変更を取り込む
      • 下記のwarningがapp/build.gradlenに対して出たが一旦は無視(implementationになっているから)
      Configuration ‘compile’ is obsolete and has been replaced with ‘implementation’ and ‘api’.
      It will be removed at the end of 2018. For more information see: http://d.android.com/r/tools/update-dependency-configurations.html
  • Firebase Assistantで設定したGradleのバージョンが古いので変更
    • 変更前: 11.8.0
    • 変更後: 15.0.0
  • Cloud Firestore を初期化する

まだまだ先は長い・・・

文量が多くなってきたので、今回はここまで。
次回は、Cloud FirestoreをAndroidアプリで利用するための具体的な実装を行っていく。

ハマったこと

プロジェクトの再利用はしないほうが良さそう

FusionTablesを利用する際に作成したプロジェクトを利用して、Firebaseを利用しようとした。
スタートガイドのページに、下記のように記載されている通り、FusionTablesのために作成したプロジェクトは、Firestoreのプロジェクトとして利用できないそうな。
Cloud Firestore と App Engine: 同じプロジェクトで Cloud Firestore と Cloud Datastore の両方を使用することはできません。両方を使用すると、App Engine を使用するアプリが影響を受ける可能性があります。別のプロジェクトで Cloud Firestore を使用してみてください。
※Firebaseでのプロジェクトの作成のタイミングでエラーを出してくれればいいのに。。。
データベースを作成しようとしたさいに、エラーを出すなんて。。。

関連サイト

0 件のコメント:

コメントを投稿