Firebase CLI について
Firebase CLI はターミナルから Firebase プロジェクトを管理するための完全なツールセットを提供します。プロジェクトの初期化、ローカルエミュレーターの実行、Hosting と Cloud Functions へのデプロイ、Firestore などのサービス管理をサポートしています。
主な機能
- 01Firebase プロジェクトを初期化し、既存プロジェクトにリンク
- 02開発時に Firestore、Functions、その他のサービス用にローカルエミュレーターを実行
- 03Firebase Hosting と Cloud Functions にアプリケーションをデプロイ
- 04デプロイログとプロジェクト設定を表示
活用シーン
- 01新しい Firebase バックエンドプロジェクトを設定し構成
- 02クラウド関数とデータベースロジックをローカルで開発・テスト
- 03Hosting 更新とサーバーレス関数の自動化とデプロイ
インストール
OS またはパッケージマネージャーを選び、コマンドをターミナルで実行します。
インストール後にfirebase --versionを実行して確認します。
コマンド例
よく使うコマンドを使う順に並べています。
詳細
Firebase CLI と MCP サーバー

Firebase コマンドラインインターフェース(CLI)ツールを使用すると、コマンドラインから Firebase プロジェクトをテスト、管理、デプロイできます。このリポジトリは、公式 Firebase MCP サーバーの配布元でもあります。詳しくは、Firebase MCP サーバーのドキュメントをご覧ください。
- Firebase プロジェクトにコードやアセットをデプロイする
- Firebase Hosting サイト用のローカルウェブサーバーを実行する
- Firebase データベースのデータを操作する
- Firebase Auth にユーザーをインポート/エクスポートする
Firebase CLI を使い始めるには、以下のコマンド一覧を読むか、ドキュメントをご覧ください。
ヒント
AI アシスタントを使用していますか?Firebase エージェントスキルをインストールすると、Firebase 固有の知識、ベストプラクティス、ワークフローに加え、Firebase CLI と MCP サーバーを効果的に使う方法を習得できます。
npx skills add firebase/agent-skills詳しくは、Firebase エージェントスキルのドキュメントをご覧ください。
インストール
Node パッケージ
npm(Node パッケージマネージャー)を使用して Firebase CLI をインストールできます。なお、Node.js と npm をインストールする必要があります。Node.js をインストールすると、npm もインストールされます。
Firebase CLI をダウンロードしてインストールするには、次のコマンドを実行します。
npm install -g firebase-tools
これにより、グローバルに利用できる firebase コマンドが使用可能になります。
スタンドアロンバイナリ
Firebase CLI のスタンドアロンバイナリ版を使用すると、依存関係なしで firebase 実行ファイルをダウンロードできます。
CLI をダウンロードしてインストールするには、次のコマンドを実行します。
curl -sL firebase.tools | bash
コマンド
firebase --help コマンドで利用可能なコマンドが一覧表示され、firebase <command> --help で個々のコマンドの詳細が表示されます。
プロジェクト固有のコマンドを実行する場合は、アクティブなプロジェクトエイリアスが設定されたプロジェクトディレクトリ内で実行するか、-P <project_id> フラグで Firebase プロジェクト ID を指定する必要があります。
以下に、利用可能なコマンドとその機能の概要を示します。
設定コマンド
| コマンド | 説明 |
|---|---|
| login | Firebase アカウントに認証します。ウェブブラウザーが必要です。 |
| logout | Firebase CLI からサインアウトします。 |
| login:ci | 非対話型環境で使用する認証トークンを生成します。 |
| login:add | 追加のアカウントで CLI を認証します。 |
| login:list | 認証済みの CLI アカウントを一覧表示します。 |
| login:use | このプロジェクトで使用するデフォルトのアカウントを設定します。 |
| use | アクティブな Firebase プロジェクトを設定し、プロジェクトのエイリアスを管理します。 |
| open | 関連するプロジェクトリソースをすばやくブラウザーで開きます。 |
| init | 現在のディレクトリに新しい Firebase プロジェクトをセットアップします。このコマンドは、現在のディレクトリに firebase.json 設定ファイルを作成します。 |
| help | CLI または特定のコマンドに関するヘルプ情報を表示します。 |
--no-localhost を login に追加すると(例:firebase login --no-localhost)、認証用のローカルサーバーを起動する代わりに、コードをコピーして貼り付けられます。たとえば、どこかのインスタンスに SSH 接続して、そのマシンで Firebase の認証が必要な場合に便利です。
プロジェクト管理コマンド
| コマンド | 説明 |
|---|---|
| apps:create | プロジェクトに新しい Firebase アプリを作成します。 |
| apps:list | Firebase プロジェクトに登録されているアプリを一覧表示します。 |
| apps:sdkconfig | Firebase アプリの設定を出力します。 |
| projects:addfirebase | Google Cloud Platform プロジェクトに Firebase リソースを追加します。 |
| projects:create | 新しい Firebase プロジェクトを作成します。 |
| projects:list | すべての Firebase プロジェクトの一覧を出力します。 |
デプロイとローカルエミュレーション
これらのコマンドを使用して、Firebase サービスをデプロイし、操作できます。
| コマンド | 説明 |
|---|---|
| emulators:exec | ローカルの Firebase エミュレーターを起動し、テストスクリプトを実行してから、エミュレーターを終了します。 |
| emulators:start | ローカルの Firebase エミュレーターを起動します。 |
| deploy | Firebase プロジェクトをデプロイします。firebase.json の設定とローカルのプロジェクトフォルダーを使用します。 |
| serve | Firebase Hosting の設定と HTTPS によってトリガーされる Cloud Functions を使用して、ローカルサーバーを起動します。firebase.json を使用します。 |
| setup:emulators:database | データベースエミュレーターをダウンロードします。 |
| setup:emulators:firestore | Firestore エミュレーターをダウンロードします。 |
App Distribution コマンド
| コマンド | 説明 |
|---|---|
| appdistribution:distribute | リリースバイナリをアップロードし、任意でテスターに配布して、自動テストを実行します。 |
| appdistribution:testers:list | プロジェクト内のテスターを一覧表示します。 |
| appdistribution:testers:add | プロジェクトにテスターを追加します(フラグで指定した場合はグループにも追加します)。 |
| appdistribution:testers:remove | プロジェクトからテスターを削除します(フラグで指定した場合はグループから削除します)。 |
| appdistribution:groups:list | グループ(テスターのグループ)を一覧表示します。 |
| appdistribution:groups:create | グループ(テスターのグループ)を作成します。 |
| appdistribution:groups:delete | グループ(テスターのグループ)を削除します。 |
| appdistribution:testcases:export | テストケースを YAML ファイルとしてエクスポートします。 |
| appdistribution:testcases:import | YAML ファイルからテストケースをインポートします。 |
Auth コマンド
| コマンド | 説明 |
|---|---|
| auth:import | データファイルから Firebase にアカウントを一括インポートします。 |
| auth:export | Firebase からデータファイルにアカウントを一括エクスポートします。 |
詳細なドキュメントはこちらです。
Realtime Database コマンド
| コマンド | 説明 |
|---|---|
| database:get | 現在のプロジェクトのデータベースからデータを取得し、JSON として表示します。インデックス付きデータのクエリに対応しています。 |
| database:set | 現在のプロジェクトのデータベース内の指定した場所にあるすべてのデータを置き換えます。ファイル、STDIN、またはコマンドライン引数から入力を受け取ります。 |
| database:push | 現在のプロジェクトのデータベース内の指定した場所にあるリストに新しいデータを追加します。ファイル、STDIN、またはコマンドライン引数から入力を受け取ります。 |
| database:remove | 現在のプロジェクトのデータベース内の指定した場所にあるすべてのデータを削除します。 |
| database:update | 現在のプロジェクトのデータベース内の指定した場所で部分更新を実行します。ファイル、STDIN、またはコマンドライン引数から入力を受け取ります。 |
| database:profile | データベースの使用状況をプロファイリングし、レポートを生成します。 |
| database:instances:create | Realtime Database インスタンスを作成します。 |
| database:instances:list | Realtime Database インスタンスの一覧を表示します。 |
| database:settings:get | パスで指定した Realtime Database の設定を読み取ります。 |
| database:settings:set | パスで指定した Realtime Database の設定を行います。 |
Extensions コマンド
| コマンド | 説明 |
|---|---|
| ext | ext コマンドの使用方法と、プロジェクトにインストールされている拡張機能についての情報を表示します。 |
| ext:configure | 既存の拡張機能インスタンスを設定します。 |
| ext:info | 名前で指定した拡張機能の情報を表示します(特定のバージョンを指定する場合は [email protected])。 |
| ext:install | 拡張機能をインストールします。 |
| ext:sdk:install | 拡張機能を関数コードベースで定義できるようにする SDK をインストールします。 |
| ext:list | Firebase プロジェクトにインストールされているすべての拡張機能を一覧表示します。 |
| ext:uninstall | Instance ID で指定した、Firebase プロジェクトにインストールされている拡張機能をアンインストールします。 |
| ext:update | 既存の拡張機能インスタンスを最新バージョンに更新します。 |
Cloud Firestore コマンド
| コマンド | 説明 |
|---|---|
| firestore:delete | 現在のプロジェクトのデータベースからドキュメントまたはコレクションを削除します。サブコレクションの再帰的な削除に対応しています。 |
| firestore:indexes | 現在のプロジェクトにデプロイされているすべてのインデックスを一覧表示します。 |
Cloud Functions のコマンド
| コマンド | 説明 |
|---|---|
| functions:log | デプロイ済みの Cloud Functions からログを読み込みます。 |
| functions:list | Firebase プロジェクトにデプロイされているすべての関数を一覧表示します。 |
| functions:config:set | 現在のプロジェクトの Cloud Functions 用に、ランタイム構成値を保存します。 |
| functions:config:get | 現在のプロジェクトの Cloud Functions 用に設定されている構成値を取得します。 |
| functions:config:unset | 現在のプロジェクトのランタイム構成から値を削除します。 |
| functions:config:clone | あるプロジェクト環境から別の環境にランタイム構成をコピーします。 |
| functions:secrets:set | Cloud Functions for Firebase で使用するシークレットを作成または更新します。 |
| functions:secrets:get | シークレットとそのバージョンのメタデータを取得します。 |
| functions:secrets:access | シークレットとバージョンを指定して、シークレットの値にアクセスします。デフォルトでは最新バージョンにアクセスします。 |
| functions:secrets:prune | 使用されていないシークレットを破棄します。 |
| functions:secrets:destroy | シークレットを破棄します。デフォルトでは最新バージョンを破棄します。 |
| functions:delete | 名前またはグループ名を指定して、1 つ以上の Cloud Functions を削除します。 |
| functions:shell | 関数をローカルでエミュレートし、テストデータを使ってローカル関数を呼び出せる Node.js シェルを起動します。 |
Hosting のコマンド
| コマンド | 説明 |
|---|---|
| hosting:disable | アクティブなプロジェクトへの Firebase Hosting トラフィックの配信を停止します。このコマンドを実行すると、プロジェクトの Hosting URL に「サイトが見つかりません」というメッセージが表示されます。 |
リモート構成コマンド
| コマンド | 説明 |
|---|---|
| remoteconfig:get | Firebase プロジェクトの Remote Config テンプレートを取得します。 |
| remoteconfig:versions:list | 公開済みの最新の Firebase Remote Config テンプレートバージョンの一覧を取得します。 |
| remoteconfig:rollback | --version_number フラグで指定したバージョンに、プロジェクトの公開済み Remote Config テンプレートをロールバックします。 |
| remoteconfig:experiments:get | Remote Config の実験を取得します。 |
| remoteconfig:experiments:list | Remote Config の実験一覧を取得します。 |
| remoteconfig:experiments:delete | Remote Config の実験を削除します。 |
| remoteconfig:rollouts:get | Remote Config のロールアウトを取得します。 |
| remoteconfig:rollouts:list | Remote Config のロールアウト一覧を取得します。 |
| remoteconfig:rollouts:delete | Remote Config のロールアウトを削除します。 |
firebase:deploy --only remoteconfig を使用して、プロジェクトの Firebase Remote Config テンプレートを更新し、公開します。
認証
全般
Firebase CLI では、優先度の高い順に次の 4 つの認証方法を使用できます。
- ユーザートークン - 非推奨:この認証方法は
firebase-toolsの今後のメジャーバージョンで削除されます。代わりにサービスアカウントを使用して認証してください -firebase login:ciで生成した、明示的な長期有効の Firebase ユーザートークンを指定します。これらのトークンは非常に機密性の高い長期有効の認証情報であり、ほとんどの場合に適した選択肢ではありません。代わりにサービスアカウント認証を検討してください。トークンは次のいずれかの方法で設定できます。- 任意のコマンドで
--tokenフラグを設定します。例:firebase --token="<token>" projects:list。 FIREBASE_TOKEN環境変数を設定します。
- 任意のコマンドで
- ローカルログイン -
firebase loginを実行して、自分のアカウントで CLI に直接ログインします。CLI は認証済みユーザーの認証情報をマシンにキャッシュします。 - サービスアカウント -
GOOGLE_APPLICATION_CREDENTIALS環境変数に、JSON サービスアカウントキーファイルのパスを設定します。詳細については、Google Cloud の認証の開始ガイドをご覧ください。 - アプリケーションのデフォルト認証情報 -
gcloudCLI を使用し、gcloud auth application-default loginでログインしている場合、上記の認証情報がいずれも存在しなければ、Firebase CLI はその認証情報を使用します。
複数のアカウント
デフォルトでは、firebase login によってすべてのプロジェクトで使用する単一のグローバルアカウントが設定されます。
Firebase プロジェクトで複数の Google アカウントを使用している場合は、
複数のアカウントを認証し、プロジェクト単位またはコマンド単位で使用できます。
CLI で使用する追加のアカウントを認証するには、firebase login:add を実行します。
認証済みアカウントの一覧は、firebase login:list で確認できます。
特定の Firebase プロジェクトディレクトリのデフォルトアカウントを設定するには、
そのディレクトリ内で firebase login:use を実行し、使用するアカウントを選択します。
ディレクトリのデフォルトアカウントを確認するには、firebase login:list を実行します。
現在のコンテキストのデフォルトアカウントが最初に表示されます。
特定のコマンド実行で使用するアカウントを設定するには、任意のコマンドで --account フラグを使用します。
たとえば、firebase [email protected] deploy のように指定します。
指定するアカウントは、firebase login:add を使って Firebase CLI に追加済みである必要があります。
Cloud Functions エミュレーター
Cloud Functions エミュレーターは、emulators:start、serve、functions:shell などのコマンドから利用できます。
エミュレートされた Cloud Functions は、開発マシン上で独立した node プロセスとして実行されるため、
独自の認証情報検出メカニズムを使用します。
デフォルトでは、これらの node プロセスは firebase login の認証情報を検出できません。
より快適な開発環境を提供するため、firebase login を通じて CLI にログインしている場合は、
ユーザーの認証情報を使って一時的な認証情報を作成し、GOOGLE_APPLICATION_CREDENTIALS を通じて
エミュレーターに渡します。これは、GOOGLE_APPLICATION_CREDENTIALS 環境変数を
ご自身で設定していない場合にのみ行われます。
プロキシ経由での使用
CLI は環境変数を介した HTTP(S) プロキシをサポートしています。プロキシを使用するには、環境内で HTTPS_PROXY
または HTTP_PROXY の値にプロキシの URL を設定します(例:
HTTP_PROXY=http://127.0.0.1:12345)。
CI システムでの使用
Firebase CLI で認証を完了するにはブラウザーが必要ですが、CI やその他のヘッドレス環境と完全に互換性があります。
CI 環境で Firebase コマンドを実行するには、次の手順を完了してください。各手順の詳細な説明は、Google Cloud の認証の開始ガイドをご覧ください。
- サービスアカウントを作成し、プロジェクトに適切なレベルのアクセス権を付与します。
- そのサービスアカウント用のサービスアカウントキー(JSON ファイル)を作成します。
- キーファイルを CI システム内の安全でアクセス可能な場所に保存します。
- Firebase コマンドを実行する際に、CI システムで
GOOGLE_APPLICATION_CREDENTIALS=/path/to/key.jsonを設定します。
サービスアカウントのアクセスを無効にするには、Google Cloud Console でプロジェクトのサービスアカウントを探し、キーを削除するか、サービスアカウントを無効または削除します。
モジュールとしての使用
Firebase CLI は、標準の Node モジュールとしてプログラムから使用することもできます。 各コマンドは、位置引数の後にオプションオブジェクトを受け取り、Promise を返す関数として公開されています。
たとえば、コマンドラインで次のコマンドを実行するとします。
$ firebase --project="foo" apps:list ANDROID
これは Node では次のようになります。
const client = require("firebase-tools");
client.apps
.list("ANDROID", { project: "foo" })
.then((data) => {
// ...
})
.catch((err) => {
// ...
});
オプションオブジェクトは必ず最後の引数にする必要があります。また、指定されていない
位置引数にはデフォルト値の "" が設定されます。次の
2 つの呼び出しは同等です。
const client = require("firebase-tools");
// #1 - No arguments or options, defaults will be inferred
client.apps.list();
// #2 - Explicitly provide "" for all arguments and {} for options
client.apps.list("", {});
注:Cloud Functions のような制限のある環境で使用する場合、ローカルファイルシステムへのアクセスが必要なため、
firebase-tools のすべてのコマンドがプログラムから正常に動作するとは限りません。