Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
115
Help us understand the problem. What is going on with this article?
@koki_cheese

Cloud Functions for Firebaseとは?

More than 3 years have passed since last update.

やっとGoogle Cloud FunctionsがBetaになり これから色々情報が出てくると思います。
今回は僕が特に注目してるCloud Functions for Firebaseについてです。

Cloud Functions for Firebaseとは

Firebaseのユーザ認証、データベース、ストレージの追加や変更のイベントを受け取ってサーバ側で何か処理できるサービスです。

現在はNode.jsがサポートされています。

クライアント側にロジックを持たせてしまうと問題のあるようなものをCloud Functionsにすることでロジックを秘匿することができますし、Push通知をするためのAPI Keyもクライアントに持たせるわけにいかないのでCloud Functionsを使えば安全に簡単にユーザの操作を元にPush通知を実装することもできます。

使い方

では早速試してみます。
バージョン6.3.1以上のNode.jsを必要とします。

SDKのインストール

次のコマンドでfirebase-toolsをインストールします。

$ npm install -g firebase-tools

インストールできたらfirebase loginで認証します。

次に、適当なディレクトリを作成してその中でfirebase initをします。
デフォルトではFunctionsを使うにチェックが入ってると思うのでそのままエンターですすめます。

$ mkdir functions-test; cd functions-test
$ firebase init

作成できるとこのようなディレクトリ構成になると思います。

.
├── database.rules.json
├── firebase.json
└── functions
    ├── index.js
    ├── node_modules/...
    └── package.json

既存のFirebase プロジェクトにFunctionsを追加したい場合はfirebase init functionsコマンドで初期化できます。

関数の作成

今回はデータベースの変更をフックして起動する関数を書いてみます。

index.js
var functions = require('firebase-functions');

exports.helloWorld = functions.database.ref('/test')
    .onWrite(event => {
      const val = event.data.val();
      console.log('helloWorld', val);
    })

デプロイ

次のコマンドでFunctionsだけをデプロイできます。

$ firebase deploy --only functions

Firebase コンソールから/testを変更してコンソールかfirebase functions:logコマンドからログを確認できます。

料金

気になる料金ですが Pricingで確認してください。

現在は無料プランではGoogleネットワーク外部と通信に制限があるので、どうしても外部と通信したい!と言う場合はプランを上げるかApp Engineと合わせて使う必要がありそうです。

それと従量課金のBLAZEプランでも無料枠があるので気軽に使い始められるかもしれません。

まとめ

API Keyなどはコードに書かないですむように 環境変数をセットすることもできるようです。

公式でサンプルがあるのでGitHubを見てみてください
カスタム認証や支払い処理、バッヂ処理、テキストのNG処理などのサンプルがあります。

また 現在は関数の削除はCloud Consoleからしかできないようです。
index.jsから関数を消せば削除されそう(要確認)

115
Help us understand the problem. What is going on with this article?
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
koki_cheese
Go/JavaScript/Firebase/GCP/Securityとかが好きです。

Comments

No comments
Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account Login
115
Help us understand the problem. What is going on with this article?