Firebaseでハマったこと

注意

ベータ版の機能を使っている部分があるので機能が変わっていることもある.

CloudFunctionsとHostingを一緒に使うときのURLの管理

通常,CloudFunctionsのFunctionをデプロイした時にアクセスするURLはhttps://us-central1-<your-project-id>.cloudfunctions.net. HostingでデプロイしたコンテンツにアクセスするときのURLはhttps://<your-project-id>.firebaseapp.comとなっている. 例えば,hogeというFunctionを定義した場合はhttps://us-central1-<your-project-id>.cloudfunctions.net/hogeにアクセスすることで実行できるが, https://<your-project-id>.firebaseapp.com/hogeにアクセスして実行できる方が便利である. そのためにはfirebase.jsonを以下のように書けばよい.

// firebase.json
{
  "hosting": {
    "public": "public", // ホストするディレクトリ
    "rewrites": [ {
      "source": "/hoge",  // https://<your-project-id>.firebaseapp.com/hoge
      "function": "hoge" // https://us-central1-<your-project-id>.cloudfunctions.net/hoge
    } ]
  }
}

詳しいことは Serve Dynamic Content with Cloud Functions  |  Firebase を参考.

CloudFunctionsでAPIキーを使いたいとき

APIキーなどの外部に漏らしてはいけない情報を扱うときにハードコーディングすることはなるべく避けたい(GitHubなどでソースコードをPublicに管理している場合は絶対にやってはいけない). CloudFunctionsには環境変数を設定する機能が用意されており,CLIfirebase functions:config:set someservice.key="THE API KEY" someservice.id="THE CLIENT ID" というようにして設定できる. この設定はFunction側からはfunctions.config().someservice.keyfunctions.config().someservice.idという形でアクセスできる. また,現在の環境変数の取得はCLIfirebase functions:config:getと実行することでJSON形式で受け取れる.

詳しいことは Environment Configuration  |  Firebase を参考.