FirebaseのFunctionsでPythonを動かす方法

  • このエントリーをはてなブックマークに追加

 Pythonのコードをクラウドで動かしてみたいけれど、何から始めればいいか分からないという方におすすめなのが FirebaseのCloud Functionsです。この記事では、初めての方でも理解できるように、Firebaseの概要からPython関数のデプロイ手順までを一歩ずつ解説します。

こんにちは。wat(@watlablog)です。モバイルアプリ開発でもPythonを使うために、FirebaseCloud Functionsに入門します!

この記事のモチベーション

Firebaseの使い方を学ぶ

 Firebaseは、Googleが提供しているクラウド開発プラットフォームです。アプリやWebサービスを作るときに必要になる以下の機能をまとめて使うことができます。

  • ユーザー認証
  • データベース
  • ストレージ(画像や音声ファイルの保存)
  • サーバーレス関数(Python等を使う)
  • ホスティング(Webアプリの公開)
  • 通知や分析(Push通知やアクセス解析)

 上記アプリやWebサービスを作るための基盤が揃っているため、Firebaseを使うことで開発者はアプリの機能づくりに集中できるのが魅力です。

Advertisements

 正直自分はWebアプリなどを作ったことがないので、これらを一から構築する技術がありません。いくら生成AI時代といっても、素人が作ったログインシステムはセキュリティ的に不安しかありません。いずれはその辺の中身も理解したいけど、今回はFirebaseを使って楽をする方法から入ります。

アプリでPythonを動かす

 FirebaseではCloud Functionsを使ってサーバーレスでPythonなどを実行できる場所を用意できます。さらに、Cloud Functions側でアクセスに対してスケーリングもしてくれるとのことで、開発者はサーバー台数や性能を気にしなくても良いです。

 このブログは基本的にPythonに関する内容が多いです。以下のようにモバイルアプリをつくろうと奮闘した記事もいくつかありますが、イマイチ思った通りのものができない悩みがありました。
SwiftUIで録音した音声を平均化FFTするアプリをつくってみた
PythonアプリをiOSで実機テスト:kivy-iosの使い方

Pythonだけのデスクトップアプリであれば思った通りのことができるのに、やはりモバイルアプリ側で全部やろうとするとかなり制約が…!

 バックエンドでPythonを動かせば、モバイルアプリでも自分の作りたいものを作りやすいのでは?と思ったのが、本記事をまとめるモチベーションです。
 この記事ではまずFirebaseのCloud Functionsを使ってPythonを動かす「Hello World!」的な内容でまとめます。

動作環境

 この記事は次の環境で動作確認を行いました。

Mac OS macOS Sonoma 14.5
チップ Apple M3
CPU 1.4[GHz]
メモリ 16[GB]

FirebaseのCloud FunctionsでPythonを使う流れ

Firebaseプロジェクトの準備

 最初にFirebaseのプロジェクトを作成します。Googleのアカウントがあれば誰でも自分のコンソールにアクセスできます。以下のURLからFirebaseのWebサイトにいきましょう。

https://firebase.google.com/?hl=ja

 コンソールへ移動をクリックします。

 Firebaseプロジェクトを設定して開始をクリックします。

 プロジェクトに名前をつけます。名前はなんでも良いですが、今回はPythonDemoAppとしました。

 順次画面を進めていくと以下の画面になり、プロジェクトの準備は完了です。

プロジェクトをBlazeにアップデート

 Cloud Functionsは無料枠のSparkでは使えません(残念)。ここでBlazeへアップデートしておきましょう。ただし、最初は$300分のクレジットが付与されるのでチュートリアルや自分のアプリを試しで作ってみる程度の動作はしばらくこの範囲で使えそうです。
 また、かなり大規模なアプリで大勢の人に使ってもらうことがない限りはびっくりした金額にはならないでしょう。以下のQiita記事はイメージを掴むための参考です。
・Qiita:「Cloud functions VS AWS Lambda」を「お金」と「始めやすさ」で勝手に比較してみた

 ちなみに$300分のクレジットは2025年10月のレートで¥44,914でした。結構遊べそうですね。

$300分のクレジット

 また、Blazeへのアップデートはプロジェクトに対して行います。別のプロジェクトはSparkの範囲で使うといったこともできるので、テスト用・公開用の用途別に設定をしましょう。プロジェクト毎に請求先アカウントを設定できるので、チーム開発等にも使えそうですね。

Functionsを選択

 コンソール画面から構築Functionsを選択します。

Functionsの設定画面

 次の画面になるので、始めるをクリックしましょう。

Functionsの開始

