Firebase を C++ プロジェクトに追加する

Firebase SDK 上に C++ インターフェースを提供する Firebase C++ SDK を使用して、C++ ゲームをパワーアップしましょう。

プラットフォーム固有のコードを記述することなく、C++ コードのみで Firebase にアクセスできます。また、Firebase で使用される多くの言語固有のイディオムも、Firebase SDK によって C++ デベロッパーになじみのあるインターフェースに変換されます。

Firebase でゲームをパワーアップする方法の詳細については、Firebase のゲームのページをご覧ください。

C++ プロジェクトに Firebase を追加済みの場合は、Firebase C++ SDK の最新バージョンを使用していることを確認します。

前提条件

  • 以下をインストールします。

    • Xcode 13.3.1 以降
    • CocoaPods 1.12.0 以降
  • プロジェクトのターゲットが、次のプラットフォーム バージョン以降であることを確認します。

    • iOS 11
    • tvOS 12
  • 実機を設定するか、シミュレータを使用してアプリを実行します。

  • Google アカウントを使用して Firebase にログインします。

ステップ 2: Firebase プロジェクトを作成する

C++ プロジェクトに接続する Firebase プロジェクトを作成して、C++ プロジェクトに Firebase を追加できるようにします。Firebase プロジェクトの詳細については、Firebase プロジェクトについて理解するをご覧ください。

ステップ 3: アプリを Firebase に登録する

Apple アプリで Firebase を使用するには、アプリを Firebase プロジェクトに登録する必要があります。アプリの登録は、プロジェクトへのアプリの「追加」とも呼ばれます。

  1. Firebase コンソールに移動します。

  2. プロジェクトの概要ページの中央にある iOS+ アイコンをクリックして、設定ワークフローを起動します。

    すでに Firebase プロジェクトにアプリを追加している場合は、[アプリを追加] をクリックするとプラットフォームのオプションが表示されます。

  3. アプリのバンドル ID を [Apple バンドル ID] フィールドに入力します。

  4. (省略可)その他のアプリ情報(アプリのニックネームApp Store ID)を入力します。

  5. [アプリを登録] をクリックします。

ステップ 4: Firebase 構成ファイルを追加する

  1. [GoogleService-Info.plist をダウンロード] をクリックして、Firebase Apple プラットフォーム構成ファイルを取得します。

  2. IDE で C++ プロジェクトを開き、構成ファイルを C++ プロジェクトのルートにドラッグします。

  3. メッセージが表示されたら、構成ファイルをすべてのターゲットに追加するオプションを選択します。

Firebase コンソールでのセットアップ作業はこれで完了です。次の Firebase C++ SDK を追加するに進んでください。

ステップ 5: Firebase C++ SDK を追加する

このセクションの手順は、サポートされている Firebase プロダクトを Firebase C++ プロジェクトに追加する方法の一例です。

  1. Firebase C++ SDK をダウンロードし、適切な場所で解凍します。

    Firebase C++ SDK は特定のプラットフォームを必要としませんが、プラットフォーム固有のライブラリが複数収録されています。

  2. 解凍した SDK から、Firebase Pod を追加します。

    1. Podfile がない場合は作成します。

      cd your-app-directory
      pod init

    2. アプリで使用したい Firebase Pod を Podfile に追加します。

      アナリティクスが有効な場合

      # Add the Firebase pod for Google Analytics
      pod 'FirebaseAnalytics'
      # Add the pods for any other Firebase products you want to use in your app # For example, to use Firebase Authentication and Firebase Realtime Database pod 'FirebaseAuth' pod 'FirebaseDatabase'

      アナリティクスが無効な場合

      # Add the pods for the Firebase products you want to use in your app
      # For example, to use Firebase Authentication and Firebase Realtime Database
      pod 'FirebaseAuth'
      pod 'FirebaseDatabase'
    3. Pod をインストールし、Xcode で .xcworkspace ファイルを開きます。

      pod install
      open your-app.xcworkspace

  3. 解凍した SDK から Firebase フレームワークを追加します。

    通常もっとも簡単なのは、Finder ウィンドウから Xcode のプロジェクト ナビゲータ ペイン(デフォルトでは一番左側のペイン。Xcode の左上にあるファイル アイコンのクリックでも表示できます)に直接ドラッグする方法です。

    1. Firebase プロダクトの使用に必要な Firebase C++ フレームワーク firebase.framework を追加します。

    2. 使用する各 Firebase プロダクト用のフレームワークを追加します。たとえば、Firebase Authentication を使用するには、firebase_auth.framework を追加します。

  4. Firebase コンソールの設定ワークフローに戻り、[次へ] をクリックします。

  5. アナリティクスを追加した場合は、アプリを実行して、Firebase の統合に成功したという確認を Firebase に送信します。それ以外の場合は、この検証手順をスキップできます。

    デバイスログには、初期化が完了したという Firebase の確認が表示されます。ネットワークへのアクセスが有効なエミュレータでアプリを実行した場合、Firebase コンソールによってアプリの接続完了が通知されます。

