Firebase CLIとは何か?使い方を実例で解説!firebaes initでどれを選ぶべきか?(.firebaserc, firebase.json)

firebase-prograshi(プロぐらし)-kv Firebase
記事内に広告が含まれていることがあります。

Firebaseを使って開発を始めると、必ずと言っていいほど直面するのが「Firebase CLI」の導入です。Webサイトの公開や高度な設定管理には、このCLIツールが欠かせません。

しかし、いざ導入して firebase init を実行すると、聞き慣れない専門用語や選択肢が並び、どれを選べばいいか迷ってしまうものです。

また、生成される .firebasercfirebase.json といったファイルは、プロジェクトの命綱とも言える重要な役割を持っています。

本記事では、初心者の方に向けてFirebase CLIの基礎から、初期設定時のベストな選択肢、そして主要ファイルの役割まで、実例を交えて解説しています。


Firebase CLIとは何か?

Firebase CLIは、自分のPCのターミナルやコマンドプロンプトから、Firebaseを直接操作するためのツールです。

CLIとは何か?

CLIは「Command Line Interface」の略で、コマンドで命令する操作画面のことです。

なお、一般的なマウスでボタンをクリックして操作する方法をGUIと言います。


Firebase CLIでできること

Firebaseにはブラウザ上で操作できる「Firebaseコンソール」がありますが、CLIを使わないとできないことや、CLIの方が圧倒的に効率的な作業がたくさんあります

プロジェクトの初期化(firebase init)

firebase init

アプリに必要な設定ファイルを一瞬で自動作成します。


デプロイ(firebase deploy)

firebase deploy

自分のパソコンで作ったWebサイトやプログラムを、コマンド1つで世界中に公開します。


ローカルでのテスト(firebase emulators:start)

firebase emulators:start

ネットに繋がずに、自分のパソコン内だけでFirebaseの機能(データベースやログインなど)が正しく動くか試せます。


セキュリティルールの管理(firebase deploy –only firestore:rules)

データの守り方(誰が読み書きできるか)をファイルとして保存し、管理できます。

Firestoreのセキュリティルールをデプロイする場合は以下のコードを実行します。

firebase deploy --only firestore:rules


なぜFirebase CLIを使うのか?

開発スピードが上がる

firebase deploy と打つだけで、数秒でサイトが更新されます。

このため、ブラウザを開いて、ファイルをアップロードして、ボタンを押して……という手間がなくなります。


設定を「ファイル」として残せる

ブラウザ上の操作だと「どこをどう設定したか」を忘れがちですが、CLIを使うと設定がコード(ファイル)として残ります。

これにより、チーム開発で設定を共有したり、過去の状態に戻したりするのが簡単になります。


自動化ができる

一般的なアプリは、プログラムを書き換えたら自動的にFirebaseに反映されるような仕組みを作ります。

この「自動化」にCLIは欠かせません。


Firebase CLIのインストールとログイン方法

【手順1】Node.jsとnpmのインストール

Firebase CLIを使うためにはNode.jsとnpmがインストールされている必要があります。


なお、自分のPCにインストール済みか確認するには以下のコマンドを実行し、バージョンが表示されるか確認します。バージョンが表示されればインストール済みです。

node -v
npm -v


【手順2】Firebase CLIのインストール

以下のコマンドを実行しFirebase CLIをインストールします。

-gオプションをつけてグローバルにインストールします。

npm install -g firebase-tools
基本はグローバルでインストールする

Firebase CLIは、基本的にグローバルでインストールします。

グローバルでインストールする場合は1度のインストールで、他のプロジェクトでもFirebase CLIが使えます。


プロジェクト毎にインストールしたい場合

プロジェクト毎にインストールしたい場合は「-g」オプションなしで実行します。

npm install firebase-tools


既にインストール済みか確認したい場合

既にインストール済みか確認するには、以下のコマンドを実行し、バージョンが表示されるか確認します。

firebase -v


【手順3】Firebaseにログインする

Firebase CLIをインストールしただけでは、Firebase CLIとFirebaseは繋がっていません

以下のコマンドを実行し、ログインする必要があります。

