わしのlog

プログラミングとかバイクとか。

Cloud Functions for Firebaseを試してみた

概要

Cloud Fucntions for Firebaseを試してみました。
環境はWindows 10 Pro 64bitWSL上にて実行。

実行メモ

一応チュートリアル通りに進めていきます。 firebase.google.com

まずはFirebaseコンソール上でプロジェクトを予め作成しておきます。
この辺りは先人の方たちに語り尽くされているので割愛。

まずはfunctionsの初期化コマンドを打ちます。
firebase init functions
f:id:devdaikichi:20200330164740p:plain
f:id:devdaikichi:20200330165219p:plain
このディレクトリをプロジェクト(firebaseの)に紐づけるためのオプションを指定してください
とのことなので、とりあえずUse an existing Project.を選択。
Firebaseに作ってあるプロジェクトを指定します。

次はJavaScriptとTypeScriptどっちを使うかと聞かれました。

f:id:devdaikichi:20200330170741p:plain
今回はこちらにも書いたように、TypeScriptのオライリー本を購入したので
TypeScriptを選択してみます。

次はTSLint(JSを選択していたらJSLint)を使うか?と聞かれるので、Y

次はnpmの依存パッケージを今すぐダウンロードします?と聞かれるので、Y

しばらくするとfunctionsディレクトリに色々とファイルが作成されます。

後はチュートリアル6. addMessage() をデプロイして実行するの通りに関数を追加
firebase deploy --only functionsを使ってデプロイ。
余談ですが、ここでデプロイする関数を絞ることもできるようです。
が、余りデプロイ速度は変わらないみたいです。。。
また、プロジェクトのルートディレクトリで上記コマンドを実行したのに、どうやって
デプロイ対象のディレクトリを指定してるんだろう・・・
と思ってたんですが、ここに書いてましたね。

firebase.google.com

デフォルトでは、Firebase CLI によって functions/ フォルダ内でソースコードが検索されます。
別のフォルダを指定するには、firebase.json に次の行を...
大体予想してましたが、デフォルトではfunctions/配下が選択されるんですね。
で、別ディレクトリを参照させるならfirebase.jsonに指定すると。
すっきりしました。

デプロイが完了したら、Function URL (addMessage): https://us-central1-Y_PROJECT.cloudfunctions.net/addMessage
のように出力されるので、ブラウザにクエリパラメータを付加した上記URLを入力してアクセス。
すると、データベースにクエリパラメータで指定した文字列が登録・・・
f:id:devdaikichi:20200330174737p:plain
されませんでした。
というのも、この時私はChromeで2つのGoogleアカウントでログインしており
開発用アカウントではなくメインアカウントの方で叩いてしまったので
URLを叩いたあとのFirebaseコンソールページへのリダイレクトで、アクセス制限に引っかかっているようでした。
つまり、登録はできているけど登録を確認する為のリダイレクト処理でうまくいってなかっただけ、みたいです。

新たにシークレットタブを開き、開発用アカウントでログインし、実行すると・・・
f:id:devdaikichi:20200330175108p:plain
登録されましたね。

終わりに

今回はチュートリアルに従って、Cloud Fucntionsを使ってみました。
Firebaseはドキュメントも充実しているし、簡単な操作でデプロイできるのでいいですね。
次は画像アップロード用の関数でも作ろうかなぁと思っています。

現場からは以上です。