Skip to content

Instantly share code, notes, and snippets.

@LeeDDHH
Last active September 21, 2021 01:54
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save LeeDDHH/1a2ca30f19f0c7c7944453e56800e97a to your computer and use it in GitHub Desktop.
Save LeeDDHH/1a2ca30f19f0c7c7944453e56800e97a to your computer and use it in GitHub Desktop.
firebaseのcloud functionsのあれこれを集める

Cloud Functions for Firebase

  • Firebaseの機能とHTTPSリクエストによってトリガーされたイベントに応じて、バックエンドのコードを自動的に実行するサーバーレスフレームワーク
  • JS、TSのコードはGoogle Cloud Servicesに保存され、マネージド環境で実行される
    • 独自のサーバーの管理/スケーリングの必要はない

主な機能

Firebaseプラットフォームを統合

  • Firebase Authentication トリガー、Cloud Storage トリガーなど、さまざまな Firebase や Google Cloud 機能によって生成されたイベントに応答できる
  • Admin SDKを Cloud Functions とともに使用して、Firebase のさまざまな機能を統合できる
  • 独自のWebhookを作成して、サードパーティのサービスと統合することもできる

メンテナンス不要

  • 1つのコマンドで、JS/TSコードをサーバーにデプロイする
  • 認証情報、サーバー構成、新規サーバーのプロビジョニング、古いサーバーのデコミッションを気にする必要はない

ロジックの機密性と安全性を維持

  • クライアントから完全に隔離されて、クライアントからして非公開にできる
    • クライアント側での改ざんを防ぐ
    • コードをリバースエンジニアリングできないようにする

仕組み

  • 関数を記述してデプロイする
    • Googleのサーバーで関数の管理を開始する
    • 関数は、HTTPリクエストで直接呼び出すことができる
    • バックグラウンド関数の場合、Googleのサーバーがイベントをリッスンして、関数がトリガーされたときに実行する
  • 負荷が増減すると、Googleが関数の実行に必要な仮想サーバーインスタンスの数をスケーリングすることで対応する
    • 各関数は、独自の構成が含まれる独自の環境で独立して実行される

関数のスケジュール設定

  • 課金は必須
    • Cloud Schedulerの各ジョブのコストは月額$0.10(USD)
  • Google アカウントごとに3つのジョブを無料で使用できる

Cloud Firestore トリガー

  • functions.firestore.document('ドキュメントまでのパス') をもとにトリガーをつけて使える
イベントタイプ トリガー
onCreate ドキュメントが最初に書き込まれたときにトリガーされる
onUpdate すでに存在するドキュメントの値が変更されたときにトリガーされる
onDelete データを含むドキュメントが削除されたときにトリガーされる
onWrite onCreateonUpdateonDeleteがトリガーされたときにトリガーされる

一般的なライフサイクル

  1. 特定のドキュメントに変更が加えられるまで待つ
  2. イベントが発生するとトリガーされ、タスクを実行する
  3. 指定されたドキュメントに保存されているデータのスナップショットを含むデータオブジェクトを受け取る
  4. onWrite、onUpdateの場合、データオブジェクトには、トリガーとなるイベントの前後のデータ状態を表す2つのスナップショットが含まれる

Pub/Subトリガー


環境の構成


参考

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment