Unity の Firebase Realtime Database を使ってみる

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

準備

Firebase Realtime Database を使用するには、Firebase プロジェクトを作成してから、Firebase Unity SDK パッケージを Unity プロジェクトに追加する必要があります。

設定

前提条件

Android

  • Unity 5.0 以降
  • Android NDK バージョン 10d 以降

iOS

  • Unity 5.0 以降
  • Xcode 7.0 以降

Unity プロジェクトをまだ用意していない場合は、いずれかのクイックスタート サンプルをダウンロードし、特定の Firebase 機能をお試しいただけます。クイックスタートを使用する場合は、次のステップでバンドル識別子が必要になるため、プロジェクト設定からバンドル識別子を忘れずに取得してください。

Firebase コンソールでアプリを設定する

アプリに Firebase を追加するには、Firebase プロジェクトと、アプリ用の Firebase 構成ファイルが必要です。

Firebase プロジェクトをまだ用意していない場合は、Firebase コンソールで Firebase プロジェクトを作成します。モバイルアプリと関連付けられた既存の Google プロジェクトがある場合は、[Google プロジェクトをインポート] をクリックします。それ以外の場合は、[プロジェクトを追加] をクリックします。

Android

  1. [Android アプリに Firebase を追加する] をクリックし、設定手順に沿って操作します。既存の Google プロジェクトをインポートする場合、このステップは自動的に実行されることがあります。その場合は、構成ファイルをダウンロードするだけでかまいません。
  2. 求められたら、アプリのパッケージ名を入力します。必ずアプリで使用しているパッケージ名を入力してください。パッケージ名を設定できるのは、アプリを Firebase プロジェクトに追加するときだけです。
  3. 指示されたら google-services.json ファイルをダウンロードします。このファイルはいつでも再ダウンロードできます。
  4. このファイルを、プロジェクトのアセット フォルダ内の任意の場所にコピーします。

iOS

  1. [iOS アプリに Firebase を追加する] をクリックして設定手順に沿って操作します。既存の Google プロジェクトをインポートする場合、このステップは自動的に実行されることがあります。その場合は、構成ファイルをダウンロードするだけでかまいません。
  2. 求められたら、アプリのバンドル ID を入力してください(必ずアプリで使用しているバンドル ID を入力してください)。バンドル ID を設定できるのは、アプリを Firebase プロジェクトに追加するときだけです。
  3. 指示されたら GoogleService-Info.plist ファイルをダウンロードします。このファイルはいつでも再ダウンロードできます。
  4. プロジェクトに GoogleService-Info.plist ファイルを追加します。

    • Firebase コンソールからダウンロードした GoogleService-Info.plist を、Unity プロジェクトの任意のフォルダにドラッグします。

アプリに Firebase Unity SDK を追加する

  1. Firebase Unity SDK をダウンロードします。
  2. [Assets] > [Import Package] > [Custom Package] メニュー項目を選択します。
  3. 先にダウンロードした Firebase Unity SDK から FirebaseDatabase.unitypackage パッケージをインポートします。
  4. [Import Unity Package] ウィンドウが表示されたら [Import] ボタンをクリックします。

アプリをビルドする

Android

  1. [File] > [Build Settings] メニュー項目を選択します。
  2. [Platform] リストから [Android] を選択します。
  3. [Switch Platform] をクリックし、ターゲット プラットフォームとして [Android] を選択します。
  4. Unity ステータスバーの右下隅にあるスピナー(コンパイル中)アイコンが停止するまで待ちます。
  5. [Build and Run] をクリックします。

iOS

  1. [File] > [Build Settings] メニュー項目を選択します。
  2. [Platform] リストから [iOS] を選択します。
  3. [Switch Platform] をクリックし、ターゲット プラットフォームとして [iOS] を選択します。
  4. Unity ステータスバーの右下隅にあるスピナー(コンパイル中)アイコンが停止するまで待ちます。
  5. [Build and Run] をクリックします。

公開アクセスを設定する

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 はそのバージョンで動作します。

フィードバックを送信...

ご不明な点がありましたら、Google のサポートページをご覧ください。