コンテンツにスキップ

自分の Firebase プロジェクトを使う

要点「バックエンド → クラウド」の Firebase コネクタに、Firebase のサービスアカウントのキーファイルを貼り付けます。MonstarX が Google で確認すると、アプリで Firestore、Firebase のサインイン、Cloud Storage、プッシュメッセージ、Realtime Database を使えるようになります。Firestore をアプリのメインのデータ保存先にして、既存のテーブルをコピーすることもできます。

Firebase は、Google が提供するアプリ向けサービスのセットです。Firestore というドキュメントデータベース、サインイン、ファイルストレージ、プッシュ通知などがあります。すでに Firebase プロジェクトを持っているなら(既存のスマートフォンアプリで使っているなど)、それを MonstarX のアプリに接続して、これらのサービスを使えます。

Firebase を1つの用途だけ(たとえばスマートフォンアプリの利用者へのプッシュ通知)に使うこともできますし、Firestore をアプリのデータベースにして、Web アプリとほかのアプリで同じデータを共有することもできます。

  • Firebase プロジェクトと、Firebase コンソールでその設定を開ける権限。
  • Firebase Authentication でサインインしてもらう場合は、その Firebase プロジェクトに追加したウェブアプリ。
  1. Firebase コンソールで プロジェクトの設定 → サービス アカウント(Project settings → Service accounts)を開き、新しい秘密鍵を生成(Generate new private key)をクリックします。JSON ファイルがダウンロードされます。

  2. MonstarX でプロジェクトを開き、上部のバーで バックエンド をクリックし、続けて クラウド をクリックします。

  3. コネクタ で Firebase の横の 接続する をクリックします。

  4. JSON ファイルをテキストエディタで開いてすべてコピーし、サービスアカウントのキーファイル に貼り付けます。MonstarX がそこからプロジェクトの ID を読み取ります。

  5. 任意の欄は、必要な場合だけ入力します。

    • ウェブ API キー — プロジェクトの設定 → 全般 → マイアプリ → ウェブアプリ → apiKey にあります。Firebase Authentication でサインインしてもらう場合にだけ必要です。
    • ストレージバケット — ファイルがプロジェクトのデフォルトのバケットにない場合だけ。
    • Realtime Database の URL — Realtime Database を使う場合だけ。Firestore ではここは不要です。
  6. Firebase を接続 をクリックします。MonstarX は保存する前に Google でキーを確認し、接続済み の横に見つかった内容(プロジェクトの ID と Firestore のコレクション、または Firestore データベースがまだないこと)を表示します。

サービスアカウントのキーの代わりに小さなウェブアプリの設定を貼り付けるなど、違うファイルを貼り付けた場合は、MonstarX が受け付けず、足りない項目を示します。

アプリで Firebase を使って何ができますか?

Section titled “アプリで Firebase を使って何ができますか?”

接続したら、「クラスが中止になったら会員にプッシュ通知を送って」のように、ふつうの言葉で機能を頼みます。MonstarX が Firebase を使って作ります。

Firebase のサービスアプリでできること
Firestoreドキュメントの追加、読み取り、検索、更新、削除、件数の取得
Authentication新規登録とサインイン、パスワードの再設定、ユーザーの管理(ウェブ API キーが必要)
Cloud Storageファイルのアップロード、ダウンロードリンクの取得、一覧と削除
Cloud Messaging端末やトピックへのプッシュ通知の送信
Realtime Databaseデータの読み書き(Realtime Database の URL が必要)

すべてアプリのサーバーで動くので、訪問者にキーが見えることはありません。

Firestore をアプリのデータベースにできますか?

Section titled “Firestore をアプリのデータベースにできますか?”

はい。どのアプリも最初は MonstarX のデータベースを使いますが、データの保存先を Firestore に変えられます。

  1. 先に Firebase を接続します(上記参照)。

  2. バックエンドクラウド で このアプリのデータの保存先 を探します。

  3. Firestore(ご自身の Firebase プロジェクト) を選びます。Firebase を接続する前は「先に Firebase を接続してください」と表示され、選べません。

  4. アプリにすでにデータがある場合は、既存のデータをコピー をクリックして確認し、データを移します。

それ以降は次のようになります。

  • MonstarX はテーブルの代わりにコレクションとドキュメントで作成し、コードを書く前に実際のコレクションを確認します。データにない項目をでっち上げることはありません。
  • バックエンドデータベース には、Firestore の コレクション とそのドキュメントが表示されます。ここでは読み取り専用で、書き込みはアプリが行います。
  • アカウントは MonstarX に残ります。 サインインの方法はこれまでどおりで、バックエンドユーザー も今までどおり使えます。MonstarX が自分のデータベースを削除せずに残しているのはこのためです。

元に戻すには、同じ場所で MonstarX データベース を選びます。アプリは元のデータベースに、そのままの状態で戻ります。

「既存のデータをコピー」は何をしますか?

Section titled “「既存のデータをコピー」は何をしますか?”
  • 各テーブルは同じ名前のコレクションに、各行はドキュメントになります。行の ID がドキュメントの ID になります。
  • もう一度実行すると、ドキュメントが重複するのではなく更新されます。
  • サインイン用の4つのテーブルは、アカウントがある MonstarX のデータベースに残ります。
  • どちらの場所でも、何も削除しません。
  • 大きなアプリは、何回かに分けてコピーされることがあります。リクエストを短く保つために途中で止めたと表示されたら、もう一度実行すると続きからコピーします。
  • Firestore と Supabase は、どちらか一方だけです。 アプリがデータを置くのは1か所です。Supabase から Firestore に移るには、先にデータを MonstarX のデータベースに戻してください。ただし、ストレージ、メッセージ、サインインのための Firebase コネクタ自体は、Supabase と並べて使えます。
  • アプリに Firebase SDK は入りません。 MonstarX は、プレビューでも公開中のアプリでも同じように動く組み込みのヘルパーを通じて Firebase にアクセスします。
  • スマートフォンへのプッシュ通知には、スマートフォンアプリから受け取る端末トークンが必要です。MonstarX は、アプリに渡されたトークンに送ります。
  • Google Cloud Run への公開は別のコネクタです。詳しくは ほかのホスティング先に公開する をご覧ください。
サービスアカウントのキーファイルはどこにありますか?

Firebase コンソールの プロジェクトの設定 → サービス アカウント → 新しい秘密鍵を生成 で取得できます。JSON ファイル全体を サービスアカウントのキーファイル に貼り付けてください。

Firebase をプッシュ通知だけに使えますか?

はい。Firebase を接続してもデータは移りません。このアプリのデータの保存先 で Firestore を選ばない限り、アプリは MonstarX のデータベースを使い続けます。

Firestore に切り替えると、ユーザーは新しいアカウントが必要になりますか?

なりません。アカウントは MonstarX のデータベースに残り、サインインもこれまでどおり使えます。Firestore に移るのは、アプリ自体のデータだけです。

「Firestore データベースがまだない」と表示されます。問題ですか?

Firestore を使いたい場合だけ問題になります。アプリがストレージ、サインイン、プッシュ通知だけを使うこともあるため、接続自体はできます。Firestore を使うには、Firebase コンソールで Firestore データベースを作成してください。

データをコピーすると、何かが削除されますか?

削除されません。既存のデータをコピー は、Firestore のドキュメントを追加または更新するだけです。MonstarX のデータベースはそのまま残ります。