Firebaseとは!?Firebaseの登録/使い方(AWS AmplifyやAzureも検討したけど…)

Webプログラミング

AWS AmplifyやAzureも検討したけどFirebaseを採用しました。

覚書を兼ねてFirebaseの使い方をまとめていきます。

Firebaseとは

  • FirebaseとはGoogleが提供しているWebアプリケーションのバックエンド機能のアプリケーションサーバーです。
  • 一応、モバイルに特化していると言われていますが、モバイル以外も問題ありません。
  • クラウドサービスの形態ではBaaSに位置付けされます。
  • BaaS(バース)とはBackend as a Serviceの略です。スマートフォンやタブレットなどのモバイルシステムのバックエンドサービスです。

競合サービス(AWS Amplify、Azure)と公式サイト

競合サービスとしてAmazonのAWS Amplify、Microsoft Azure Mobile Appsなどがありますが情報が少なめで、GoogleのFirebaseの方が有名です。
AWS Amplify(アプリケーションの構築とデプロイ)| AWS
AWS Amplify は、モバイルおよびフロントエンドのウェブデベロッパーが AWS を利用して安全でスケーラブルなフルスタックアプリケーションを構築できるようにするツールとサービスのセットです。
Mobile App Service | Microsoft Azure
Azure の Mobile App Service により、iOS、Android、Windows、または Mac 用の魅力的なクロスプラットフォーム アプリおよびネイティブ アプリを構築します。
Firebase
Firebase は、高品質のアプリを迅速に開発できる Google のモバイル プラットフォームで、ビジネスの成長に役立ちます。

なお、2013年にFacebookが買収したParseは2017年に閉鎖されています。。

firebaseを採用理由

  • 個人開発に適している
  • サーバーサイドに労力をかけたくない
  • アマゾンのAmplifyにサービスに比べ情報が多い。WebサービスならアドセンスやGAなどGoogleサービスの連携
  • 固定プランが大事。固定プランは3000円。従量制も上限は一応きれる
  • 無料プランもあり
  • vue.js(nuxt.js)だけではなく、unityにも使える
  • Authenticationなどのtwitterの認証がある
  • NoSQLデータベース

firebaseのプロジェクト作成

firebaseの登録

googleのアカウントでログインするだけです。

フロー配下のとおり。

使っているgmailでログイン > 新しいプロジェクト > 「プロジェクト名」を入力して続行 > 「このプロジェクトで Google アナリティクスを有効にする推奨」をチェックオンにして続行 > Google アナリティクスの構成 > 「新しいアカウントを作成」 名前を入力して保存 > アナリティクスの地域 日本 他にチェックをいれてチェックをいれて「プロジェクトを作成」

コンソールに移動 > プロジェクト名 > database > データベースの作成 > テストモードで開始(もしくは本番環境で開始) > Cloud Firestore のロケーション asia-northeast1(東京)

違いは? Realtime DatabaseとCloud Firestoreの比較

データベースが2つあり、どっちにしようか迷うかもしれません。

簡単にいうとRealtime DatabaseよりCloud Firestoreの方が新しいためCloud FirestoreでOKです。詳しい比較表はQiitaをみましょう。

Firebase RTDB + GCP datastore = Firestoreについて第一印象 - Qiita
ほぼ一日経っても誰もまだQiitaに投稿してないんで,ひとまずざっくり記しときます.   tl;dr まじやばい ぐうぐるの超技術が超手軽に ←まじやばい 追記:すごさについて @1amageek 氏がまとめてくれてます.なん...

違いは?テストモードとロックモードの比較

テストモードにしとけという人とロックモードにしとけという人、この2つのリファレンスがあってちょっと迷うかもしれません。ソースコードをみると全拒絶か全オープンかどちらかであり単純にそれだけです。セキュリティ等に関する各々の考え方の違いから、どちらかを推奨するかがエンジニアさんによって違うみたいな感じですかね。

テストモードはallowになっています。

rules_version = '2';
service cloud.firestore {
  match /databases/{database}/documents {

    // This rule allows anyone on the internet to view, edit, and delete
    // all data in your Firestore database. It is useful for getting
    // started, but it is configured to expire after 30 days because it
    // leaves your app open to attackers. At that time, all client
    // requests to your Firestore database will be denied.
    //
    // Make sure to write security rules for your app before that time, or else
    // your app will lose access to your Firestore database
    match /{document=**} {
      allow read, write: if request.time < timestamp.date(2020, 1, 16);
    }
  }
}

テストモードの場合は30日間オープンになるため、30日の猶予があります。それ以降は警告メールがきます。

ロックモードはallowがfalseになっています。

rules_version = '2';
service cloud.firestore {
  match /databases/{database}/documents {
    match /{document=**} {
      allow read, write: if false;
    }
  }
}

どちらも仮であり、どのみち書き換えなければなりません。この書き換え方が大事ですよね。

  • アクセス権限はreadとwriteに大別されます。
  • readはget、listにわけられます。
  • writeはcreate、update、 deleteにわけられます。

認証した人の制限をつけます。いたずらなどの負荷回避にもなります。

rules_version = '2';
service cloud.firestore {
  match /databases/{database}/documents {
    match /users/{userId} {
      allow read, update, delete: if request.auth.uid == userId;
      allow create: if request.auth.uid != null;
    }
  }
}

公式サイトにのっています。

Cloud Firestore セキュリティ ルールの条件の記述  |  Firebase

階層を掘るとこうなります。

rules_version = '2';
service cloud.firestore {
  match /databases/{database}/documents {
    match /users/{userId}/address/{addressId} {
      allow read, update, delete: if request.auth.uid == userId;
      allow create: if request.auth.uid != null;
    }
  }
}

firestoreのルールの認証の未認証の切り分け

次のようにすると、ログイン済ならnull以外になるためreadとwriteできます。ログアウト時はreadのみです。

match /users/{userId} {
  allow read, write: if request.auth.uid != null;
  allow read;
}

firebaseの管理画面操作

firebaseの管理画面からの削除

コレクションを削除:コレクションを削除は確認を求められます。
ドキュメントを削除:ドキュメンごと削除
ドキュメントフィールドを削除:ドキュメントの中身を削除

このコレクションを削除しますか?
コレクションのパス
/task
次の ID を入力してこのコレクションの削除を確定します: task

/はいらずtaskとだけ入力すると削除できます。

firebaseのドキュメントの並べ替え

タイムスタンプ順に表示するのが便利です。

三角形のハンバーガーメニューを選択 > 条件を入力 > 適応

コメント

タイトルとURLをコピーしました