コンソールへ移動

予約済み URL から Firebase SDK を読み込む

Firebase Hosting は、/__ で始まるサイトの URL を予約します。この予約された名前空間により、Firebase Hosting と他の Firebase サービスを簡単に利用できるようになります。

この予約済み URL は、Firebase にデプロイするとき(firebase deploy)と、ローカル サーバー上でアプリを実行するとき(firebase serve)の両方で利用できます。

予約済み URL のスクリプトを追加する

Firebase Hosting はデプロイ時に HTTP/2 経由で提供されるため、同じ場所からファイルを読み込むとパフォーマンスが向上します。Firebase Hosting は、次のような特別な URL から Firebase JavaScript SDK のすべてのバージョンを提供します。

/__/firebase/js-sdk-version/firebase-sdk-name.js

読み込むのはアプリで使用するライブラリのみにすることを強くおすすめします。たとえば、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/6.2.3/firebase-app.js"></script>

  <!-- Add Firebase products that you want to use -->
  <script src="/__/firebase/6.2.3/firebase-auth.js"></script>
  <script src="/__/firebase/6.2.3/firebase-firestore.js"></script>
</body>

SDK の自動構成

SDK の自動構成を使用すると、単一のコードベースから複数の環境(開発、ステージング、本番環境)を簡単に管理できます。予約済みの Hosting URL を使用することで、同じコードを複数の Firebase プロジェクトにデプロイできます。

SDK 自体をホスティングするだけでなく、予約済みの名前空間では、Hosting サイトに関連付けられた Firebase プロジェクトの SDK の初期化に必要な構成も提供されます。この Firebase の構成と SDK の初期化はスクリプトで行います。次のように、このスクリプトは直接含めることができます。

<!-- Load the Firebase SDKs before loading this file -->
<script src="/__/firebase/init.js"></script>

Firebase にデプロイするか、ローカルでアプリをテストすると、このスクリプトがアクティブな Firebase プロジェクトに Firebase JavaScript SDK を自動的に構成し、SDK を初期化します。

初期化を制御するには、Firebase の構成値を JSON 形式で指定します。

fetch('/__/firebase/init.json').then(async response => {
  firebase.initializeApp(await response.json());
});

Auth ヘルパー

Firebase Authentication は予約済みの名前空間を使用し、OAuth 経由でプロバイダとの認証を完了するために特別な JavaScript と HTML を提供します。これにより、Firebase の各プロジェクトは独自の Firebase サブドメインを所有するため、Firebase Authentication のセキュリティを強化できます。

さらに、firebase.initializeApp()authDomain オプションに独自のカスタム ドメインを使用することもできます。Firebase Hosting のカスタム ドメインを構成する場合は、Firebase SDK を初期化しているときにそのカスタム ドメインを(web.appfirebaseapp.com サブドメインの代わりに)指定することもできます。

予約済みの URL と Service Worker

プログレッシブなウェブアプリ(PWA)を構築する場合、ナビゲーション フォールバックのある Service Worker を作成できます。これにより、キャッシュ内の項目リストに一致しない場合にデフォルトで特定の URL をレンダリングできます。

sw-precache ライブラリを使用している場合、ナビゲーション フォールバックのホワイトリストに、予約済みの名前空間を除外する設定を追加できます。

{
  navigateFallbackWhitelist: [/^(?!\/__).*/]
}

通常、連続する 2 つのアンダースコアを含む名前空間は Firebase 用に予約されているため、Service Worker でこれらのリクエストをインターセプトしないでください。