これで設定は完了です。C++ アプリは Firebase プロダクトを使用するように登録され、構成されました。

使用可能なライブラリ

C++ Firebase ライブラリの詳細については、リファレンス ドキュメントGitHub のオープンソース SDK リリースをご覧ください。

Apple プラットフォームで利用可能なライブラリ

Android 用の C++ ライブラリは、この設定ページの Android バージョンで確認できます。

Firebase プロダクトでは、依存関係がそれぞれ異なります。必要な Firebase プロダクトについて、リストに記されているすべての依存関係を Podfile と C++ プロジェクトへ追加してください。

それぞれの Firebase プロダクトでサポートされるのは、一部の Apple OS プラットフォーム(iOS、tvOS など)のみである場合があります。それぞれのライブラリでサポートされているプラットフォームについては、C++ と Firebase の詳細をご覧ください。

Firebase プロダクト フレームワークと Pod
AdMob (必須)firebase.framework
firebase_admob.framework
(必須)firebase_analytics.framework

pod 'FirebaseAdMob', '10.22.0'
(必須)pod 'FirebaseAnalytics', '10.22.0'
アナリティクス (必須)firebase.framework
firebase_analytics.framework

pod 'FirebaseAnalytics', '10.22.0'
App Check (必須)firebase.framework
firebase_app_check.framework

pod 'FirebaseAppCheck', '10.22.0'
Authentication (必須)firebase.framework
firebase_auth.framework

pod 'FirebaseAuth', '10.22.0'
Cloud Firestore (必須)firebase.framework
firebase_firestore.framework
firebase_auth.framework

pod 'FirebaseFirestore', '10.22.0'
pod 'FirebaseAuth', '10.22.0'
Cloud Functions (必須)firebase.framework
firebase_functions.framework

pod 'FirebaseFunctions', '10.22.0'
Cloud Messaging (必須)firebase.framework
firebase_messaging.framework
(推奨)firebase_analytics.framework

pod 'FirebaseMessaging', '10.22.0'
(推奨)pod 'FirebaseAnalytics', '10.22.0'
Cloud Storage (必須)firebase.framework
firebase_storage.framework

pod 'FirebaseStorage', '10.22.0'
Dynamic Links (必須)firebase.framework
firebase_dynamic_links.framework
(推奨)firebase_analytics.framework

pod 'FirebaseDynamicLinks', '10.22.0'
(推奨)pod 'FirebaseAnalytics', '10.22.0'
Realtime Database (必須)firebase.framework
firebase_database.framework

pod 'FirebaseDatabase', '10.22.0'
Remote Config (必須)firebase.framework
firebase_remote_config.framework
(推奨)firebase_analytics.framework

pod 'FirebaseRemoteConfig', '10.22.0'
(推奨)pod 'FirebaseAnalytics', '10.22.0'

