t8.dev

🇺🇸

firebaseに入門して一年後の使い方

公開日:2021/09/08
更新日:

はじめに

心理学を使ったTODOアプリを開発している、@takasqrです。

心理学を使ったTODOアプリ | todo8

心理学を使ったTODOアプリ | todo8

仕事でもプライベートでもFirebaseを使うようになって1年が経ちました。自分が一通りチュートリアルが終わった後に、知りたかったアイデアや考え方をまとめました。サンプルコードはjavascriptです。

※まだまだ書きたい事がありますが、時間がなくなってしまったので次回書き足したいと思います。

Firebase Functions

環境変数

Firebase Functionsではパスワードなどのハードコーディングしたくない情報を環境変数に格納することができます。

環境変数を設定する。

firebase functions:config:set service.id="123456789" service.pass="987654321"

現在の環境変数一覧を取得する。

firebase functions:config:get

結果が返ってきます。

{
  "service": {
    "id": "123456789",
    "pass": "987654321"
  }
}

環境変数を削除する。

firebase functions:config:unset service.id service.pass

環境変数を使う。

const functions = require('firebase-functions');

exports.userCreated = functions.database.ref('/users/{id}').onWrite(event => {
  //
  console.log(functions.config().service.id)
  console.log(functions.config().service.pass)
});

ログ

Firebase Functionsのログはconsole.log()で出力することもできますが、console.error()でエラーとして出すことができなかったりと制約があります。

functions.logger.log()を使うことで、いい感じに出力することができます。

  const functions = require("firebase-functions");

  functions.logger.log("log:", someObj);
  functions.logger.error("error:", someObj);

スケジュール実行をテストする

Firebase Functionsのスケジュール実行は便利ですが、テストする時に設定した時間まで待たなければならない部分がデバックしづらい。

でも実はGoogle Cloud Platform(GCP)Cloud SchedulerにFirebase Functionsのスケジュールが登録されている。そしてGCPCloud Schedulerには「今すぐ実行」のボタンがある。

開発する時は非常に便利。

Firebase Authentication

権限管理

  • 特定のユーザーだけ、Firestore、Firebase strageのアクセス権限を強くしたい
  • 特定のユーザーだけアクセスできるページを作りたい

といった、Authenticationのユーザーにラベルを付けたい時にFirebase Admin SDKのクレームを使うと便利です。

admin
  .auth()
  .setCustomUserClaims(uid, { admin: true })
  .then(() => {
    // 
  });

例だとAdminというクレームに対してtrueを設定しています。

クライアントで取得するには、

firebase.auth().currentUser.getIdTokenResult()
  .then((idTokenResult) => {
     // Confirm the user is an Admin.
     if (idTokenResult.claims.admin) {
       // adminがtrueだったら
     } else {
       // adminがfalseだったら
     }
  })
  .catch((error) => {
    console.log(error);
  });

カスタム クレームとセキュリティ ルールによるアクセスの制御 | Firebase

Firebase Hosting

GitHubからの自動デプロイ

Firebaseは公式にGitHubからの自動デプロイをサポートしています。

新たなプロジェクトに自動デプロイを追加する。

firebase init hosting

既にあるプロジェクトに自動デプロイを追加する。

firebase init hosting:github

GitHubプルリクエストを介してライブチャンネルとプレビューチャンネルにデプロイする

さいごに

次回以降に書きたい事。

  • Stripe 決済
  • Firestore、storage セキュリティルール
  • Hosting 複数サイトをデプロイ
  • Functions デプロイリージョン
  • Functions メモリ、タイムアウト
  • 拡張機能

関連記事

【Firebase】カスタムクレーム(Custom Claims)で管理者ユーザーを作る
Firebase Authentication(v9)とNextで認証機能を実装する
Firebase Authentication(v9)とNuxtで認証機能を実装する
Firebase Authentication(v9)とReactで認証機能を実装する
Firebase Authentication(v9)とVueで認証機能を実装する
Firestore Liteとは?
【hooks対応版】Firebase Firestore(v9)とNextでデータを操作する
【hooks対応版】Firebase Firestore(v9)とReactでデータを操作する
Firebase Firestore(v9)とNuxtでデータを操作する
Firebase Firestore(v9)とVueでデータを操作する

オススメ記事

5年間ほぼ毎日プログラミングの勉強をするためにやったこと
論文と本から学ぶ、プログラミング独学のコツ
目標達成率を高める if thenプランニングとは!?【本とアプリも紹介】