firebase login

Geminiを使うか?やデータを共有してもいいか?と聞かれるのでお好みで設定します。

ウィンドウが起動し、Googleアカウントへのログイン画面になります。Firebaseを使用しているアカウントでログインします。画面以下のように表示されればログイン完了です。


必要に応じてログアウトする

firebase loginで一度ログインが完了すればログアウトしない限りずっとつながっています。

個人のPCであればログインしっぱなしで問題ありませんが、公共のPCや他人のPCでログインした場合は必ずログアウトする必要があります。

firebase logout


以上でFirebase CLIが使える状態になりました。


プロジェクト一覧の表示(firebase projects:list)

参考として以下のコマンドを実行すると、現在Firebaseに作成しているプロジェクトの一覧を取得することができます。

firebase projects:list


firebase init(プロジェクトと各サービスの紐づけ)

firebase initを実行する場合

firebase initは全てのプロジェクトで実行しなければいけないわけではありません。

例えば、FirestoreやAuthentication、Admin SDKなどを使て、フロントエンドを操作するだけであれば、firebase init は必要ありません。

firebase initがなくてもFirebaseからデータの取得などのやり取りができます。

firebase initが必要になるのは以下の場合です。

firebase initを必要なケース
  1. Webサイトを公開する(デプロイする)
    https://your-project.web.app のようなURLで世界中に公開(Hosting)したい時。
  2. セキュリティルールをコードで管理したい
    コンソール経由ではなく、手元でファイルを作成しセキュリティルールを設定する場合。


既にプロジェクトを作成済みでも実行できる

firebase initをせずに開発を進めている場合でも、後からfirebase initを実行することができます。

firebase initはFirebaseと接続したり、接続に必要なファイルを自動生成する機能なので、既存のプロジェクトファイルを上書きするといったことはありません。

何度も実行できる!

後から追加したいサービスが増えた場合に、再度「firebase init」を実行してそのサービスを選択すれば、指定したサービスを追加することができます。

既存のサービスを初期化することはないので安心してください(※既存ファイルを上書きするか聞かれた場合はNoを選択してください。)


【実例】firebase initの手順

プロジェクトのルートディレクトリfirebase initを実行すると、そのフォルダを Firebase プロジェクトとして使うための初期設定を行います

firebase init


進めていいかと聞かれるのでYを選択します。

 Are you ready to proceed? Yes


使いたいサービスを選びます。spaceで選択します。

Which Firebase features do you want to set up for this directory? Press Space to select features, then Enter to  
confirm your choices.
 ◯ Firestore: Configure security rules and indexes files for Firestore
 ◯ Genkit: Setup a new Genkit project with Firebase
 ◯ Functions: Configure a Cloud Functions directory and its files
 ◯ App Hosting: Set up deployments for full-stack web apps (supports server-side rendering)
 ◯ Hosting: Set up deployments for static web apps
 ◯ Storage: Configure a security rules file for Cloud Storage
 ◯ Emulators: Set up local emulators for Firebase products
 ◯ Extensions: Set up an empty Extensions manifest
 ◯ Realtime Database: Configure a security rules file for Realtime Database and (optionally) provision default     
instance
 ◯ AI Logic: Set up Firebase AI Logic with app provisioning
 ◯ Data Connect: Set up a Firebase Data Connect service
機能名概要できること
Firestore進化版データベースデータの保存・管理
GenkitAI開発用ツール生成AI(ChatGPTのような機能)をアプリに組み込む
Functionsサーバー専用プログラムログイン時にメールを送るなど、裏側で自動処理をする
App Hosting次世代のWeb公開Next.js など、サーバーで動く最新のWebアプリを公開する
Hosting定番のWeb公開HTML/CSS/JSなどの静的サイトをサクッと公開する
Storageファイル置き場ユーザーが投稿した画像や動画を保存する
EmulatorsPC上の仮想Firebase【超おすすめ】 ネットに繋がず自分のPC内でテストする
Extensions拡張機能パッケージ画像のリサイズなど、便利な既製品プログラムを使う
Realtime Database元祖データベースチャットなど、超リアルタイムな更新をする
AI LogicAI連携の簡略化複雑なAIのロジックをFirebase上で管理する
Data ConnectSQLデータベースFirestoreではなく、PostgreSQLのような型に強いDBを使う
後から追加も可能

