Pythonを使用したGoogle Firebase Cloud Firestoreの実践的な活用方法
【目次】
Google Firebaseの主要機能と特徴
高性能なクラウドストレージサービスとして,包括的なインフラストラクチャを提供.

データベース機能:PythonとJavaScriptの双方で最適化された互換性を実現し,シームレスな開発環境を提供.

認証システム(ID,パスワード),セキュリティ管理,課金システムなど,アプリケーション開発に必要な統合機能を完備.
* iOS,Android,Webプラットフォームに完全対応.利用開始にはGoogleアカウントの登録が必要.
環境構築と初期設定
Python のインストール(Windows上)
注:既にPython(バージョン3.12を推奨)がインストール済みの場合は,この手順は不要である.
- コマンドプロンプトを管理者権限で起動する(例:Windowsキーを押し,「cmd」と入力し,「管理者として実行」を選択)
- 以下のコマンドを順次実行し,Pythonをインストールする(下のコマンドにより Python 3.12 がインストールされる).
【関連する外部サイト】
【サイト内の関連ページ】
- Python詳細ガイド:Pythonまとめ »
Git のインストール(Windows 上)
Gitは,ソフトウェア開発におけるソース管理を実現する,分散型バージョン管理システムである.
インストールされるGitは 「Git for Windows」として知られ, GitとMinGWを統合した開発環境である.
- コマンドプロンプトを管理者権限で起動する(例:Windowsキーを押し,「cmd」と入力し,「管理者として実行」を選択\ )
- 以下のコマンドを順次実行し,Gitをインストールする.
winget install --scope machine Git.Git powershell -command "$oldpath = [System.Environment]::GetEnvironmentVariable(\"Path\", \"Machine\"); $oldpath += \";c:\Program Files\Git\cmd\"; [System.Environment]::SetEnvironmentVariable(\"Path\", $oldpath, \"Machin\ e\")"
Firebase Admin SDKの設定と秘密鍵の取得手順
公式ドキュメントに基づいて,以下の手順で設定を実施する.
- Firebaseの公式ポータルサイトにアクセスする.
- メインページから「使ってみる (GET STARTED)」を選択する.
- Googleアカウントによる認証を実行する.
有効なセッションが存在する場合は,自動的に次のステップに移行する.
- Firebaseコンソールへのアクセス権限を確認する.
- コンソール画面から対象となるプロジェクトを選択する.
* 新規プロジェクトを作成する場合は,「プロジェクトを追加」から設定を開始する.
- Project Overviewメニューから設定ボタンをクリックする.
- メニューから「プロジェクトを設定」を選択する.
- 左側のサイドメニューから「サービスアカウント」を選択する.
- 開発に使用する言語として「Python」を選択する.
選択後,Firebase Admin SDKの設定に必要なコードスニペットが自動的に表示される.
* この画面では「Firebase サービスアカウントを使用したPythonアプリケーションの認証機能」の詳細が確認できる.
- 「新しい秘密鍵の生成」ボタンを選択する.
- 表示される確認ダイアログで「キーを生成」を実行する.
- 生成された認証用JSONファイルのダウンロードを確認する.
ダウンロードされた認証用JSONファイルのファイル名を記録する(後続の設定プロセスで使用).
Firebase Admin SDKのPython環境への導入
セットアップガイドおよび クイックスタートの手順に従って実装を進める.
- Windows環境でコマンドプロンプトを管理者権限で起動する.
- Firebase Admin SDKのインストールを実行する.
以下のコマンドを実行する.
pip install -U firebase-admin
- Pythonプログラムで動作確認を実施する.
効率的な開発環境として,Jupyter Qt Console,Spyder,PyCharm,PyScripterなどの統合開発環境の利用を推奨する.
以下のサンプルコードを実行する.
エディタで「H:/my-project-abcde-firebase-adminsdk-q53ez-5d420dbcf2.json」を,ダウンロードした認証用JSONファイルの実際のパスに置き換える.
このプログラムは,データベース内の「products」コレクションに格納されているドキュメントを取得して表示する. 実行結果の例も併せて提示する.
import firebase_admin from firebase_admin import credentials from firebase_admin import firestore cred = credentials.Certificate('H:/my-project-abcde-firebase-adminsdk-q53ez-5d420dbcf2.json') app = firebase_admin.initialize_app(cred) db = firestore.client() ref = db.collection(u'products') docs = ref.stream() for doc in docs: print(u'{} => {}'.format(doc.id, doc.to_dict()))
以下のようなコレクション構造を前提としている.
実行結果:
* Webインターフェースを使用したデータベース管理手順
- Firebaseポータルサイトにアクセスする.
https://firebase.google.com/?hl=ja
* 必要に応じてGoogleアカウントでの認証が要求される.
- 「使ってみる (GET STARTED)」を選択する.
- Firebaseコンソールの表示を確認する.
- 管理対象のプロジェクトを選択する.
* 新規プロジェクトが必要な場合は「プロジェクトを追加」から作成することができる.
- 左側のサイドメニューから「Database」を選択する.
- データベース管理画面でコレクションとドキュメントの作成・編集作業が可能となる.
実践的なクエリ例
前述のコード例に続いて,以下のクエリ処理を実行する. 「u'name', u'==', u'apple'」は文字列の完全一致検索を実行する処理である.
a = ref.where(u'name', u'==', u'apple') docs = a.stream() for doc in docs: print(u'{} => {}'.format(doc.id, doc.to_dict()))
実行結果:

日時データの比較クエリ例
「u'time', u'>', datetime(2019,4,13,3,10,0)」の条件式でPythonのdatetimeオブジェクトを使用した日時比較クエリを実行する.
import datetime a = ref.where(u'time', u'>', datetime(2019,4,13,3,10,0)) docs = a.stream() for doc in docs: print(u'{} => {}'.format(doc.id, doc.to_dict()))