Firexportガイド

Firestore のセキュリティ ルールとインデックスをエクスポートする方法

Firebase コンソールは Firestore のセキュリティ ルールをエディタに、インデックスを表に表示しますが、どちらもファイルとして保存するボタンはありません。Firebase CLI がデプロイするファイルは firestore.rules と firestore.indexes.json です。これらを取り出す方法は 3 つあります。どれが合うかは、プロジェクト フォルダからデプロイしているかどうかと、ルールのどのバージョンが必要かによります。

2026年10月27日 更新。 方法 1 の拡張機能 Firexport は私たちのものです。方法 2 と 3 には不要です。

結論から言うと

  • CLI を使わずに、コンソールからルールやインデックスをファイルにしたい: ルール(Rules)タブとインデックス(Indexes)タブから、ブラウザ拡張機能でエクスポートします。 方法 1
  • firebase deploy でデプロイするプロジェクト フォルダ: firebase init firestore、または firebase firestore:indexes。 方法 2
  • ルールだけを、一度きり: ルール(Rules)タブからコピーします。 方法 3
1. コンソール + 拡張機能2. Firebase CLI3. コンソールからコピー
準備Chrome 拡張機能をインストールNode.js と Firebase CLIなし
ルールfirestore.rules(無料)firestore.rulesファイルに貼り付ける
過去のバージョンと下書きはい(エディタに表示されているもの)いいえ(最後に公開されたルール)はい
インデックス表を JSON で(無料)。Advanced では firestore.indexes.jsonfirestore.indexes.jsonいいえ

1. Firexport で Firebase コンソールからエクスポート

Firexport は、Firestore のルール(Rules)タブとインデックス(Indexes)タブにエクスポート ボタンを追加する無料の Chrome 拡張機能です。サインインは不要で、データベースからは何も読み取りません。Firexport は、コンソールがすでに表示しているものを保存します。

セキュリティ ルール

  1. Chrome ウェブストアから Firexport をインストールします。
  2. Firebase コンソールで Firestore Database > ルール(Rules)を開きます。
  3. 過去のバージョンをエクスポートするには、左の一覧でそのバージョンを選びます。エディタ上でまだ公開していない変更は、現在の状態のままエクスポートされます。
  4. エディタの上のバーの右端にあるエクスポートをクリックします。Firexport がエディタのテキストを firestore.rules として保存します。

ファイルの中身は、コメントや空行も含めて、エディタの内容とバイト単位でまったく同じです。ルールのエクスポートはどのプランでも無料です。

Firebase コンソールの Firestore のルール(Rules)タブ。左に過去のバージョンが並び、ルール エディタの上に Firexport が追加したエクスポート ボタンがある
エクスポート ボタンはエディタの上にあり、左で選んだバージョンを保存します。

インデックス

  1. Firestore Database > インデックス(Indexes)を開きます。
  2. インデックスを追加(Add index)の横にあるエクスポートをクリックします。
  • 無料版では、Firexport は表示中の表を、全ページ分まとめて JSON として保存します。手動(Manual)の表は複合インデックス、自動(Automatic)の表は単一フィールドの除外です。コンソールに表示されているとおりの表なので、firebase deploy では読み込めず、ファイル名も firestore.indexes.json ではありません。
  • Advanced では、Firexport は firestore.indexes.json を保存します。どちらの表を表示していても、複合インデックスとフィールドのオーバーライドをまとめて、firebase firestore:indexes が出力する形式で書き出します。名前付きデータベースでは、ファイル名は firestore.<database>.indexes.json になります。
  • CLI のファイルとの違いが 1 つあります。TTL ポリシーがあり、インデックスの除外がないフィールドは含まれません。コンソールがそうしたフィールドを読み込まないためです。
Firebase コンソールの Firestore のインデックス(Indexes)タブ。複合インデックスが並び、インデックスを追加(Add index)の横に Firexport が追加したエクスポート ボタンがある
エクスポート ボタンはインデックスを追加(Add index)の横にあります。表のページをめくっても、データベースからは何も読み取りません。

Firebase CLI をインストールせずに、Firestore のルールとインデックスをコンソールからエクスポートしましょう。

