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

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

サイト構成 連絡先,業績など 実践知識 データの扱い コンピュータ 教材 サポートページ

目次

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

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. プロジェクトの追加

    まず、「地域/ロケーション」を展開する

    次のように設定する

  6. プロジェクトの作成が終了すると、画面が変わる。「次へ」をクリック

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

    まず、料金プランが「Spark プラン」になっていることを確認する. Spark プランは料金無料のプラン.

  8. クラウド・ファイアストア(Cloud Firestore)を使いたいので使いたいので、「Cloud Firestore」をクリック

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

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

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

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

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

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


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 Admin SDK が表示される。

    ※ この画面では、「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. (オプション)Anaconda を使いたい場合には、次の操作を行う

    Anaconda を使わない場合には、次の操作は無視すること

    conda install protobuf grpcio
    

  3. Firebase Admin SDK のインストール

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

    pip install -U firebase-admin
    

  4. Python プログラムを動かす

    そのために, PyCharmなどにある Python コンソールや, Windows のPythonランチャーである「py」が便利である

    まず、下のソースコードを 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()))
    
    

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

    実行結果は次の通り。

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

  1. Firebase の Web ページを開く

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

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

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

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

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

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

  5. Database」をクリック

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


クエリの例

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

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