Firebase Summit で発表されたすべての情報をご覧ください。Firebase を使用してアプリ開発を加速し、自信を持ってアプリを実行する方法を紹介しています。詳細

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

コレクションでコンテンツを整理 必要に応じて、コンテンツの保存と分類を行います。

iOS および Android 用の Firebase 上に C++ インターフェイスを提供する Firebase C++ SDK を使用して、C++ ゲームを強化します。

プラットフォーム ネイティブ コードを記述する必要なく、C++ コードから完全に Firebase にアクセスします。また、Firebase SDK は、Firebase で使用される多くの言語固有のイディオムを、C++ 開発者にとってより使い慣れたインターフェイスに変換します。

Firebase ゲームのページで、Firebase を使用してゲームをパワーアップする方法の詳細を確認してください。

すでに Firebase を C++ プロジェクトに追加していますか? Firebase C++ SDKの最新バージョンを使用していることを確認してください。

前提条件

  • Android Studio、IntelliJ、VS Code など、好みのエディターまたは IDE をインストールします。

  • Android SDKを入手します。

  • プロジェクトが次の要件を満たしていることを確認してください。

  • 物理デバイスをセットアップするか、エミュレーターを使用してアプリを実行します。

    • エミュレーターは、Google Play でエミュレーター イメージを使用する必要があります。

    • 一部の C++ ライブラリでは、クライアント デバイスに Google Play サービスが必要です。このページのリストを確認してください。

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

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

Firebase を C++ プロジェクトに追加する前に、Firebase プロジェクトを作成して C++ プロジェクトに接続する必要があります。 Firebase プロジェクトについて詳しくは、 Firebase プロジェクトを理解するをご覧ください。

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

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

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

  2. プロジェクトの概要ページの中央にあるAndroidアイコン ( ) または [アプリの追加] をクリックして、セットアップ ワークフローを起動します。

  3. [ Android パッケージ名] フィールドにアプリのパッケージ名を入力します。

  4. (オプション)その他のアプリ情報を入力します:アプリのニックネームデバッグ署名証明書 SHA-1

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

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

  1. [ google-services.json をダウンロード] をクリックして、Firebase Android 構成ファイルを取得します。

  2. IDE で C++ プロジェクトを開き、構成ファイルをプロジェクトに追加します。

  3. (Gradle ビルドのみ) C++ プロジェクトで Firebase サービスを有効にするには、 google-services プラグインを最上位のbuild.gradleファイルに追加します。

    1. ルールを追加して、Google Services Gradle プラグインを含めます。また、Google の Maven リポジトリがあることも確認してください。

        buildscript {
      
          repositories {
            // Check that you have the following line (if not, add it):
            google()  // Google's Maven repository
          }
      
          dependencies {
            // ...
      
            // Add the following lines:
            classpath 'com.google.gms:google-services:4.3.14'  // Google Services plugin
            implementation 'com.google.android.gms:18.1.0'
          }
        }
      
        allprojects {
          // ...
      
          repositories {
            // Check that you have the following line (if not, add it):
            google()  // Google's Maven repository
            // ...
          }
        }
      
    2. Google サービス Gradle プラグインを適用します。

        apply plugin: 'com.android.application'
        // Add the following line:
        apply plugin: 'com.google.gms.google-services'  // Google Services plugin
      
        android {
          // ...
        }
      
  4. Firebase コンソールでのセットアップ タスクが完了しました。以下のFirebase C++ SDK の追加に進みます。

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

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

  1. Firebase C++ SDKをダウンロードし、SDK を便利な場所に解凍します。

    Firebase C++ SDK はプラットフォーム固有ではありませんが、プラットフォーム固有のライブラリが含まれています。

  2. プロジェクトのgradle.propertiesファイルで、解凍した SDK の場所を指定します。

    systemProp.firebase_cpp_sdk.dir=full-path-to-SDK
    
  3. プロジェクトのsettings.gradleファイルに、次の内容を追加します。

    def firebase_cpp_sdk_dir = System.getProperty('firebase_cpp_sdk.dir')
    
    gradle.ext.firebase_cpp_sdk_dir = "$firebase_cpp_sdk_dir"
    includeBuild "$firebase_cpp_sdk_dir"
    
  4. モジュール (アプリ レベル) の Gradle ファイル (通常はapp/build.gradle ) に、次の内容を追加します。
    アプリで使用する Firebase プロダクトのライブラリ依存関係を含めます。

    分析が有効

    android.defaultConfig.externalNativeBuild.cmake {
    arguments "-DFIREBASE_CPP_SDK_DIR=$gradle.firebase_cpp_sdk_dir"
    }
    
    # Add the dependencies for the Firebase products you want to use in your app
    # For example, to use Analytics, Firebase Authentication, and Firebase Realtime Database
    apply from: "$gradle.firebase_cpp_sdk_dir/Android/firebase_dependencies.gradle"
    firebaseCpp.dependencies {
      analytics
      auth
      database
    }
    

    分析が有効になっていません

    android.defaultConfig.externalNativeBuild.cmake {
    arguments "-DFIREBASE_CPP_SDK_DIR=$gradle.firebase_cpp_sdk_dir"
    }
    
    # Add the dependencies for the Firebase products you want to use in your app
    # For example, to use Firebase Authentication and Firebase Realtime Database
    apply from: "$gradle.firebase_cpp_sdk_dir/Android/firebase_dependencies.gradle"
    firebaseCpp.dependencies {
      auth
      database
    }
    
  5. プロジェクトのCMakeLists.txtファイルに、次の内容を追加します。
    アプリで使用する Firebase プロダクトのライブラリを含めます。

    分析が有効

    # 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 Analytics, Firebase Authentication, and Firebase Realtime Database
    set(firebase_libs
      firebase_analytics
      firebase_auth
      firebase_database
      firebase_app
    )
    target_link_libraries(${target_name} "${firebase_libs}")
    

    分析が有効になっていません

    # 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}")
    
  6. アプリを同期して、すべての依存関係に必要なバージョンがあることを確認します。

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

    デバイスのログには、初期化が完了したことを示す Firebase 検証が表示されます。ネットワークにアクセスできるエミュレーターでアプリを実行した場合、 Firebase コンソールは、アプリの接続が完了したことを通知します。

