LoginSignup
8
6

More than 3 years have passed since last update.

Cloud Functions for Firebaseで開発を始めるときのちょっとした知見

Last updated at Posted at 2019-12-22

Cloud Functions for Firebaseでちょっとしたものを開発したときに、便利だなーと思ったことをまとめます。

外部サービスのAPIを叩くにはプランの有料化が必要(ただし無料枠あり)

例えばSlack APIを使ってSlack上のなんやの自動化をサーバレスでやりたい、ということは無料プランではできません。アウトバウンドネットワークの制限が無い定額プランにするか、従量課金制のプランにする必要があります。従量課金制のプランには無料枠があり、何かをテスト的にやってみる分には十分なので、ほとんどの場合無料で試せます。テスト後は無料プランに戻しておきましょう。

Firebase Pricing | Firebase

環境変数の設定

シークレットキーやパスワードなど、コード中に埋め込みたくない値は環境変数として設定できます。

# 設定
firebase functions:config:set slack.api_key="XXXXXXXXXXXX"
# 確認
firebase functions:config:get
# 削除
firebase functions:config:unset slack.api_key

環境変数はコード中からは次のように参照可能です。

const functions = require('firebase-functions')
const { WebClient } = require('@slack/web-api')

const slack = new WebClient(functions.config().slack.api_key)

環境の構成 | Firebase

ローカルで動作確認

Functionsはデプロイする前にローカルで動作確認することが可能です。

firebase emulators:start
# もしくは
firebase emulators:start --only functions

これでローカルにサーバが立ち上がり、コンソールにエンドポイントが表示されているはずです。

ローカルでの関数の実行 | Firebase

ローカルサーバに環境変数を反映

functions:config:setで追加した環境変数を利用したコードをローカルで動作確認する場合、環境変数の内容をファイル化しておかないと、環境変数が利用できません。

!  Non-existent functions.config() value requested!

のようなエラーメッセージが出ます。

firebase functions:config:get > .runtimeconfig.json

ポイントとして、このファイルはfunctionsディレクトリにある必要があります。

app/
 ├ functions/
 │ ├ index.js
 │ ├ …
 │ └ .runtimeconfig.json
 └ .firebaserc

また、忘れず.gitignoreに追加しておきましょう。


ちょっとしたものならこれでもうサクッと開発してしまえるのではないかと思います。

8
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
6