Google は、黒人コミュニティのための人種的公平の促進に取り組んでいます。詳細をご覧ください。

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

このガイドでは、Firebase JavaScript SDK をウェブアプリで使用する手順について説明します。また、Node.js デスクトップや IoT アプリケーションなどのエンドユーザー アクセスのクライアントとして使用する場合も、この手順に従ってください。

前提条件

  • お好みのエディタまたは IDE をインストールします。

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

JavaScript プロジェクトがまだない方で Firebase プロダクトを試してみたい場合は、クイックスタート サンプルをダウンロードしてください。

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

JavaScript アプリに Firebase を追加する前に、アプリに接続する Firebase プロジェクトを作成します。

Firebase プロジェクトの詳細やプロジェクトにアプリを追加するベスト プラクティスついては、Firebase プロジェクトについて理解するをご覧ください。

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

Firebase プロジェクトを作成したら、プロジェクトにウェブアプリを追加できます。

Firebase プロジェクトにアプリを追加するベスト プラクティスと注意事項については、Firebase プロジェクトについて理解するをご覧ください。

  1. Firebase コンソールの [Project Overview] ページの中央にあるウェブアイコン()をクリックして設定ワークフローを起動します。

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

  2. アプリのニックネームを入力します。
    このニックネームは内部用の簡便な ID であり、Firebase コンソールでのみ表示されます。

  3. (省略可)ウェブアプリ向けに Firebase Hosting を設定します。

    • Firebase Hosting の設定は、今すぐでも後ででもセットアップできます。また、プロジェクト設定で、いつでも Firebase ウェブアプリを Hosting サイトにリンクできます。

    • 今すぐ Hosting を設定する場合は、プルダウン リストからサイトを選択して Firebase ウェブアプリにリンクします。

      • このリストには、プロジェクトのデフォルトの Hosting サイトと、プロジェクトで設定した他のサイトが表示されます。

      • Firebase ウェブアプリにすでにリンクしているサイトは、追加のリンクには使用できません。各 Hosting サイトは、単一の Firebase ウェブアプリにのみリンクできます。

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

ステップ 3: Firebase SDK を追加して Firebase を初期化する

サポートされている Firebase プロダクトをアプリに追加できます。

Firebase SDK をアプリに追加する方法は、アプリに Firebase Hosting を使用するよう選択したかどうか、アプリで使用するツール(バンドラなど)、Node.js アプリを構成するかどうかによって異なります。

Hosting URL から

Firebase Hosting を使用する場合は、Firebase JavaScript SDK ライブラリを予約済みの URL から動的に読み込むようにアプリを構成できます。詳しくは、予約済みの Hosting URL から SDK を追加するをご覧ください。

この設定オプションでは、Firebase にデプロイした後で、デプロイされた Firebase プロジェクトから Firebase 構成オブジェクトが自動的に取得されます。同じコードベースを複数の Firebase プロジェクトにデプロイできますが、firebase.initializeApp() に使用している Firebase の構成を追跡する必要はありません。

この設定オプションは、ウェブアプリをローカルでテストする場合にも使用できます。

  1. 特定の Firebase プロダクト(アナリティクス、Authentication、Cloud Firestore など)のみを含めるには、Firebase プロダクトを使用する前に、次のスクリプトを <body> タグの末尾に追加します。

    <body>
      <!-- Insert these scripts at the bottom of the HTML, but before you use any Firebase services -->
    
      <!-- Firebase App (the core Firebase SDK) is always required and must be listed first -->
      <script src="/__/firebase/7.23.0/firebase-app.js"></script>
    
      <!-- If you enabled Analytics in your project, add the Firebase SDK for Analytics -->
      <script src="/__/firebase/7.23.0/firebase-analytics.js"></script>
    
      <!-- Add Firebase products that you want to use -->
      <script src="/__/firebase/7.23.0/firebase-auth.js"></script>
      <script src="/__/firebase/7.23.0/firebase-firestore.js"></script>
    </body>
    


  2. アプリで Firebase を初期化します。予約済みの Hosting URL を使用する場合、Firebase 構成オブジェクトを含める必要はありません。

    <body>
      <!-- Previously loaded Firebase SDKs -->
    
      <!-- Initialize Firebase -->
      <script src="/__/firebase/init.js"></script>
    </body>
    

CDN から