これで準備完了です。 C++ アプリが登録され、Firebase サービスを使用するように構成されています。

利用可能なライブラリ

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

Android で利用可能なライブラリ(CMake を使用)

iOS 用の C++ ライブラリは、このセットアップ ページの iOS バージョンにリストされていることに注意してください。

Firebase プロダクトライブラリ参照
( firebaseCpp.dependencies
build.gradleファイル用)
ライブラリ参照
( firebase_libs
CMakeLists.txtファイルの場合)
AdMob admob firebase_admob
(必須) firebase_analytics
(必須) firebase_app
分析analytics firebase_analytics
(必須) firebase_app
認証auth firebase_auth
(必須) firebase_app
クラウド ファイアストアfirestore firebase_firestore
(必須) firebase_auth
(必須) firebase_app
クラウド機能functions firebase_functions
(必須) firebase_app
クラウド メッセージングmessaging firebase_messaging
(推奨) firebase_analytics
(必須) firebase_app
クラウドストレージstorage firebase_storage
(必須) firebase_app
動的リンクdynamicLinks firebase_dynamic_links
(推奨) firebase_analytics
(必須) firebase_app
リアルタイム データベースdatabase firebase_database
(必須) firebase_app
リモート設定remoteConfig firebase_remote_config
(推奨) firebase_analytics
(必須) firebase_app

モバイル設定に関する追加情報

NDK クラッシュ レポートを取得する

Firebase Crashlytics は、Android ネイティブ ライブラリを使用するアプリのクラッシュ レポートをサポートしています。詳細については、 「Android NDK クラッシュ レポートを取得する」を参照してください。

カスタム ビルド システム

Firebase は、スクリプトgenerate_xml_from_google_services_json.pyを提供して、プロジェクトに含めることができるgoogle-services.json.xmlリソースに変換します。このスクリプトは、Android アプリケーションのビルド時に Google Play サービス Gradle プラグインが実行するのと同じ変換を適用します。

Gradle を使用してビルドしない場合 (たとえば、ndk-build、makefiles、Visual Studio などを使用する場合)、このスクリプトを使用してAndroid String Resourcesの生成を自動化できます。

プロガード

多くの Android ビルド システムは、リリース モードのビルドにProGuardを使用して、アプリケーションのサイズを縮小し、Java ソース コードを保護します。