ここで選択しなくても後から再度「firebase init」で追加しなおすことができます。(★既存のサービスを再度選んでも元のデータを消去することはありません)

一部のサービスはコンソールでの対応が必要

firebase initで選択したサービスがすぐに使えるようになるわけではありません。一部のサービスはFirebaseコンソール上で追加の設定が必要な場合もあります。

追加の設定が必要な場合はエラーが出るので、その内容に従って対応すれば問題ありません。

サービスコンソールでの操作理由
Hosting不要init して deploy すれば、自動的にサービスが開始されます。
Firestore必要最初に「本番モード」か「テストモード」か、保存場所(リージョン)をどこにするかを選ぶ必要があるため。
Storage必要Firestoreと同様、最初に保存場所を決める必要があるため。
Functions必要(プラン変更)有料プラン(Blazeプラン)への切り替えが必要になるため。


プロジェクトの形態を選びます(新規なのか既存なのかなど)

? Please select an option:
❯ Use an existing project
  Create a new project
  Add Firebase to an existing Google Cloud Platform project
  Don't set up a default project


セキュリティルールを記述するファイルを選択します。(firestoreを選択した場合)

 What file should be used for Firestore Rules? (firestore.rules)


インデックスファイルのファイル名を指定します。(firestoreを選択した場合)

 What file should be used for Firestore indexes? (firestore.indexes.json)
firestore.indexes.jsonとは何か?

firestore.indexes.jsonファイルは、Firestoreで複雑な検索を高速に行うための設定ファイルです


「Firebase initialization complete!」と表示されればインストールは完了です。



firebase initで生成されるファイル

導入するサービスで何を選択したかにもよりますが、以下のファイルが追加されます。

.firebaserc
firebase.json
firestore.indexes.json (firestore用)
firestore.rules (firestore用)


.firebasercとは何か?

.firebaserc は、現在のフォルダと、Firebase上のどのプロジェクトを紐づけるかを示したファイルです。

プロジェクトIDなど、どこにデプロイするのかといった情報が記述してあります。

{
  "projects": {
    "default": "my-project-id"
  }
}


本番環境(production)とテスト環境(staging)でデプロイ先を分ける場合、以下のように記述します。

{
  "projects": {
    "default": "my-project-id",
    "prod": "prod-project-id"
  }
}

firebase use prodを実行することで、デプロイ先をテスト用から本番用へ切り替えることができます。



firebase.jsonとは何か?

firebase.json は、Firebase CLIの設定ファイルです。

Firebaseの各サービスをどのように動かすかを細かく指定する役割を担います。

firebase.jsonの指示内容の例
  • Hosting: どのフォルダ(publicdist など)を公開するか、リダイレクト設定はどうするか。
  • Firestore: セキュリティルールやインデックスの設定はどのファイルを参照するか。
  • Functions: どのディレクトリにソースコードがあるか、実行環境(Node.jsのバージョンなど)はどうするか。
  • Emulators: パソコン内のどのポート番号(8080など)を使って仮想サーバーを立ち上げるか。


例えば、HostingとFirestoreを使っている場合、以下のような中身になります。

{
  "firestore": {
    "rules": "firestore.rules",
    "indexes": "firestore.indexes.json"
  },
  "hosting": {
    "public": "public",
    "ignore": [
      "firebase.json",
      "**/.*",
      "**/node_modules/**"
    ]
  }
}


【注意点】.firebaserc、firebase.json

削除してはいけない

.firebasercを削除すると、Firebase CLIがこのフォルダがどのプロジェクトと紐づいているか判断できなくなります(firebase deployでエラーが発生します)。

firebase.jsonを削除すると、ターミナルからのデプロイやテストができなくなります


中身を書き換えたらdeployが必要

firebase.jsonを書き換えただけではFirebaseに反映されません。

必ず、firebase deployを実行して、設定をクラウドに反映する必要があります


タイトルとURLをコピーしました