ここではCloud Functions(for Firebase)を利用するための最低限の手順をメモしてます。
なお、本編で扱うのはHTTPリスクエストによるトリガーなので、Firestoreトリガー等はこちらをご覧ください。
インストールと利用設定
Cloud Functions(以下,functions)の開発をするためにはfirebase-toolsがいるのでインストールする。
npm install -g firebase-tools
で、作業場所でinitする。
mkdir test
cd test
firebase init
すると、いろいろ聞いてくる。
どの機能使う?
上下矢印で移動し、スペースで選択できる。Functionsを選ぶ。
? Which Firebase CLI features do you want to set up for this folder? ...
 ◯ 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
どのプロジェクト使う?
だいたい既存プロジェクトがあると思うんドエ、existing projectを選ぶ(1つしかプロジェクトが無いと、直接プロジェうと名が表示されるはずなのでそれを選ぶ)。
? Please select an option: (Use arrow keys)
❯ Use an existing project
  Create a new project
  Add Firebase to an existing Google Cloud Platform project
  Don't set up a default project
複数ある場合は、プロジェクトリストが表示されるので利用するものを選ぶ。
どの言語使う?
おとなしくJSにしておく。
? What language would you like to use to write Cloud Functions? (Use arrow keys)
❯ JavaScript
  TypeScript
ESLintつかう?
標準Noらしいので、そのままReturn。
? Do you want to use ESLint to catch probable bugs and enforce style? (y/N)
依存ファイル入れる?
標準Yesなので、そのままReturn。
? Do you want to install dependencies with npm now? (Y/n)
で、作業ディレクトリ直下に、functionsディレクトリができており、その中にindex.jsができてるので、それをいじる。
実装
最初からhelloWorldが実装され、コメントアウトされているので、コメントインして実行してみる。
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!");
});
実行
いちおうログインコマンドを打ってみる。ログインされていればAleady logged inとかでる。
firebase login
ログインできていればdeployする。
firebase deploy
デプロイが完了すると、コンソールにURLが表示されるのでそれを実行する。
URLはfirebase console(web)のFunctionsからも確認できます。
ローカルで実行
firebase serve
Error: Port 5000 is not open, could not start functions emulator.
firebase emulators:start &
firebase serve
表示される(localhostの)URLを実行してみます。
パラメータを受け取る
GET
QueryStringの値はquery['param_name']で取得できるようです。
const functions = require('firebase-functions');
exports.helloWorld = functions.https.onRequest((request, response) => {
    //パラメータ取得
    const name = request.query['name'];
    const age = request.query['age'];
    //response
    response.send("こんにちは。" + name + "さん。" + age + "歳ですね。");
});
POST
postの値はbody['param_name']で取得できるようです。
const functions = require('firebase-functions');
exports.helloWorld = functions.https.onRequest((request, response) => {
    //パラメータ取得
    const name = request.body['name'];
    const age = request.body['age'];
    //response
    response.send("こんにちは。" + name + "さん。" + age + "歳ですね。");
});
DB(Firestore)を利用する
FunctionsからFirestoreを利用するにはfirebase-adminを利用するようです。
インストールがまだならインストールします。
npm install -g firebase-admin
下記はcollectionとdocを指定して取得する例です。
const functions = require('firebase-functions');
const admin = require('firebase-admin');
admin.initializeApp();
const db = admin.firestore();
exports.helloDB = functions.https.onRequest((request, response) => {
    db.collection('users').doc('12345').get()
        .then(doc => {
            if (doc.exists) {
                response.send(doc.data());
            } else {
                response.send("no data");
            }
        })
        .catch(e => {
            response.send("not found");
        });
});
ローカル環境での利用
普通にfirebase serveをするとエラーとなりました。どうやらクラウドにあるfirestoreを見に行けてないようです。
serveでfirestoreを利用するには、環境変数に認証情報を読み込ませて置く必要があるようです。
ずっと使うなら.bash_profileなどに記述してもいいかもしれません。
export GOOGLE_APPLICATION_CREDENTIALS=~/serviceAccountKey.json
そもそもサービスアカウント(の秘密鍵)って何?って言う人はここを参考にしてください。
その他
本格的にAPI作る場合はexpress入れたほうがノウハウの共有とかできていいのかな。