Firebase CLIのインストール

 Functionsの設定という画面が表示され、簡単なインストラクションが始まります。基本はこの指示に従うだけでデプロイまで進められます。

Functionsの設定

 それでは自分の開発PCにFirebase CLIをインストールします。次のコマンドをターミナルに入力しましょう。

 次のコマンドでバージョン確認ができれば、インストールは正常に行われています。

CLI上でログイン

 インストラクションにはないですが、ここで一度ログインをしておきましょう。次のコマンドでCLI上でFirebaseにログインします。

 自動でWebブラウザが立ち上がり、認証画面が表示されるはずです。認証を行なったらまたターミナルに戻ります。

プロジェクトの開始

 そしてPC上のプロジェクトフォルダを作成し、ターミナルの cdコマンドでプロジェクトフォルダに入ります。

 プロジェクトフォルダで以下のコマンドを実行し、プロジェクトを開始しましょう。

  initコマンドを実行すると、ターミナル上でいくつか操作が必要です。最初はFunctionsの使用を指定するために、方向キーでFunctionsの位置にカーソルを持ってきてスペースキーでチェックをつけ、Enterを押します。

Functionsの選択

次の選択です。今回はWeb上でプロジェクトを準備したので、Use an existing projectを選択します。Enterを押すと、すでに準備してあるプロジェクトが選択できるようになっているため、選択してEnterを押します。

プロジェクトの選択

 言語にPythonを選びます。

言語の選択

 「Do you want to install dependencies now? (Y/n)」と聞かれますが、まだ依存ライブラリをインストールしなくても良いので一度nを入力してEnterを押します。

 ここまでの操作で自動で必要なファイルが生成され、次のフォルダ構成となります。

自動生成されるフォルダ構成

Pythonプログラマーとしてはおなじみのファイルが作成されましたね!

Pythonのバージョンを指定して開発したいとき

 ここまでの操作で venvが作成されていますが、システムに複数のPythonが入っている場合はバージョンを指定しなおしたい場合があります。その場合、 functionsフォルダ直下の venvを作成しなおしましょう。ここでは 3.12を指定して仮想環境を作成します。

  venv activateして、関連のライブラリをインストールします。ここで、 firebase-functions firebase-adminはデプロイするときにも必要なので pip installしておきます。他にも関連ライブラリがあれば pip installしても良いですが、デプロイ後のクラウド環境の方で自動インストールされるので必ずしも必要ではありません。

 インストールが終了したら requirements.txtを出力しておきましょう。

 Pythonのバージョンを指定したので、手動でプロジェクトのルートディレクトリにあるfirebase.jsonを手動編集します。こちらの環境では 313になっていた数値を 312に変更しました。この場合、 Python 3.13で開発していれば変更は不要です。

main.pyの変更

 デフォルトで作成されているmain.pyを修正します。Firebaseでは、このmain.pyに書かれた関数毎にエントリポイントが設定されます(エントリポイントとは、サーバー側で最初に実行される関数です)。デフォルトで記載されているコードのコメントアウトを外していき、次の最小コードとしましょう。

デプロイ

 プロジェクトのルートディレクトリ( functionsの一個上)まで cdコマンドで移動し、次のデプロイコマンドを実行します。

 デプロイが成功すると次の画面になります。How many days do you want to keep container images before they'er deleted?という問いは、どうやら古い実行環境のコンテナイメージ(Dockerイメージみたいなものかな?後で調べる)を何日で削除するかというものみたいです。古いコンテナイメージが削除されたとしても、現在デプロイされている状態はなくならないので、とりあえず7(7日)と入力しておきました。

 この中でFunction URLの項目のURLを覚えておきましょう。

デプロイ後

動作確認

 バックエンドでPythonが動いていることの動作確認は、次のコマンドを実行するか、URLをブラウザのアドレス欄に入力してみましょう。Hello World!と表示されたらPythonが動いています!

 ブラウザで確認した結果がこちら。

動作確認結果(ブラウザ)

まとめ

 バックエンドでPythonを動かすアプリ制作のために、FirebaseのCloud Functionsを使ってみました。プロジェクト単位でBlazeへのアップデートは必要ですが、最初のスタートにはちょうど良いかもしれません。
 この記事ではFirebase CLIのインストールから各コマンドを一つずつ紹介してデプロイ、動作確認まで行いました。ここまでで基本はわかったので、次回はより実践的な機能の実装を試していきたいと思います。

本日はここまで!FirebaseでCloud Functionsを使って、バックエンドでPythonを動かす基本が学べました!
Xでも関連情報をつぶやいているので、wat(@watlablog)のフォローお待ちしています!

SNSでもご購読できます。

コメントを残す

*