Firebase JavaScript SDK の部分的なインポートを構成し、必要な Firebase プロダクトのみを読み込むことができます。Firebase は、Firebase JavaScript SDK の各ライブラリをグローバル CDN(コンテンツ配信ネットワーク)に格納しています。

  1. 特定の Firebase プロダクト(Authentication と Cloud Firestore など)のみを含めるには、Firebase プロダクトを使用する前に、次のスクリプトを <body> タグの末尾に追加します。

    <body>
      <!-- Insert these scripts at the bottom of the HTML, but before you use any Firebase services -->
    
      <!-- Firebase App (the core Firebase SDK) is always required and must be listed first -->
      <script src="https://www.gstatic.com/firebasejs/7.23.0/firebase-app.js"></script>
    
      <!-- If you enabled Analytics in your project, add the Firebase SDK for Analytics -->
      <script src="https://www.gstatic.com/firebasejs/7.23.0/firebase-analytics.js"></script>
    
      <!-- Add Firebase products that you want to use -->
      <script src="https://www.gstatic.com/firebasejs/7.23.0/firebase-auth.js"></script>
      <script src="https://www.gstatic.com/firebasejs/7.23.0/firebase-firestore.js"></script>
    </body>
    


  2. アプリで Firebase を初期化します。

    <body>
      <!-- Previously loaded Firebase SDKs -->
    
      <script>
        // TODO: Replace the following with your app's Firebase project configuration
        // For Firebase JavaScript SDK v7.20.0 and later, `measurementId` is an optional field
        var firebaseConfig = {
          // ...
        };
    
        // Initialize Firebase
        firebase.initializeApp(firebaseConfig);
      </script>
    </body>
    

モジュール バンドラを使用する

Firebase JavaScript SDK の部分的なインポートを構成し、必要な Firebase プロダクトのみを読み込むことができます。バンドラ(Browserify や webpack など)を使用している場合は、必要に応じて import を使用して個々の Firebase プロダクトをインポートします。

  1. Firebase JavaScript SDK をインストールします。

    1. package.json ファイルがない場合は、JavaScript プロジェクトのルートから次のコマンドを実行して作成します。

      npm init

    2. 次のコマンドを実行して firebase npm パッケージをインストールし、package.json ファイルに保存します。

      npm install --save firebase

  2. 特定の Firebase プロダクト(Authentication と Cloud Firestore など)のみを含めるには、Firebase モジュールを import でインポートします。

    // Firebase App (the core Firebase SDK) is always required and must be listed first
    import * as firebase from "firebase/app";
    
    // If you enabled Analytics in your project, add the Firebase SDK for Analytics
    import "firebase/analytics";
    
    // Add the Firebase products that you want to use
    import "firebase/auth";
    import "firebase/firestore";
    
  3. アプリで Firebase を初期化します。

    // TODO: Replace the following with your app's Firebase project configuration
    // For Firebase JavaScript SDK v7.20.0 and later, `measurementId` is an optional field
    const firebaseConfig = {
      // ...
    };
    
    // Initialize Firebase
    firebase.initializeApp(firebaseConfig);
    

Node.js アプリ

  1. Firebase JavaScript SDK をインストールします。

    1. package.json ファイルがない場合は、JavaScript プロジェクトのルートから次のコマンドを実行して作成します。

      npm init
    2. 次のコマンドを実行して firebase npm パッケージをインストールし、package.json ファイルに保存します。

      npm install --save firebase
  2. アプリで Firebase モジュールを使用するには、次のオプションのいずれかを使用します。

    • require を使用して、任意の JavaScript ファイルからモジュールを組み込む。

      特定の Firebase プロダクト(Authentication と Cloud Firestore など)のみを含める:

      // Firebase App (the core Firebase SDK) is always required and
      // must be listed before other Firebase SDKs
      var firebase = require("firebase/app");
      
      // Add the Firebase products that you want to use
      require("firebase/auth");
      require("firebase/firestore");
      


    • ES2015 を使用して、import でモジュールをインポートする。

      特定の Firebase プロダクト(Authentication と Cloud Firestore など)のみを含める:

      // Firebase App (the core Firebase SDK) is always required and
      // must be listed before other Firebase SDKs
      import * as firebase from "firebase/app";
      
      // Add the Firebase services that you want to use
      import "firebase/auth";
      import "firebase/firestore";
      
  3. アプリで Firebase を初期化します。

    // TODO: Replace the following with your app's Firebase project configuration
    // For Firebase JavaScript SDK v7.20.0 and later, `measurementId` is an optional field
    var firebaseConfig = {
      // ...
    };
    
    // Initialize Firebase
    firebase.initializeApp(firebaseConfig);
    

