Open3

Firebase 100%理解した。(理解したとは言っていない)

hashitohashito

はじめに

このスクラップはFirebaseを100%理解していない男の備忘録をまとめたものです。
登場する技術は仮想技術であるため、参考程度でのご利用をお願いします。

Firebaseって?(1)

FirebaseはGoogleが購入したBaaSというソリューションです。
BaaSとはバナナ…ではなく

ウィキペディアを参照すると

https://en.wikipedia.org/wiki/Mobile_backend_as_a_service

サービスとしてモバイルバックエンド(MBaaSも「としても知られる)、サービスとしてバックエンド」、[1] [2] [3]は提供するためのモデルであるWebアプリケーション及びモバイルアプリケーションにそのアプリケーションをリンクする方法を開発者にバックエンド・ クラウドストレージまた、ユーザー管理、プッシュ通知、ソーシャルネットワーキングサービスとの統合などの機能を提供しながら、バックエンドアプリケーションによって公開されるAPI 。[4]これらのサービスは、カスタムソフトウェア開発キット(SDK)とアプリケーションプログラミングインターフェイスを使用して提供されます(API)。

引用:Wikipedia:https://en.wikipedia.org/wiki/Mobile_backend_as_a_service

よくわかりませんが、クラウドやモバイルに関するバックエンドサービスを提供するサービスのようです。

ここで分かっていたほうがいいのは、裏側がGoogleのサービスであることです。
GoogleのクラウドサービスであるGCPの設定やゾーンが影響する場合があります。(重要)

hashitohashito

各種機能

Firebase Hosting

静的なホームページを公開する機能。
HTTPSで公開してくれるし、独自ドメインも対応しているので大変便利。

Firebase Cloud Function

サーバサイドで実行される特殊な処理を記述できるっぽい。
AWS Lambdaと似た機能で基本GCPのCloud Functionとほぼ同じ(推測)
(作者は利用経験がないため、使ってみたらここに追記して)

Firebase Storage

サーバサイドで大きなファイルを保持しておく機能。
AWS S3と似た機能で基本GCPのCloud Storageとほぼ同じ(推測)

Firebase Authentication

FacebookやTwitter、Githubなどのアカウント情報を流用してログイン/ログアウトを実装できる機能。
独自のアカウントを作成し、管理することもできます。
このアカウント情報を利用してFirestore内のデータへのアクセス管理をすることも可能

Firestore

NO SQL形式のDBサービス。
Javascriptのフロント側でも直接操作も可能。

その他

(気づいたら更新します。)

hashitohashito

Firestoreのアクセスルール

はじめに

Firestoreにアクセスするruhruを記載し、アクセス制限をすることができます。

アクセスルール

ロックモード:初期値

すべてのアクセスを拒否するモードです。

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

認証済みのすべてのユーザに全てのDBへのアクセスを許可

service cloud.firestore {
  match /databases/{database}/documents {
    match /{document=**} {
      allow read, write: if request.auth != null;
    }
  }
}

特定のcollectionへのアクセス許可

service cloud.firestore {
  match /databases/{database}/documents {
    // Allow public read access, but only content owners can write
    match /some_collection/{document} {
      allow read: if true
      allow write: if false
    }
  }
}