Cloud Functions for FirebaseでHelloWorldを返す関数を作ってみる

技術

はじめに

こんにちは!さいけです。

今回は、「Cloud Functions for FirebaseでHelloWorldを返す関数を作ってみる」記事になります。

Cloud Functions for Firebaseの入門実践な内容になっています。

前提

  • nodeをインストールしている
  • googleアカウントを持っている

そもそもCloud Functions for Firebaseって?

Cloud Functions for Firebaseは、Googleが提供するfirebaseプラットフォーム(mBaaS)のいち機能です。

Cloud Functionsについてざっくりで言うとサーバレスで、簡単に関数処理を実現してくれるマンです。

具体的な内容は公式を見ると良いと思います。

Cloud Functions for Firebase
Cloud Functions for Firebase はサーバーレス フレームワークです。Firebase の機能と HTTPS リクエストによってトリガーされたイベントに応じて、バックエンド コードを自動的に実行できます。

バックエンド環境を構築する手間がなく、小さな関数処理だけさくっと作って利用したい時なんかに大活躍してくれます。

また、FirestoreやRealtimeDatabaseのイベントをフックしてCloud Functionsの関数を実行することもできるので、とても使い勝手が良いです。

AWSでいうとLambdaに近いです。

Cloud Functions for FirebaseでHelloWorldを返す関数を作ってみる

さて、本題です。

firebaseをCLIでつかえるようにする

まずは、CLIでfirebaseコマンドを使えるようにします。

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

$ npm install -g firebase-tools

インストールできたら、正常にインストールされているか以下のコマンドでバージョンを確認してみます。

$ firebase --version
6.10.0

firebaseにログインする

まず、CLIからfirebaseにloginします。

理由は、CLI上からアプリケーションのデプロイをしたいためです。

ログインは以下コマンドで出来ます。

$ firebase login

firebaseのプロジェクトを作る

アプリケーションデプロイ先であるプロジェクトを予め作成します。

以下リンクから、firebase consoleに行きます。

Sign in - Google Accounts

firebase consoleのTOP上で以下画像の「プロジェクトを追加」を押して、プロジェクトの追加をします

プロジェクト名を決めます。今回はサンプルで適当にしています。

入力が完了したら、同意にチェックして「プロジェクトを作成」を押します。

無事に作成できたら下記のような画面に遷移します。

アプリケーションをつくる

まず、ディレクトリを作成して移動します。

$ mkdir hello
$ cd hello

次に、firebaseコマンドでアプリケーションの初期化をします

$ firebase init

上記コマンドを実行すると初期化するに当たり、色々な質問を対話形式で聞かれます。

firebaseの何用のプロジェクトで初期化するか?

今回はCloud Functions用に初期化したいので、Functionsを選んでスペースキーを押し、エンターで決定します。

? Which Firebase CLI features do you want to set up for this folder? Press Space
 to select features, then Enter to confirm your choices.
 ◯ 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

何のプロジェクトに紐付けるか?

先程作った、プロジェクトを選択してエンターで決定します。

? Select a default Firebase project for this directory:
  [don't setup a default project]
❯ hello-20190601 (hello-20190601)
  [create a new project]

何言語にするか?

今回はJavaScriptにします。

JavaScriptを選択してエンターで決定します。

? What language would you like to use to write Cloud Functions? (Use arrow keys)

❯ JavaScript
  TypeScript

ESLintを使うか?

今回は特にこだわりがないのでエンターを押します。(指定しないでエンターをするとNoになります)

? Do you want to use ESLint to catch probable bugs and enforce style? (y/N)

npmで依存関係のインストールをするか?

この事項についても、今回は特にこだわりがないのでエンターを押します。(指定しないでエンターするとYesになります)

? Do you want to install dependencies with npm now? (Y/n)

作成完了!

無事に初期化が完了すると以下が最後に表示されます。

✔  Firebase initialization complete!

一応、展開されているフォルダを見てみます。

$ ls -la
total 24
drwxr-xr-x   6 saike  staff   192  6  1 22:58 .
drwxr-xr-x  49 saike  staff  1568  6  1 22:53 ..
-rw-r--r--   1 saike  staff    56  6  1 22:58 .firebaserc
-rw-r--r--   1 saike  staff  1144  6  1 22:58 .gitignore
-rw-r--r--   1 saike  staff     3  6  1 22:58 firebase.json
drwxr-xr-x   7 saike  staff   224  6  1 22:58 functions

関数処理をつくる

関数処理を作るには、プロジェクト直下のfunctionsディレクトリ内のindex.jsを弄ります。

今回はHello Worldを表示するだけなので、以下のようにします。

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 World!");
});

アプリケーションをプロジェクトにデプロイする

以下コマンドでアプリケーションをデプロイします。

デプロイ先は初期化の際に選択したプロジェクトになります。

$ firebase deploy

上記コマンドを実行して以下が表示されたら無事にデプロイされています。

✔  Deploy complete!

ターミナルに表示されているFunction URLにリクエストしてみましょう。

Function URL (helloWorld): https://xx-xxxxxxx-hello-20190601.cloudfunctions.net/helloWorl

正常にデプロイされていれば、URLにリクエストできるはずです。

ついでにfirebase consoleにも行って確認してみましょう。

作成した関数が追加されていますね。👍

さいごに

今回はCloud Functions for FirebaseでHelloWorldを返す関数を作成してみました。

本記事で紹介した内容は、HelloWorldを表示する関数を作っただけでしたが、応用の仕方によっては色々な使い方ができるので、ぜひ試してみてください。

ちなみに自分はアプリの通知処理に使ったりしています。

では〜

コメント

タイトルとURLをコピーしました