コンソールへ移動

Unity の Firebase Realtime Database を使ってみる

Firebase Realtime Database は NoSQL クラウド データベースを使用してデータの保管と同期を行います。データはすべてのクライアントにわたってリアルタイムで同期され、アプリがオフラインになっても引き続き使用できます。

始める前に

Realtime Database を使用するには、次の手順が必要です。

  • Firebase を使用するように Unity プロジェクトを登録して構成する。

    • Unity プロジェクトですでに Firebase を使用している場合、この登録と構成はすでに行われています。

    • Unity プロジェクトがない場合は、サンプルアプリをダウンロードできます。

  • Unity プロジェクトに Firebase Unity SDK(具体的には FirebaseDatabase.unitypackage)を追加する。

Firebase を Unity プロジェクトに追加するには、Firebase コンソールと開いている Unity プロジェクトの両方でタスクを行う必要があります(コンソールから Firebase 構成ファイルをダウンロードし、それを Unity プロジェクトに移動するなど)。

公開アクセスを設定する

Realtime Database には宣言型のルール言語が用意されているため、データの構造化方法、インデックスの作成方法、データの書き込みと読み取りのタイミングを定義できます。認証ユーザーのみがデータの読み取りと書き込みができるように、データベースへの読み書きアクセスはデフォルトで制限されます。Authentication を設定せずに開始するには、公開アクセスルールを構成します。この場合、アプリを使用しない人を含むあらゆる人々にデータベースが公開されるので、認証の設定時には、データベースへのアクセスを必ず制限してください。

Unity エディタ用に SDK を構成する

Unity エディタでシーンをテストする際は、Realtime Database を使用できます。 その場合は、適切なデータベース URL で SDK を構成する必要があります。それには、データベースの URL を指定して SetEditorDatabaseUrl を呼び出します。

using Firebase;
using Firebase.Unity.Editor;

public class MyScript: MonoBehaviour {
  void Start() {
    // Set this before calling into the realtime database.
    FirebaseApp.DefaultInstance.SetEditorDatabaseUrl("https://YOUR-FIREBASE-APP.firebaseio.com/");
  }
}

公開アクセスルールを使用することにしてデータベース URL を設定した場合は、データの保存と取得に関するセクションに進むことができます。

省略可: 制限付きアクセス用にエディタを設定する

公開アクセスを無効にするルールを使用する場合は、Unity エディタ内でサービス アカウントを使用して実行するように SDK を構成する必要があります。これにより、テストの際にエンドユーザー権限を使用することも可能になります。この設定を行うには、まず、以下の URL にアクセスして新しい p12 ファイルを作成します。

https://console.cloud.google.com/iam-admin/serviceaccounts/project?project=YOUR-FIREBASE-APP

生成されたサービス アカウントのメールアドレスとパスワードを記録しておきます。

Unity プロジェクト内の [Editor Default Resources] に p12 ファイルを配置します。 次に、サービス アカウントの使用を初期化するための以下のコードを追加します。

using Firebase;
using Firebase.Unity.Editor;

public class MyScript: MonoBehaviour {
  void Start() {
    // Set these values before calling into the realtime database.
    FirebaseApp.DefaultInstance.SetEditorDatabaseUrl("https://YOUR-FIREBASE-APP.firebaseio.com/");
    FirebaseApp.DefaultInstance.SetEditorP12FileName("YOUR-FIREBASE-APP-P12.p12");
    FirebaseApp.DefaultInstance.SetEditorServiceAccountEmail("SERVICE-ACCOUNT-ID@YOUR-FIREBASE-APP.iam.gserviceaccount.com");
    FirebaseApp.DefaultInstance.SetEditorP12Password("notasecret");
  }
}

次のステップ

既知の問題

  • 試験運用版の .NET 4.6 Framework を使用している場合、Realtime Database は Unity 2017.2 搭載の macOS で動作しません。これは、2017.2.0 で導入された、その構成の SslStream を壊すリグレッションによるものです。このリグレッションは 2017.3.0 で修正され、Realtime Database はそのバージョンで動作します。