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 13
- tvOS 13
実機を設定するか、シミュレータを使用してアプリを実行します。
Google アカウントを使用して Firebase にログインします。
ステップ 2: Firebase プロジェクトを作成する
C++ プロジェクトに接続する Firebase プロジェクトを作成して、C++ プロジェクトに Firebase を追加できるようにします。Firebase プロジェクトの詳細については、Firebase プロジェクトについて理解するをご覧ください。
ステップ 3: アプリを Firebase に登録する
Apple アプリで Firebase を使用するには、アプリを Firebase プロジェクトに登録する必要があります。アプリの登録は、プロジェクトへのアプリの「追加」とも呼ばれます。
Firebaseコンソールに移動します。
プロジェクトの概要ページの中央にある iOS+ アイコンをクリックして、設定ワークフローを起動します。
すでに Firebase プロジェクトにアプリを追加している場合は、[アプリを追加] をクリックするとプラットフォームのオプションが表示されます。
アプリのバンドル ID を [Apple バンドル ID] フィールドに入力します。
(省略可)その他のアプリ情報(アプリのニックネームと App Store ID)を入力します。
[アプリを登録] をクリックします。
ステップ 4: Firebase 構成ファイルを追加する
[GoogleService-Info.plist をダウンロード] をクリックして、Firebase Apple プラットフォーム構成ファイルを取得します。
IDE で C++ プロジェクトを開き、構成ファイルを C++ プロジェクトのルートにドラッグします。
メッセージが表示されたら、構成ファイルをすべてのターゲットに追加するオプションを選択します。
Firebase コンソールでのセットアップ作業はこれで完了です。次の Firebase C++ SDK を追加するに進んでください。
ステップ 5: Firebase C++ SDK を追加する
このセクションの手順は、サポートされている Firebase プロダクトを Firebase C++ プロジェクトに追加する方法の一例です。
Firebase C++ SDK をダウンロードし、適切な場所で解凍します。
Firebase C++ SDK は特定のプラットフォームを必要としませんが、プラットフォーム固有のライブラリが複数収録されています。
解凍した SDK から、Firebase Pod を追加します。
Podfile がない場合は作成します。
cd your-app-directory
pod init
アプリで使用したい Firebase Pod を Podfile に追加します。
Analytics 有効化
# 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'Analytics 無効
# 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'
Pod をインストールし、Xcode で
.xcworkspace
ファイルを開きます。pod install
open your-app.xcworkspace
解凍した SDK から Firebase フレームワークを追加します。
通常もっとも簡単なのは、
Finder
ウィンドウから Xcode のプロジェクト ナビゲータ ペイン(デフォルトでは一番左側のペイン。Xcode の左上にあるファイル アイコンのクリックでも表示できます)に直接ドラッグする方法です。Firebase プロダクトの使用に必要な Firebase C++ フレームワーク
firebase.framework
を追加します。使用する各 Firebase プロダクト用のフレームワークを追加します。たとえば、Firebase Authentication を使用するには、
firebase_auth.framework
を追加します。
Firebase コンソールの設定ワークフローに戻り、[次へ] をクリックします。
Analytics を追加した場合は、アプリを実行して、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', '11.2.0' (必須) pod 'FirebaseAnalytics', '11.2.0'
|
Analytics |
(必須)firebase.framework firebase_analytics.framework pod 'FirebaseAnalytics', '11.2.0'
|
App Check |
(必須)firebase.framework firebase_app_check.framework pod 'FirebaseAppCheck', '11.2.0'
|
Authentication |
(必須)firebase.framework firebase_auth.framework pod 'FirebaseAuth', '11.2.0'
|
Cloud Firestore |
(必須)firebase.framework firebase_firestore.framework firebase_auth.framework pod 'FirebaseFirestore', '11.2.0' pod 'FirebaseAuth', '11.2.0'
|
Cloud Functions |
(必須)firebase.framework firebase_functions.framework pod 'FirebaseFunctions', '11.2.0'
|
Cloud Messaging |
(必須)firebase.framework firebase_messaging.framework (推奨) firebase_analytics.framework pod 'FirebaseMessaging', '11.2.0' (推奨) pod 'FirebaseAnalytics', '11.2.0'
|
Cloud Storage |
(必須)firebase.framework firebase_storage.framework pod 'FirebaseStorage', '11.2.0'
|
Dynamic Links |
(必須)firebase.framework firebase_dynamic_links.framework (推奨) firebase_analytics.framework pod 'FirebaseDynamicLinks', '11.2.0' (推奨) pod 'FirebaseAnalytics', '11.2.0'
|
Realtime Database |
(必須)firebase.framework firebase_database.framework pod 'FirebaseDatabase', '11.2.0'
|
Remote Config |
(必須)firebase.framework firebase_remote_config.framework (推奨) firebase_analytics.framework pod 'FirebaseRemoteConfig', '11.2.0' (推奨) pod 'FirebaseAnalytics', '11.2.0'
|
モバイル設定に関するその他の情報
メソッドの実装入れ替え
iOS では、特定のメソッドを実装するためにアプリ デリゲートを必要とするアプリイベント(URL を開く、通知を受信するなど)があります。たとえば、通知を受信するには、application:didReceiveRemoteNotification:
を実装するためのアプリ デリゲートが必要になる場合があります。iOS アプリにはそれぞれ独自のアプリ デリゲートがあるため、Firebase はメソッドの実装入れ替えを使用します。これを使用することで、あるメソッドを別のメソッドと置き換えて、実装した任意のハンドラに加えて独自のハンドラをアタッチできます。
Dynamic Links ライブラリと Cloud Messaging ライブラリは、メソッドの実装入れ替えを使用してアプリ デリゲートにハンドラをアタッチする必要があります。これらの Firebase プロダクトのうちいずれかを使用している場合、読み込みの際に Firebase は AppDelegate
クラスを識別し、そのクラスに必要なメソッドを入れ替え、コールバックを既存のメソッド実装に連結します。
デスクトップ ワークフローを設定する(ベータ版)
ゲームを作成する場合、通常はまずデスクトップ プラットフォームでゲームをテストしてから、開発中のモバイル デバイスにデプロイしてテストする方が簡単になります。このワークフローをサポートするために、Windows、macOS、Linux、および C++ エディタ内で実行できる Firebase C++ SDK のサブセットが用意されています。
デスクトップでのワークフローとして、次の作業を実施します。
- CMake 用に C++ プロジェクトを構成する
- Firebase プロジェクトを作成する
- アプリ(iOS や Android)を Firebase に登録する
- モバイル プラットフォーム用 Firebase 構成ファイルを追加する
デスクトップ版の 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 プロジェクトについて理解するをご覧ください。
Firebase SDK を C++ プロジェクトに追加します。
以下の手順は、サポートされている Firebase プロダクトを C++ プロジェクトに追加する方法の一例です。この例では、Firebase Authentication と Firebase Realtime Database を追加する手順について説明します。
解凍した Firebase C++ SDK の場所を
FIREBASE_CPP_SDK_DIR
環境変数に設定します。プロジェクトの
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}")
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
を定義してください。
次のステップ
Firebase アプリのサンプルを確認する。
GitHub のオープンソース SDK を確認する。
アプリを起動する準備をする。
- Google Cloud コンソールでプロジェクトの予算アラートを設定する。
- Firebase コンソールの [使用量と請求額] ダッシュボードをモニタリングして、複数の Firebase サービスを通じたプロジェクトの全体的な使用状況を確認する。
- Firebase リリース チェックリストを確認する。