予約済みの URL

Firebase Hosting は、/__ で始まるサイトの URL を予約します。この予約された名前空間により、Firebase Hosting と他の Firebase 機能を簡単に同時利用することができます。予約済みの URL は、デプロイ時だけでなく、firebase serve をローカルで実行したときにも利用されます。

Firebase SDK

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

/__/firebase/{version}/{sdk-file}.js

SDK の中から実際に使用する部分のみを読み込むことをおすすめします。たとえば、Firebase Authentication と Cloud Storage を一緒に使用する場合には、次のスクリプトだけを追加します。

<script src="/__/firebase/4.3.1/firebase-app.js"></script>
<script src="/__/firebase/4.3.1/firebase-auth.js"></script>
<script src="/__/firebase/4.3.1/firebase-storage.js"></script>

Firebase SDK のすべてのバージョンがこのようにホスティングされます。新しいバージョンがリリースされると、すぐに利用可能になります。

SDK の自動設定

SDK 自体をホスティングするだけでなく、予約済みの名前空間では、Firebase Hosting サイトに関連するプロジェクトの SDK の初期化に必要な設定も提供されます。これは、直接追加できるスクリプトとして提供されます。

<!-- load Firebase SDK before loading this file -->
<script src="/__/firebase/init.js"></script>

このスクリプトは、Firebase SDK のデフォルト アプリケーションを自動的に設定します。初期化を制御するには、設定値を JSON 形式で指定します。

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

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

Auth ヘルパー

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

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

予約済みの URL とサービスワーカー

プログレッシブなウェブアプリを構築する場合、ナビゲーション フォールバックのあるサービス ワーカーを作成できます。これにより、キャッシュ内の項目リストに一致しない場合にデフォルトで特定の URL をレンダリングできます。Firebase Hosting を正常に動作させるには、/__ 名前空間のフォールバックを無効にする必要があります。

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

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

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

フィードバックを送信...

ご不明な点がありましたら、Google のサポートページをご覧ください。