本文へ移動

AI Buildersのための最新のニュース、知見、事例を毎日お届け

運営会社
コーディングエージェントSupabase

Supabase CLI、worktreeごとのローカル環境とDockerなしの起動に対応

Supabase CLI v2.119.0の実験的な機能で、1台のパソコンでgitのworktreeごとに別のローカル環境を動かせるようになった。複数のコーディングエージェントが互いのデータベースを壊さずに作業でき、Dockerのない環境でも動く。

記事の内容を自社でどう進めるか、内容が固まっていない段階でも相談できます。仕事の相談

毎週 1 回、その週の記事から 5 本と実践の 1 本を選んでメールで届けます。ニュースレターを購読する(無料)

Supabase の図。2 つの端末の窓で、エージェントごとの手元の Supabase が動く
画像: Supabase

Supabaseは、1台のパソコンで複数のローカル環境を同時に動かせるようにした。gitのworktreeごとに別のPostgres、Storage、Edge Functions、MCPサーバーが立ち上がるので、複数のコーディングエージェントが互いのデータベースを壊さずに作業できる。Dockerのない環境でも動く新しい実行方式も加わった。どちらもCLI v2.119.0からの実験的な機能だ。Supabaseを使っていない人にも、エージェントを並べるなら1体ごとにデータベースを分ける、という考え方は参考になる。

worktreeごとに環境が分かれる

これまでローカルのSupabaseは、1台に1つが前提だった。エージェントを2体並べて、片方に課金機能、もう片方にサインアップの作り直しを任せると、同じデータベースを取り合うことになる。片方がデータベースをリセットすれば、もう片方のテストが落ちる。

新しいCLIでは、worktreeごとにsupabase startを実行すれば、それぞれに独立した環境ができる。ポートはCLIが自動で選び、再起動しても同じ番号を覚えている。エージェントは決め打ちの既定値を使わず、JSONで出力される接続先とキーを読みにいく。worktreeごとのローカル環境を紹介したSupabaseの公式ブログは、ポートやプロジェクトIDを手で調整しなくてよくなる点を「CLIで最も要望の多かった変更の一つ」と書いている。

起動もメモリも大きく軽くなった

もう一つの変化は軽さだ。起動時にはPostgresだけを動かし、Storageなどほかのサービスは最初のリクエストが来るまで眠らせておく。使わなければ動かない。

公式ブログの表では、これまでの既定の方式と、新しいDockerなしの方式を次のように比べている(数字は表のとおり)。

  • 起動(キャッシュあり):37秒から3.9秒
  • 待機中のメモリ(既定の設定):2.6GiBから290MiB
  • ダウンロード量:1.9GBから360MB

新しい方式をDockerで動かした場合も、起動は5.2秒、待機中のメモリは同じ290MiB、ダウンロード量は550MBだった。

Supabaseは「以前1つ分だったメモリに、待機中の環境が9つ入る」としている。数字はすべてSupabase自身の計測で、第三者の検証はまだ見当たらない。

Dockerなしでも動く新しい方式

Dockerなしの方式は、13あるサービスをすべて普通のプロセスとして動かす。pgvectorを含む拡張機能もそろう。コンテナを動かせないクラウドのサンドボックスやCIで、エージェントにSupabaseを持たせたい場合に効く。対応するのはLinux(amd64とarm64、glibc 2.35以降)と、AppleシリコンのmacOS 14以降だ。

ただし、手元のパソコンで複数の環境を並べるなら、Supabaseは引き続きDockerを勧めている。コンテナごとにネットワークとファイルが分かれるからだ。使い分けは「パソコンで何体も並べるならDocker、サンドボックスに1つならDockerなし」と考えればよい。

このほか、プルリクエストを開いた時に作られるリモートのブランチ環境も速くなった。準備が終わるまでの時間は、中央値で102秒から21秒、遅い側の95パーセンタイルで7.6分から41秒。こちらは設定不要で、すべてのプロジェクトですでに有効だ。認証やStorageの設定、デプロイ済みのEdge Functionsは引き継ぎ、秘密の値は持ち込まず、本番データも自分で選ばない限り持ち込まない。

使う前に知っておくこと

複数環境とDockerなしの方式は、まだ実験的な扱いだ。使うにはCLIをv2.119.0以降に上げ、新しいアプリなら環境変数SUPABASE_EXPERIMENTAL_STACKを1にして初期化する。既存のアプリは設定ファイルconfig.tomlのexperimentalの欄でstackを有効にし、ポート設定を外す手順に沿う。新しい方式のデータは今のローカル環境とは別に保存され、フラグや出力の形は今後変わる可能性がある。Supabaseも、作業の流れを移す前に違いと制限の説明を読むよう求めている。

編集部の見方

Claude CodeやCodexでworktreeを切ってエージェントを並べている人にとって、データベースの取り合いは地味だが厄介な問題だった。片方のリセットでもう片方のテストが落ちる、という事故を、設定1つで避けられるようになった意味は大きい。ただし数字はSupabase自身の計測で、機能もまだ実験的だ。まずは本番に関わらない小さなリポジトリで、2体を並べて試すのがよさそうだ。

出典

に確認(日本時間)

  1. worktree ごとのローカル環境を紹介した Supabase の公式ブログ(supabase.com)

この記事をシェア

この記事は役に立ちましたか