Firebase Functions API開発入門:基本からトリガー、ベストプラクティスまで徹底解説
大平 恵美
大平 恵美
2025-07-24
Firebase FunctionsでAPI開発を始めたい方向けに、開発の基本ルールから実践的なテクニックまでを網羅したガイドです。HTTPSやCloud Storageなど4つの主要なトリガーの使い分け、コードの再利用性を高める設計、環境変数を使った安全な機密情報の管理方法などを分かりやすく解説。この記事を読めば、Firebase Functionsを使った効率的で安全なAPI開発の全体像を掴み、自信を持って第一歩を踏み出せます。

Firebase Functionsを使ったAPI開発の基本

Firebase Functionsは、サーバーの管理をせずにコードを実行できるサービスです。ここでは、API開発における基本的なルールと進め方について解説します。

開発の進め方

  • 作業場所: APIに関するコードは、プロジェクト内の03_functionsフォルダにまとめて記述します。
  • 開発の起点: index.jsというファイルが、すべての処理の始まり(エントリーポイント)となります。
  • API名の付け方: exports.myApiName = ... のように、exportsの後ろに記述した名前がそのままAPI名になります。これはFirebase Functionsのルールなので、この形式に従って命名してください。
  • ライブラリの活用: Firebase Functionsは少し特殊な構造をしていますが、その詳細をすべて理解する必要はありません。外部ライブラリを読み込んで使う一般的な開発スタイルで進められますので、まずは基本的な書き方に慣れましょう。

Firebase Functionsの「トリガー」とは?

Firebase Functionsの最大の特徴は、特定の出来事(イベント)をきっかけ(トリガー)として、自動的にプログラムを実行できる点にあります。ここでは、代表的なトリガーの種類を紹介します。

1. HTTPSリクエスト (https.onRequest)

これは、URLが発行され、外部からアクセスできる最も一般的なAPIです。Webサイトやスマホアプリ、IoTデバイスなど、あらゆるものから呼び出せる万能なAPIと言えます。誰でもアクセスできてしまうため、必要に応じてアクセスできるドメインを制限するなどのセキュリティ対策が別途必要になります。

2. HTTPS Callable (https.onCall)

主に、Firebaseで開発しているWebサイトやアプリの内部で使うためのAPIです。onRequestと違い、面倒なセキュリティ設定をせずとも、Firebaseが認証情報を自動で引き継いでくれるため、安全かつ簡単にAPIを呼び出せます。クライアント側(ブラウザなど)からは、関数名を指定するだけで利用できるため、Firebase環境で開発を行う上で最も迅速かつ便利な方法です。

3. Cloud Storage (storage.bucket(' ').object().onFinalize)

Google Cloud Storageにファイルがアップロードされたことをきっかけに処理を実行するトリガーです。例えば、「CSVファイルがアップロードされたら、その内容を自動でデータベースに登録する」といった、裏側のバッチ処理によく使われます。

4. Pub/Sub スケジューラー (pubsub.schedule)

「毎日深夜1時に実行」「1時間ごとに実行」など、決まった時間に繰り返し処理を実行したい場合に使うトリガーです。定期的なデータ集計やバックアップなどのバッチ処理に最適です。


コーディングスタイルと再利用性

コードをきれいに保ち、効率的に開発するためのポイントです。

  • ロジックの外部ファイル化: index.jsに全ての処理を書いていくと、コードが長くなり非常に見づらくなります。APIの具体的な処理内容は別のファイルに書き出し、index.jsからはそのファイルを呼び出すだけの形にしましょう。これにより、コードの可読性とメンテナンス性が格段に向上します。

  • 高い再利用性: 処理内容を別ファイルに分けておくことで、コードの使い回しが簡単になります。例えば、最初は定期実行のバッチ処理(pubsub.schedule)として作った機能を、後から「好きなタイミングで実行できるAPI(https.onCall)にしたい」といった場合も、呼び出すトリガーの種類を変えるだけで簡単に対応できます。


APIの実装と注意点

実際にAPIを作成する上での具体的なポイントを解説します。

  • 簡単なAPI作成: 多くの場合、既存のAPIのコードをコピーし、データベースへの問い合わせ部分(SQLクエリなど)を書き換えるだけで、新しいAPIを素早く作成できます。

  • 環境変数 (Environment Configuration): データベースのパスワードのような機密情報や、開発環境と本番環境で異なる設定値を、コード内に直接書くのは非常に危険です。このような値は「環境変数」としてFirebaseに設定しておくことで、安全に管理できます。コードからはこの設定値を呼び出して使うため、環境ごとに接続先を切り替えるといったことも簡単に行えます。

  • BigQueryとの連携: Firebase FunctionsからBigQueryへのアクセスは非常にシンプルです。コード内にSQLクエリを記述し、いくつかのオプションを設定するだけで、簡単にデータを取得できます。

  • クライアント(ブラウザ)からの呼び出し: https.onCallで作成したAPIは、WebサイトのJavaScriptから以下のように簡単に呼び出せます。awaitを使うことで、処理が終わるまで待って結果を受け取ることができます。

    // 'apiName'の部分を、作成したAPIの名前に書き換える
    const myFunction = firebase.functions().httpsCallable('apiName');
    const result = await myFunction({ key: 'value' }); // APIにデータを渡すことも可能
    console.log(result.data); // APIからの返り値を取得