メインコンテンツまでスキップ

ローカル開発環境

SupabaseはCLIを提供しているので、ローカルでアプリケーションを開発し、そのアプリケーションをSupabaseプラットフォームにデプロイできます。

前提条件

依存関係

始める前に、これらがローカルマシンにインストールされていることを確認してください。

Supabase CLIでログイン

Supabase CLIをインストールした後は、Supabaseアカウント(サインアップはapp.supabase.com)を使ってログインできます。

supabase login

この操作は一度だけです。ログイン後、CLIはSupabaseプロジェクトを管理するための権限を持つようになります。

はじめに

プロジェクトを初期化

ローカルマシンに新しいフォルダーを作成します。

# プロジェクト・フォルダーを作成
mkdir your-project

# 作成したフォルダーに移動
cd your-project

# gitリポジトリを処理化
git init

このコマンドにより、プロジェクト用に空のフォルダーを作成し、新しいgitリポジトリーをはじめることができます。

Supabaseを初期化

作成したフォルダーに移動して、Supabaseを初期化してみましょう。

supabase init

このコマンドを実行すると、ローカルでプロジェクトを開発するためのすべての設定を保持するsupabaseフォルダーが作成されます。

ローカルで開発

Supabaseを開始

supabase start

このstartコマンドはDockerを使用して、Supabaseのすべてのオープンソースなサービスを開始します。 このコマンドは、ビルドするサービスが多いため、実行に時間がかかります。

このコマンドが実行されると、ローカルのSupabaseの認証情報を含む出力が表示されます。

stopコマンドでいつでもすべてのサービスを停止できます。

サービスに直接アクセスする

# デフォルトURL:
postgresql://postgres:postgres@localhost:54322/postgres

ローカルのPostgresインスタンスは、psqlや、 pgadminなどのPostgresクライアントからアクセスできます。

例えば、以下のようになります。

psql 'postgresql://postgres:postgres@localhost:54322/postgres'

データベース・マイグレーション

データベースの変更は「マイグレーション」によって管理されます。データベースのマイグレーションは、時間の経過に伴うデータベースの変更を追跡する一般的な方法です。

データベースを変更する

このガイドでは、提供されている「Supabase Studio」のリンクを使用して、employeesというテーブルを作成します。

note

データベースに慣れている方なら、supabase startで表示されるDB URLを使って任意のSQLを実行できます。

Studioを開き、「SQL Editor」セクションに移動し、以下のSQLコマンドを実行します。

create table employees (
id integer primary key generated always as identity,
name text
);

さて、ローカルのデータベースにemployeesテーブルがありますが、これをどのようにマイグレーションに組み込むのでしょうか。CLIで次を実行すると自動的に変更を検出できます。

supabase db commit create_employees

これは supabase/migrations/<タイムスタンプ>_create_employees.sqlという名前の新しいマイグレーションを作成します。そして、supabase start以降のローカルのデータベースに対するすべての変更を反映します。

サンプルデータを追加

サンプルのデータをテーブルに追加してみましょう。そのためには、supabase/seed.sqlsupabase initを実行した際に生成されたファイル)のシード・スクリプトを利用できます。

-- in supabase/seed.sql
insert into public.employees (name)
values
('Erlich Backman'),
('Richard Hendricks'),
('Monica Hall');

ここで、以下を実行して、マイグレーション・スクリプトとシード・スクリプトを再実行します。

supabase db reset

Studioでもう一度見てみると、今度はemployeesの中身が見えるはずです。

データベースの変更をリセットする

もし、ローカルのデータベース上で実行したSQLを元に戻したい場合には、resetコマンドを使用できます。

-- 変更を反映するためにローカルのデータベースで実行
alter table employees
add department text default 'Hooli';

この変更を元に戻すには、次のように実行します。

supabase db reset

そうすると、ローカルのデータベースはリセットされます。

デプロイ

ローカルでアプリケーションを開発したので、app.supabase.comに移動して、変更をデプロイするプロジェクトを作成します。

プロジェクトをリンク

note

プロジェクトのリンクに必要なコマンドはいくつかあります。現在、これらのコマンドを1つのコマンドに統合しているところです。ご容赦ください。

supabase linkdb remote setを使って、プロジェクトとリモートのプロジェクトを関連付けしましょう。


supabase link
# Use "supabase link --project-ref your-project-ref" to link your project in one step.

supabase db remote set 'postgresql://postgres:<your_password>@db.<your_project_ref>.supabase.co:5432/postgres'
# Use the connection string from your Supabase project here.

supabase db remote commit
# capture any changes that you have made to your database before setting up the CLI

supabase/migrations..._remote_commit.sqlというマイグレーションが追加されていることを確認できます。 このマイグレーションは、リモートのSupabaseプロジェクトのスキーマと一致させるために、ローカルのデータベースに加えた必要な変更を取り込みます。

データベースの変更をデプロイ

ローカルのデータベースのマイグレーションをデプロイするには、db push を使用します。

supabase db push

エッジ・ファンクションをデプロイ

functions deployを使用して、エッジ・ファンクションをデプロイできます。

supabase functions deploy <function_name>

制限

ローカル開発環境は、Platformほど機能が充実していません。以下の違いがあります。

  • Storageのインターフェースは近日公開予定です。
  • Functionのインターフェースは近日公開予定です。
  • インターフェースによるログはサポートされていません(ただしdockerコンテナ経由でアクセスできます)。
  • ダッシュボードからプロジェクトの設定を更新できません(代わりにCLIを使って更新します)。

次のステップ