Firebase 構成オブジェクトの詳細

アプリで Firebase を初期化するには、アプリの Firebase プロジェクト構成を提供する必要があります。Firebase 構成ファイルはいつでも入手できます。

  • 予約済みの Hosting URL を使用する場合、Firebase の構成は Firebase プロジェクトから自動的に取得されるため、コードで構成オブジェクトを明示的に指定する必要はありません。

  • 構成オブジェクト(特に、必須の Firebase オプション apiKeyprojectIdappID)を手動で編集しないことをおすすめします。これらの必須の「Firebase オプション」のいずれかで無効な値が指定されているか、値が欠落している状態でアプリを初期化すると、ユーザーに深刻な問題が発生することがあります。

  • Firebase プロジェクトで Google アナリティクスを有効にすると、構成オブジェクトに measurementId フィールドが含まれます。このフィールドの詳細については、Google アナリティクスのスタートガイドをご覧ください。

すべてのサービスが有効になっている構成オブジェクトの形式は次のとおりです(これらの値は自動的に入力されます)。

// For Firebase JavaScript SDK v7.20.0 and later, `measurementId` is an optional field
var firebaseConfig = {
  apiKey: "API_KEY",
  authDomain: "PROJECT_ID.firebaseapp.com",
  databaseURL: "https://PROJECT_ID.firebaseio.com",
  projectId: "PROJECT_ID",
  storageBucket: "PROJECT_ID.appspot.com",
  messagingSenderId: "SENDER_ID",
  appId: "APP_ID",
  measurementId: "G-MEASUREMENT_ID",
};

値の例を含む構成オブジェクトを次に示します。

// For Firebase JavaScript SDK v7.20.0 and later, `measurementId` is an optional field
var firebaseConfig = {
  apiKey: "AIzaSyDOCAbC123dEf456GhI789jKl01-MnO",
  authDomain: "myapp-project-123.firebaseapp.com",
  databaseURL: "https://myapp-project-123.firebaseio.com",
  projectId: "myapp-project-123",
  storageBucket: "myapp-project-123.appspot.com",
  messagingSenderId: "65211879809",
  appId: "1:65211879909:web:3ae38ef1cdcb2e01fe5f0c",
  measurementId: "G-8GSGZQ44ST"
};

ステップ 4:(省略可)CLI をインストールし、Firebase Hosting にデプロイする

Firebase ウェブアプリを Firebase Hosting サイトにリンクしている場合、サイトのコンテンツと構成を今(ウェブアプリの設定時)、または後からいつでもデプロイできます。

Firebase にデプロイするには、コマンドライン ツールである Firebase CLI を使用します。

  1. CLI をインストールする方法または最新バージョンに更新する方法については、Firebase CLI のドキュメントをご覧ください。

  2. Firebase プロジェクトを初期化します。ローカルアプリ ディレクトリのルートから次のコマンドを実行します。

    firebase init

  3. コンテンツと Hosting 構成を Firebase Hosting にデプロイします。

    デフォルトの Hosting サイト

    デフォルトでは、すべての Firebase プロジェクトに web.app ドメインと firebaseapp.com ドメインの無料サブドメイン(project-id.web.appproject-id.firebaseapp.com)があります。

    1. サイトにデプロイします。アプリのルート ディレクトリから次のコマンドを実行します。

      firebase deploy
    2. いずれかのデフォルト サイトで自身のサイトを表示します。

      • project-id.web.app
      • project-id.firebaseapp.com

    デフォルト以外の Hosting サイト

    Firebase プロジェクトは複数のサイトをサポートします(これらはデフォルト以外のサイトとみなされます)。コンソールのウェブアプリの設定ワークフロー中、またはコンソールの Hosting ページから、プロジェクトにサイトを追加できます。

    1. サイトを firebase.json ファイルfirebase init の実行中に作成されたもの)に追加します。

      この firebase.json 構成では、サイトごとに個別のリポジトリがあることを前提としていることに注意してください。

      {
        "hosting": {
          "site": "site-name>",
          "public": "public",
      
          // ...
        }
      }
      
    2. サイトにデプロイします。アプリのルート ディレクトリから次のコマンドを実行します。

      firebase deploy --only hosting:site-name
    3. 次のいずれかでサイトを表示します。

      • site-name.web.app
      • site-name.firebaseapp.com

ステップ 5: アプリで Firebase にアクセスする

Firebase JavaScript SDK は、次の Firebase プロダクトをサポートしています。各プロダクトはオプションで、firebase 名前空間からアクセスできます。