ProGuard を使用する場合は、ProGuard 構成で使用している Firebase C++ ライブラリに対応するlibs/android/*.proにファイルを追加する必要があります。

たとえば、Gradle で Google アナリティクスを使用している場合、 build.gradleファイルは次のようになります。

android {
  // ...
  buildTypes {
    release {
      minifyEnabled true
      proguardFile getDefaultProguardFile('your-project-proguard-config.txt')
      proguardFile file(project.ext.your_local_firebase_sdk_dir + "/libs/android/app.pro")
      proguardFile file(project.ext.your_local_firebase_sdk_dir + "/libs/android/analytics.pro")
      // ...  and so on, for each Firebase C++ library that you're using
    }
  }
}

Google Play サービスの要件

ほとんどの Firebase C++ ライブラリでは、クライアントの Android デバイスにGoogle Play サービスが必要です。 Firebase C++ ライブラリが初期化時にkInitResultFailedMissingDependencyを返す場合、クライアント デバイスで Google Play サービスを利用できないことを意味します (更新、再アクティブ化、アクセス許可の修正などが必要であることを意味します)。クライアント端末の状況が改善されるまで、Firebase ライブラリは使用できません。

google_play_services/availability.hの関数を使用して、クライアント デバイスで Google Play サービスが利用できない理由を調べる (そしてその修正を試みる) ことができます。

次の表に、サポートされている各 Firebase 製品のクライアント デバイスで Google Play サービスが必要かどうかを示します。

Firebase C++ ライブラリクライアント デバイスに必要な Google Play サービスは?
AdMob不要(通常)
分析不要
認証必須
クラウド ファイアストア必須
クラウド機能必須
クラウド メッセージング必須
クラウドストレージ必須
動的リンク必須
リアルタイム データベース必須
リモート設定必須

AdMob と Google Play サービス

Google Mobile Ads SDK for Android のほとんどのバージョンは、クライアント デバイスに Google Play サービスがなくても正しく動作します。ただし、上記の標準のcom.google.firebase:firebase-ads依存関係ではなく、 com.google.android.gms:play-services-ads-lite依存関係を使用している場合は、 Google Play サービスが必要です

AdMob の初期化では、次の両方が true の場合にのみkInitResultFailedMissingDependencyが返されます。

  • クライアント デバイスで Google Play サービスを利用できません。
  • com.google.android.gms:play-services-ads-liteを使用しています。

デスクトップ ワークフローをセットアップする (ベータ)

ゲームを作成するときは、多くの場合、最初にデスクトップ プラットフォームでゲームをテストしてから、開発の後半でモバイル デバイスに展開してテストする方がはるかに簡単です。このワークフローをサポートするために、Windows、macOS、Linux、および C++ エディター内で実行できるFirebase C++ SDK のサブセットを提供しています。

  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_CPP_SDK_DIR環境変数を、解凍した Firebase C++ SDK の場所に設定します。

    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、macOS、および Linux 上のスタンドアロン デスクトップ ビルドで使用できます。

Firebase プロダクトライブラリ参照 (CMake を使用)
認証firebase_auth
(必須) firebase_app
クラウド ファイアストアfirebase_firestore
firebase_auth
firebase_app
クラウド機能firebase_functions
(必須) firebase_app
クラウドストレージfirebase_storage
(必須) firebase_app
リアルタイム データベースfirebase_database
(必須) firebase_app
リモート設定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
  • ターゲット: リリース vs デバッグ

次のライブラリは、Visual Studio 2015 および 2017 を使用してテストされていることに注意してください。

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

Firebase C++ ライブラリWindows SDK ライブラリの依存関係
認証advapi32, ws2_32, crypt32
クラウド ファイアストアadvapi32, ws2_32, crypt32, rpcrt4, ole32, shell32
クラウド機能advapi32, ws2_32, crypt32, rpcrt4, ole32
クラウドストレージadvapi32, ws2_32, crypt32
リアルタイム データベースadvapi32, ws2_32, crypt32, iphlpapi, psapi, userenv
リモート設定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 ライブラリは、Ubuntu で GCC 4.8.0、GCC 7.2.0、および Clang 5.0 を使用してテストされていることに注意してください。

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

次のステップ