Chrome に追加 — 無料

2. Firebase CLI でダウンロード

Firebase CLI は、フォルダに Firestore を設定するときに両方のファイルを書き出します。firebase init firestore が、プロジェクトにデプロイされているルールとインデックスをダウンロードします。インデックスだけなら、firebase firestore:indexes が firestore.indexes.json を出力します。どちらも無料で、Node.js が必要です。

npm install -g firebase-tools
firebase login

# Rules and indexes, into firestore.rules and firestore.indexes.json
firebase init firestore

# Or only the indexes
firebase firestore:indexes --project your-project-id > firestore.indexes.json
  • init はプロジェクトとファイル名を尋ね、それらのファイルを指す firebase.json を書き出します。ダウンロードされるのは最後に公開されたルールで、過去のバージョンや未公開の下書きではありません。
  • (default) 以外のデータベースでは、firestore:indexes に --database <id> を付けます。init はどのデータベースを設定するかを尋ねますが、ルールはデータベース名を指定せずに取得するので、firestore.rules が意図したデータベースのものか確認してください。

3. コンソールからルールをコピー

現在のルールを一度取り出すだけなら、コンソールで足ります。Firestore Database > ルール(Rules)を開き、エディタ内をクリックして Ctrl+A(Mac では ⌘A)ですべて選択してコピーし、firestore.rules という名前のファイルに貼り付けます。過去のバージョンをコピーするには、先に左でそのバージョンを選びます。

インデックスにはこうした近道がありません。インデックス(Indexes)タブはテキストではなく表なので、ファイルにするには各インデックスを firestore.indexes.json に手で書き込むことになります。

ファイルをデプロイし直す

どちらのファイルも、それらの名前を記した firebase.json(firebase init firestore が書き出すもの)と同じフォルダに置きます:

{
  "firestore": {
    "rules": "firestore.rules",
    "indexes": "firestore.indexes.json"
  }
}

そのあと firebase deploy --only firestore を実行します。片方だけなら firestore:rules か firestore:indexes にします。

  • ファイルにないインデックスがプロジェクトにある場合、CLI はそれらを表示し、削除する前に確認します。--force を付けると確認せずに削除します。ファイルにない TTL ポリシーは削除されません。
  • 同じルールとインデックスを別のプロジェクトに、たとえば本番からステージングにデプロイするには、--project を付けます。
  • デプロイしたルールはすべてのクライアントにすぐ適用されるので、変更はまず Firestore エミュレータで試してください。

FAQ

Firebase コンソールから Firestore のセキュリティ ルールをダウンロードできますか?

ボタンではできません。ルール(Rules)タブはルールをエディタに表示するので、そこからコピーできます。firebase init firestore はルールを firestore.rules にダウンロードし、Firexport のようなブラウザ拡張機能は、ルールを firestore.rules として保存するエクスポート ボタンを追加します。

Firestore のインデックスを firestore.indexes.json にエクスポートするには、どうすればよいですか?

Firebase CLI で firebase firestore:indexes > firestore.indexes.json を実行するか、Firexport Advanced でインデックス(Indexes)タブからファイルをエクスポートします。どちらも、複合インデックスとフィールドのオーバーライドを firebase deploy が読み込む形式で書き出します。

Firestore のインデックスを別のプロジェクトにどうコピーしますか?

元のプロジェクトから firestore.indexes.json をエクスポートし、もう一方のプロジェクトの ID を指定して firebase deploy --only firestore:indexes --project を実行します。新しいインデックスはバックグラウンドで作成され、それを必要とするクエリは、インデックスが有効(Enabled)と表示されるまで失敗します。

Firestore のルールの過去のバージョンを取得できますか?

はい、コンソールから取得できます。ルール(Rules)タブの左に過去のバージョンが並んでいるので、1 つを選んで表示し、コピーするか Firexport でエクスポートします。firebase init firestore がダウンロードするのは、最後に公開されたルールだけです。

ルールやインデックスをエクスポートすると、Firestore の読み取りが発生しますか?

いいえ。ルールとインデックスの定義はドキュメントではないので、コンソール、CLI、Firexport のどれで保存しても、データベースからは何も読み取りません。