使用可能なメソッドについては、Firebase JavaScript のリファレンス ドキュメントをご覧ください。

Firebase プロダクト 名前空間 ウェブ Node.js
アナリティクス firebase.analytics()
Authentication firebase.auth()
Cloud Firestore firebase.firestore()
Cloud Functions for Firebase Client SDK firebase.functions()
Cloud Messaging firebase.messaging()
Cloud Storage firebase.storage()
Performance Monitoring ベータ版リリース) firebase.performance()
Realtime Database firebase.database()
Remote Config ベータ版リリース) firebase.remoteConfig()

使用可能なライブラリ

その他の設定オプション

Firebase SDK の読み込みを遅らせる(CDN から)

ページ全体が読み込まれるまで、Firebase SDK の登録を遅らせることができます。

  1. Firebase SDK の各 script タグに defer フラグを追加して、2 番目のスクリプトを使用して Firebase の初期化を遅らせます。

    <script defer src="https://www.gstatic.com/firebasejs/7.23.0/firebase-app.js"></script>
    
    <script defer src="https://www.gstatic.com/firebasejs/7.23.0/firebase-auth.js"></script>
    <script defer src="https://www.gstatic.com/firebasejs/7.23.0/firebase-firestore.js"></script>
    
    // ...
    
    <script defer src="./init-firebase.js"></script>
    
  2. init-firebase.js ファイルを作成して、以下を含めます。

    // TODO: Replace the following with your app's Firebase project configuration
    var firebaseConfig = {
      // ...
    };
    
    // Initialize Firebase
    firebase.initializeApp(firebaseConfig);
    

1 つのアプリで複数の Firebase プロジェクトを使用する

ほとんどの場合、Firebase の初期化は単一のデフォルト アプリで行うだけで済みます。このアプリからは 2 つの方法で Firebase にアクセスできます(この 2 つの方法は同等です)。

// Initialize Firebase with a "default" Firebase project
var defaultProject = firebase.initializeApp(firebaseConfig);

console.log(defaultProject.name);  // "[DEFAULT]"

// Option 1: Access Firebase services via the defaultProject variable
var defaultStorage = defaultProject.storage();
var defaultFirestore = defaultProject.firestore();

// Option 2: Access Firebase services using shorthand notation
defaultStorage = firebase.storage();
defaultFirestore = firebase.firestore();

ただし、複数の Firebase プロジェクトに同時にアクセスしなければならない場合もあります。たとえば、ある Firebase プロジェクトのデータベースからデータを読み取り、別の Firebase プロジェクトにファイルを保存することがあります。また、1 つのプロジェクトで認証を行い、もう 1 つのプロジェクトで認証を解除する場合もあります。

Firebase JavaScript SDK を使用すると、プロジェクトごとに独自の Firebase 構成情報を使用し、1 つのアプリで同時に複数の Firebase プロジェクトを初期化して使用できます。

// Initialize Firebase with a default Firebase project
firebase.initializeApp(firebaseConfig);

// Initialize Firebase with a second Firebase project
var otherProject = firebase.initializeApp(otherProjectFirebaseConfig, "other");

console.log(firebase.app().name);  // "[DEFAULT]"
console.log(otherProject.name);    // "otherProject"

// Use the shorthand notation to access the default project's Firebase services
var defaultStorage = firebase.storage();
var defaultFirestore = firebase.firestore();

// Use the otherProject variable to access the second project's Firebase services
var otherStorage = otherProject.storage();
var otherFirestore = otherProject.firestore();

開発用ローカル ウェブサーバーを実行する

ウェブアプリを作成する場合、Firebase JavaScript SDK の一部では、ウェブアプリがローカル ファイル システムではなく、サーバーから提供されている必要があります。Firebase CLI を使用してローカル サーバーを実行できます。

アプリに Firebase Hosting をすでに設定している場合は、以下の手順の一部をすでに完了させている場合があります。

ウェブアプリを提供するには、コマンドライン ツールである Firebase CLI を使用します。

  1. CLI をインストールする方法または最新バージョンに更新する方法については、Firebase CLI のドキュメントをご覧ください。

  2. Firebase プロジェクトを初期化します。ローカルアプリ ディレクトリのルートから次のコマンドを実行します。

    firebase init

  3. 開発用のローカル サーバーを起動します。ローカルアプリ ディレクトリのルートから次のコマンドを実行します。

    firebase serve

次のステップ

以下で Firebase の詳細を確認します。

Firebase サービスをアプリに追加します。