トップページ -> データベース研究スタート -> NoSQL データベースとインターネットストレージ -> Python で Google Firebase の Cloud Firestore (クラウド・ファイアストア)を使ってみる
[サイトマップへ]

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

金子邦彦研究室: データベース、人工知能(AI)、データサイエンスの融合により不可能を可能にする

目次

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

Google Firebase でできること

オンラインストレージ

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

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

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


前準備

Python, git のインストール

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


クラウド・ファイアストア(Cloud Firestore)を扱うプロジェクトの新規作成

  1. Firebase の Web ページを開く

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

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

  2. スタートガイド (GET STARTED)」をクリック

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

  4. Firebase コンソールの画面で、「プロジェクトを追加」をクリック

    ※ このとき、いつまで待っても画面が変わらないというときは、Webブラウザで「サインアウト」してもう1度やり直すとうまく行くかもしれません.

  5. プロジェクトの追加

    プロジェクト名: 何でもよいが、あとで分かりやすい名前

    アナリティクスの地域: 日本

    チェックボックス: 同意できる場合のみチェック(同意できないときは、Firebase を使わない)

  6. 次へ」をクリック

  7. 画面が変わるので確認.

    まず、料金プランが「Spark プラン」になっていることを確認する. Spark プランは料金無料のプラン. データベースを使いたいので、「Cloud Firestore」をクリック

  8. クラウド・ファイアストア(Cloud Firestore)を作成して使いたいので、Cloud Firestore の下の「データベースを作成」をクリック

  9. クラウド・ファイアストア(Cloud Firestore)のセキュリティルールでは、 ロックモードかテストモードを選ぶ.

    ※ ここでは、試用することにしたい(実データは入れずに、手軽に試してみたい)ので、 「テストモードで開始」を選び「有効にする」をクリック

  10. データベースの作成が始まる。しばらく待つ。

  11. データベースの作成が終わると、画面が変わるので確認する

サーバーに Firebase Admin SDK を追加

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

サービスアカウントの認証情報をダウンロード

  1. Firebase の Web ページを開く

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

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

  2. スタートガイド (GET STARTED)」をクリック

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

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

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

  5. プロジェクトの全般のWebページで、「Project Overview」の右横のボタンをクリック

  6. プロジェクトの設定」をクリック。

  7. サービスアカウント」をクリック。

  8. Python」を選ぶ

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

  9. 新しい秘密鍵の生成」をクリック

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

  11. JSONファイルがダウンロードされる

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

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 プログラムを動かす

    そのために, PyCharmなどにある Python コンソールを使う

    H:/my-project-abcde-firebase-adminsdk-q53ez-5d420dbcf2.json」のところは、先ほどダウンロードした JSON ファイル名にすること。

    次のプログラムは、データベースの中の、「users」という名前のドキュメントについて表示を行うもの。 実行結果例も付けている。

    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'users')
    docs = ref.stream()
    
    for doc in docs:
        print(u'{} => {}'.format(doc.id, doc.to_dict()))
    
    

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

    実行結果は次の通り。

    クエリの例

    上のプログラムに続いて、次のようなクエリを実行してみる。 「u'first', u'==', u'kunihiko'」は、文字列の完全一致

    a = ref.where(u'first', u'==', u'kunihiko')
    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()))
    

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