金子邦彦研究室情報工学全般Google FirebasePython で Google Firebase の Cloud Firestore (クラウド・ファイアストア)を使ってみる

Python で Google Firebase の Cloud Firestore (クラウド・ファイアストア)を使ってみる

目次

  1. Google Firebase でできること
  2. 前準備
  3. クラウド・ファイアストア(Cloud Firestore)を扱うプロジェクトの新規作成
  4. Firebase Admin SDK を追加
  5. クエリの例

Google Firebase でできること

オンラインストレージ

[image]

データベース: Python, JavaScript と相性が良い.

[image]

その他、認証(ID,パスワード)など(セキュリティや課金に必要)

※ iOS, Android, Web で動く.使用には Google のアカウントが必要

前準備

Python, Git のインストール: 別ページ »で説明

git の URL: https://git-scm.com/

以下,Windows でインストール済みであるものとして説明を続ける.

Firebase Admin SDK 構成スニペットと秘密鍵の入手

https://firebase.google.com/docs/admin/setup?hl=ja#initialize_the_sdk の記述に従う

  1. Firebase の Web ページを開く

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

  2. 使ってみる (GET STARTED)」をクリック

    [image]
  3. google のアカウント(IDとパスワード)でログインする

    すでにログイン済みのときは,ログインのための画面が出ない.次へ進む.

  4. Firebase コンソールの画面に変わるので確認する

    [image]
  5. Firebase コンソールの画面で、使用したいプロジェクトを選ぶ

    ※ このとき、プロジェクトを新規作成したいときは、「プロジェクトを追加」をクリックして、プロジェクトの新規作成を行う

    [image]
  6. プロジェクトの全般で、「Project Overview」の右横のボタンをクリック

    [image]
  7. プロジェクトを設定」をクリック。

    [image]
  8. サービスアカウント」をクリック。

    [image]
  9. Python」を選ぶ

    このとき、画面には、Firebase Admin SDK 構成スニペットが表示される。

    [image]

    ※ この画面では、「Firebase サービスアカウントを使用し、Python プログラムで認証できる」ことが確認できる

    [image]
  10. 新しい秘密鍵の生成」をクリック

    [image]
  11. 表示を確認したのち、「キーを生成」をクリック

    [image]
  12. JSONファイルのダウンロードが始まる

    このとき、ダウンロードされたJSONファイルのファイル名を確認しておく(あとでファイル名を使用する)

    [image]

Python 用の Firebase Admin SDK のインストール

https://firebase.google.com/docs/admin/setup?hl=ja#initialize_the_sdk, https://firebase.google.com/docs/firestore/quickstart?hl=ja の記述に従う

  1. Windowsコマンドプロンプトを管理者として開く
  2. Firebase Admin SDK のインストール

    コマンドプロンプトで,次のコマンドを実行

    pip install -U firebase-admin
    
  3. いまからPython プログラムを動かす

    Python のプログラム作成には,開発環境や Python コンソール(Jupyter Qt ConsoleSpyderPyCharmPyScripter など)が便利.

    下の Python プログラムを実行する

    次に、Python コンソールの編集機能を使って、「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()))
    
    

    次のようにコレクションとドキュメントを作成していたとする。

    [image]

    実行結果は次の通り。

    [image]

Web ブラウザを使って、データベースの確認、コレクションの追加、ドキュメントの追加を行いたいときの手順

  1. Firebase の Web ページを開く

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

    ※ このとき、google のアカウント(IDとパスワード)が必要になる可能性がある

  2. 使ってみる (GET STARTED)」をクリック

    [image]
  3. Firebase コンソールの画面に変わるので確認する

    [image]
  4. Firebase コンソールの画面で、使用したいプロジェクトを選ぶ

    ※ このとき、プロジェクトを新規作成したいときは、「プロジェクトを追加」をクリックして、プロジェクトの新規作成を行う

    [image]
  5. Database」をクリック

    [image]
  6. 次の画面で、データベースの確認、コレクションの追加、ドキュメントの追加を行うことができる

    [image]

クエリの例

上のプログラムに続いて、次のようなクエリを実行してみる。 「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()))

実行結果は次のようになる

[image]

日付の大小比較の例

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()))

実行結果は次のようになる