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
Help us understand the problem. What is going on with this article?

Firebase で Cloud Functions を簡単にはじめよう

Cloud Functions for Firebase とは

Cloud Functions のラップのようなもので Firebase の各機能との連携が取りやすくなっているらしい。

Firebase の各機能についてはこちらの記事が参考になる:

後述する firebase-tools により、コマンドラインからコマンドひとつでボイラープレートの作成とデプロイが簡単にできるようになっている。

これは主観だけど、今までずっと使ってきた AWS Lambda なんかより格段にとっつきやすい感じがする。Firebase は Web の画面も UI が洗練されてるから使ってて気持ちいい。すぐできるから今すぐチャレンジ。

必要なもの

  • Google アカウント
  • Node 環境 (私は v8.11.2)
  • 3分程度のやる気 :sparkles:

追記1: 本記事公開時点での推奨バージョンは v6.14.0 とのことです! (@mono0926 さんコメントありがとうございます:smile:)
追記2: 2020年05月時点で、v8 と v10 がサポートされています。

ref: https://firebase.google.com/docs/functions/get-started
Cloud Functions は Node v6.14.0 を実行するので、このバージョンでローカルに開発することをおすすめします。

firebase コマンドの導入

$ npm install -g firebase-tools

これで、 firebase コマンドが叩けるようになりました。

不安ならシェルをリロードしても良いでしょう。

$ exec $SHELL -l

プロジェクトの作成

$ mkdir foobar
$ cd foobar
$ firebase init

firebase init はインタラクティブになっており、下記の選択項目が控えている。基本的にはスペースキーで選択してエンターキーで確定し進める。

  • どの機能を利用するか
    • Database: Deploy Firebase Realtime Database Rules
    • Firestore: Deploy rules and create indexes for Firestore
    • Functions: Configure and deploy Cloud Functions
    • Hosting: Configure and deploy Firebase Hosting sites
    • Storage: Deploy Cloud Storage security rules
  • デフォルトプロジェクトの設定

    • [don't setup a default project] (デフォルトプロジェクトを設定しない)
    • Firebase Demo Project (fir-demo-project) (Firebase デモプロジェクト)
    • FooBar (foobar-d0c13) (既存のプロジェクト FooBar)
    • [create a new project] (プロジェクトを新規作成)
  • Cloud Function を記述する言語の選択

    • JavaScript
    • TypeScript
  • ESLintを使用するか (Y/n)

  • 依存パッケージを今すぐインストールするか (Y/n)

コードを書く

firebase init 後には functions ディレクトリ以下にテンプレートが展開されている。Hello World 程度ならこれを編集するだけで良い。

funcions/index.js
const functions = require('firebase-functions');

// Create and Deploy Your First Cloud Functions
// https://firebase.google.com/docs/functions/write-firebase-functions

exports.helloWorld = functions.https.onRequest((request, response) => {
  response.send("Hello from Firebase!");
});

他にも好きな npm パッケージをガシガシいれてコード書いてください。端折ります。

デプロイ手順

まず、ログインしていなければログインする必要がある。Firebase CLI に権限を与えるかどうか尋ねるブラウザが開くので承認するボタンをクリックする。

$ firebase login

そして、デプロイコマンドを叩く

$ firebase deploy

URL が発行されるので、テストアクセスしてみてください。(ちなみに下記のURLは無効なものです)

Function URL (helloWorld): https://us-central1-foobar-d0c13.cloudfunctions.net/helloWorld

ブラウザに Hello from Firebase と表示されたのなら、デプロイは成功。

請求先アカウントについて

請求先アカウントが未登録の状態でも動作確認できました。しかし、ログにも出てくるように当然ながら制限があります。

Screen Shot 2018-07-01 at 23.22.05.jpg

Billing account not configured. External network is not accessible and quotas are severely limited. Configure billing account to remove these restrictions

(請求先アカウントが設定されていません。 外部ネットワークにはアクセスできず、クォータも厳しく制限されています。 これらの制限を削除するには、請求先アカウントを設定してください。)

まとめ

  1. firebase login (一度で良い)
  2. firebase init
  3. functions 配下にコード書く
  4. firebase deploy

超簡単でびっくり。当初は Serverless Framework 経由で Google Cloud Functions を使おうとしていたのですが、調べてみると Firebase Tools でも同等のことができて、さらに楽チンだったのでこちらの方法でやることになったのでした。

Firebase やっていくぞ :muscle:

tdkn
株式会社バックムーンで働いています。
https://tdkn.dev
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