モバイル設定に関するその他の情報

メソッドの実装入れ替え

iOS では、特定のメソッドを実装するためにアプリ デリゲートを必要とするアプリイベント(URL を開く、通知を受信するなど)があります。たとえば、通知を受信するには、application:didReceiveRemoteNotification: を実装するためのアプリ デリゲートが必要になる場合があります。iOS アプリにはそれぞれ独自のアプリ デリゲートがあるため、Firebase はメソッドの実装入れ替えを使用します。これを使用することで、あるメソッドを別のメソッドと置き換えて、実装した任意のハンドラに加えて独自のハンドラをアタッチできます。

Dynamic Links、Cloud Messaging ライブラリは、メソッドの実装入れ替えを使用してアプリ デリゲートにハンドラをアタッチする必要があります。これらの Firebase プロダクトのうちいずれかを使用している場合、読み込みの際に Firebase は AppDelegate クラスを識別し、そのクラスに必要なメソッドを入れ替え、コールバックを既存のメソッド実装に連結します。

デスクトップ ワークフローを設定する(ベータ版

ゲームを作成する場合、通常はまずデスクトップ プラットフォームでゲームをテストしてから、開発中のモバイル デバイスにデプロイしてテストする方が簡単になります。このワークフローをサポートするために、Windows、macOS、Linux、および C++ エディタ内で実行できる Firebase C++ のサブセットが用意されています。

  1. デスクトップでのワークフローとして、次の作業を実施します。

    1. CMake 用に C++ プロジェクトを構成する
    2. Firebase プロジェクトを作成する
    3. アプリ(iOS や Android)を Firebase に登録する
    4. モバイル プラットフォーム用 Firebase 構成ファイルを追加する
  2. デスクトップ版の Firebase 構成ファイルを作成します。

    • Android google-services.json ファイルを追加した場合 - アプリの起動時に、Firebase がモバイル用のファイルの場所を特定し、デスクトップ用の Firebase 構成ファイル(google-services-desktop.json)を自動的に生成します。

    • iOS GoogleService-Info.plist ファイルを追加した場合 - アプリの起動前に、モバイル用のファイルをデスクトップ用の Firebase 構成ファイルに変換する必要があります。ファイルを変換するには、GoogleService-Info.plist ファイルと同じディレクトリで以下のコマンドを実行してください。

      generate_xml_from_google_services_json.py --plist -i GoogleService-Info.plist

    このデスクトップ構成ファイルには、Firebase コンソールの設定ワークフローで入力した C++ プロジェクト ID が含まれています。構成ファイルの詳細については、Firebase プロジェクトについて理解するをご覧ください。

  3. Firebase SDK を C++ プロジェクトに追加します。

    以下の手順は、サポートされている Firebase プロダクトを C++ プロジェクトに追加する方法の一例です。この例では、Firebase Authentication と Firebase Realtime Database を追加する方法を示します。

    1. 解凍した Firebase C++ SDK の場所を FIREBASE_CPP_SDK_DIR 環境変数に設定します。

    2. プロジェクトの CMakeLists.txt ファイルに、使用する Firebase プロダクトのライブラリを含む、以下の内容を追加します。たとえば、Firebase Authentication と Firebase Realtime Database を使用するには、以下を行います。

      # Add Firebase libraries to the target using the function from the SDK.
      add_subdirectory(${FIREBASE_CPP_SDK_DIR} bin/ EXCLUDE_FROM_ALL)
      
      # The Firebase C++ library `firebase_app` is required,
      # and it must always be listed last.
      
      # Add the Firebase SDKs for the products you want to use in your app
      # For example, to use Firebase Authentication and Firebase Realtime Database
      set(firebase_libs firebase_auth firebase_database firebase_app)
      target_link_libraries(${target_name} "${firebase_libs}")
      
  4. C++ アプリを実行します。

使用可能なライブラリ(デスクトップ)

Firebase C++ SDK には機能のサブセットに対するデスクトップ ワークフローのサポートが含まれているため、Firebase の特定の部分を Windows、maxOS、Linux のスタンドアロン デスクトップ ビルドで使用できます。

Firebase プロダクト ライブラリ リファレンス(CMake を使用した場合)
App Check firebase_app_check
(必須)firebase_app
Authentication firebase_auth
(必須)firebase_app
Cloud Firestore firebase_firestore
firebase_auth
firebase_app
Cloud Functions firebase_functions
(必須)firebase_app
Cloud Storage firebase_storage
(必須)firebase_app
Realtime Database firebase_database
(必須)firebase_app
Remote Config firebase_remote_config
(必須)firebase_app

Firebase では残りのデスクトップ ライブラリはスタブ(非機能的)実装であり、Windows、macOS、Linux 向けのビルドを便利にするために提供されています。このため、デスクトップを対象としてコードを条件付きでコンパイルする必要はありません。

Realtime Database デスクトップ

デスクトップ用 Realtime Database SDK では、データベースに対するアクセスに REST が利用されます。このため、デスクトップで Query::OrderByChild() を使って、使用するインデックスを宣言する必要があります。宣言がないとリスナーは失敗します。

デスクトップ設定に関するその他の情報

Windows のライブラリ

Windows の場合、以下の事項に対応するライブラリ バージョンが用意されています。

  • ビルド プラットフォーム: 32 ビット(x86)モード、64 ビット(x64)モード
  • Windows のランタイム環境: マルチスレッド / MT、マルチスレッド DLL / MD
  • ターゲット: リリース、デバッグ

以下のライブラリは、Visual Studio 2015 および 2017 を使用してテストされている点に留意してください。

Windows で C++ デスクトップ アプリをビルドする際は、以下の Windows SDK ライブラリをプロジェクトにリンクしてください。詳しくは、コンパイラのドキュメントを参照してください。

Firebase C++ ライブラリ Windows SDK ライブラリの依存関係
App Check advapi32, ws2_32, crypt32
Authentication advapi32, ws2_32, crypt32
Cloud Firestore advapi32, ws2_32, crypt32, rpcrt4, ole32, shell32
Cloud Functions advapi32, ws2_32, crypt32, rpcrt4, ole32
Cloud Storage advapi32, ws2_32, crypt32
Realtime Database advapi32, ws2_32, crypt32, iphlpapi, psapi, userenv
Remote Config advapi32, ws2_32, crypt32, rpcrt4, ole32

macOS のライブラリ

macOS(Darwin)の場合、用意されているライブラリ バージョンは 64 ビット(x86_64)プラットフォームに対応したものになります。利便性のためにフレームワークも用意されています。

これらの macOS ライブラリは Xcode 13.3.1 を使ってテストされています。

macOS で C++ デスクトップ アプリをビルドする際は、プロジェクトに以下をリンクしてください。

  • pthread システム ライブラリ
  • CoreFoundation macOS システム フレームワーク
  • Foundation macOS システム フレームワーク
  • Security macOS システム フレームワーク
  • GSS macOS システム フレームワーク
  • Kerberos macOS システム フレームワーク
  • SystemConfiguration macOS システム フレームワーク

詳しくは、コンパイラのドキュメントを参照してください。

Linux のライブラリ

Linux の場合、32 ビット(i386)および 64 ビット(x86_64)のプラットフォームに対応するバージョンのライブラリが用意されています。

これらの Linux ライブラリは、GCC 4.8.0、GCC 7.2.0、および Clang 5.0 を使用し Ubuntu 上でテストされていることに留意してください。

Linux で C++ デスクトップ アプリをビルドする際は、プロジェクトに pthread システム ライブラリをリンクしてください。詳しくは、コンパイラのドキュメントを参照してください。GCC 5 以降でビルドする場合は、-D_GLIBCXX_USE_CXX11_ABI=0 を定義してください。

次のステップ