Firebase Studio ワークスペースをカスタマイズする

Firebase Studio を使用すると、次の内容を記述する単一の .idx/dev.nix 構成ファイルを定義することで、プロジェクト固有のニーズに合わせてワークスペースを調整できます。

  • コンパイラやその他のバイナリなど、(ターミナルからなど)実行する必要があるシステム ツール
  • インストールが必要な拡張機能(プログラミング言語のサポートなど)。
  • アプリのプレビューの表示方法(ウェブサーバーを実行するコマンドなど)。
  • ワークスペースで実行されているローカル サーバーが使用できるグローバル 環境変数

使用可能なオプションの詳細については、dev.nix リファレンスをご覧ください。

Nix と Firebase Studio

Firebase StudioNix を使用して、各ワークスペースの環境構成を定義します。具体的には、Firebase Studio は以下を使用します。

  • ワークスペース環境を記述する Nix プログラミング言語。Nix は関数型プログラミング言語です。dev.nix ファイルで定義できる属性とパッケージ ライブラリは、Nix 属性セット構文に従います。

  • ワークスペースで使用可能なシステム ツールを管理する Nix パッケージ マネージャー。これは、APT(aptapt-get)、Homebrew(brew)、dpkg などの OS 固有のパッケージ マネージャーに似ています。

Nix 環境は再現可能で宣言的であるため、Firebase Studio のコンテキストでは、Git リポジトリの一部として Nix 構成ファイルを共有し、プロジェクトで作業するすべてのユーザーが同じ環境構成を持つようにできます。

基本的な例

次の例は、プレビューを有効にする基本的な環境構成を示しています。

{ pkgs, ... }: {

  # Which nixpkgs channel to use.
  channel = "stable-23.11"; # or "unstable"

  # Use https://search.nixos.org/packages to find packages
  packages = [
    pkgs.nodejs_20
  ];

  # Sets environment variables in the workspace
  env = {
    SOME_ENV_VAR = "hello";
  };

  # Search for the extensions you want on https://open-vsx.org/ and use "publisher.id"
  idx.extensions = [
    "angular.ng-template"
  ];

  # Enable previews and customize configuration
  idx.previews = {
    enable = true;
    previews = {
      web = {
        command = [
          "npm"
          "run"
          "start"
          "--"
          "--port"
          "$PORT"
          "--host"
          "0.0.0.0"
          "--disable-host-check"
        ];
        manager = "web";
        # Optionally, specify a directory that contains your web app
        # cwd = "app/client";
      };
    };
  };
}

システム ツールを追加する

クラウド サービスのコンパイラや CLI プログラムなどのシステム ツールをワークスペースに追加するには、Nix パッケージ レジストリで一意のパッケージ ID を見つけdev.nix ファイルの packages オブジェクトに追加します。接頭辞は「pkgs.」にします。

{ pkgs, ... }: {
  # Which nixpkgs channel to use.
  channel = "stable-23.11"; # or "unstable"

  # Use https://search.nixos.org/packages to find packages
  packages = [
    pkgs.nodejs_20
  ];
  ...
}

これは、APT(aptapt-get)、Homebrew(brew)、dpkg などの OS 固有のパッケージ マネージャーを使用してシステム パッケージをインストールする場合とは異なります。必要なシステム パッケージを明示的に記述することで、Firebase Studio ワークスペースを簡単に共有して再現できます。

ローカルノード バイナリを使用する

ローカルマシンの場合と同様に、ローカルにインストールされたノード パッケージに関連するバイナリ(package.json で定義されたパッケージなど)は、npx コマンドで呼び出すことで、ターミナル パネルで実行できます。

さらに便利な点として、node_modules フォルダがあるディレクトリ(ウェブ プロジェクトのルート ディレクトリなど)にいる場合は、npx 接頭辞なしでローカルにインストールされたバイナリを直接呼び出すことができます。

gcloud コンポーネントを追加する

すべての Firebase Studio ワークスペースで、Google Cloud 用の gcloud CLI のデフォルト構成を使用できます。

追加のコンポーネントが必要な場合は、dev.nix ファイルに追加できます。

{ pkgs }: {
  packages = [
    ...
    (pkgs.google-cloud-sdk.withExtraComponents [
      pkgs.google-cloud-sdk.components.cloud-datastore-emulator
    ])
    ...
  ];
}

IDE 拡張機能を追加する

OpenVSX 拡張機能レジストリを使用して Firebase Studio に拡張機能をインストールするには、次の 2 つの方法があります。

  • Firebase Studio の [拡張機能] パネルを使用して、拡張機能を検出してインストールします。このアプローチは、次のようなユーザー固有の拡張機能に最適です。

    • カスタムのカラーテーマ
    • エディタ エミュレーション(VSCodeVim など)
  • dev.nix ファイルに拡張機能を追加する。これらの拡張機能は、ワークスペース構成を共有するときに自動的にインストールされます。このアプローチは、次のようなプロジェクト固有の拡張機能に最適です。

    • プログラミング言語拡張機能(言語固有のデバッガなど)
    • プロジェクトで使用されているクラウド サービスの公式拡張機能
    • コード フォーマッタ

後者のアプローチでは、完全修飾拡張 ID(<publisher>.<id> 形式)を見つけて idx.extensions オブジェクトに追加することで、IDE 拡張機能を dev.nix ファイルに含めることができます。

{ pkgs, ... }: {
  ...
  # Search for the extensions you want on https://open-vsx.org/ and use the format
  # "<publisher>.<id>"
  idx.extensions = [
    "angular.ng-template"
  ];
  ...
}

共通サービスを追加する

Firebase Studio では、開発中に必要となる一般的なサービスのセットアップと構成も簡素化されています。たとえば、次のようなサービスがあります。

  • コンテナ
    • Docker(services.docker.*
  • メッセージ
    • Pub/Sub エミュレータ(services.pubsub.*
  • データベース
    • MySQL(services.mysql.*
    • Postgres(services.postgres.*
    • Redis(services.redis.*
    • Spanner(services.spanner.*

ワークスペースでこれらのサービスを有効にする方法については、dev.nix リファレンスservices.* をご覧ください。

プレビューをカスタマイズする

アプリのプレビューをカスタマイズする方法については、アプリのプレビューをご覧ください。

ワークスペース アイコンを設定する

ワークスペースのカスタム アイコンを選択するには、dev.nix ファイルと同じレベルの .idx ディレクトリ内に icon.png という名前の PNG ファイルを配置します。Firebase Studio は、このアイコンを使用してダッシュボードでワークスペースを表します。

このファイルはソース管理(Git など)にチェックインできるため、Firebase Studio を使用するときに、プロジェクトで作業するすべてのユーザーがプロジェクトの同じアイコンを表示できるようになります。このファイルは Git ブランチによって異なる可能性があるため、このアイコンを使用して、ベータ版アプリ ワークスペースと本番環境アプリ ワークスペースを視覚的に区別したり、その他の目的に使用したりできます。

カスタマイズをテンプレートに変換する

環境構成を、誰でも新しいプロジェクトの構築に使用できる「スターター環境」にするには、カスタム テンプレートを作成するをご覧ください。

すべてのカスタマイズ オプションを確認する

環境構成スキーマの詳細については、dev.nix リファレンスをご覧ください。

次のステップ