【Supabase】自動生成されるREST APIを叩いてみよう
Supabaseとは?
Backend As A Service(以下BaaS)の一種で、Firebaseの代替製品を名乗っている。
実はオープンソースなのでGithubにPublicリポジトリがある。
代表的な機能は以下の5つ。今回の記事では主にデータベース機能を利用する。
| 機能 | 概要 |
|---|---|
| Database | PostgreSQLが採用されたデータベース |
| Authentication | アプリに認証やアクセス制御の機能を組み込む |
| Storage | 画像や動画などを保存するオンラインストレージ |
| Edge Functions | TypeScriptの関数をサーバーレスで実行する |
| Realtime | 同じアプリを利用しているユーザー同士のリアルタイム通信機能 |
料金形態(2026/2)
AWS AmplifyやFirebaseのような従量課金制ではなく、所謂サブスクである。
Freeプランがあるので、まずは気軽にBaaSに触れてみたいという人にもおすすめできる。
| Free | Pro | Team | Enterprise |
|---|---|---|---|
| $0/month | $25/month | $599/month | 要相談 |
各プランの詳細な差分についてはpricingのページに記載されている。
Supabaseの強みと弱み
強み
- サービスの利用にかかるコストを予測しやすく、クラウド破産のリスクを低減できる。
- テーブルを作成するだけでREST APIが自動生成される。
- BaaSとしてはシンプルな構成で分かりやすい。
- Row Level Securityを簡単に設定できる。
- Self-hostも可能。ベンダーロックインのリスクを低減できる。
弱み
- AWS/GCPの方が高負荷のトラフィックに強い。
- AWS/GCPほど機能が成熟していないため、企業の基幹インフラとしては採用しにくい。
- IaaSと比較すると流石に構築の自由度は低い。
- UIが英語のみで、日本語ローカライズには未対応。
REST APIとは?
過去に書いた記事で解説しているのでそちらを参照してみよう。
ハンズオン
前提
- Supabaseのアカウントは既に作成済みとする。
- 今回のハンズオンはFreeプランでも問題なく実践できる。
- <your_supabase_api_key>はSettings -> API Keysのページで発見できる。
- APIキーは2種類存在するが、今回はデフォルトのPublishable keyを利用する。
- また、<your-project>の部分にはSettings -> Generalのページに
記載されているProject IDを当てはめる。
ゴール設定
- プロジェクトの新規作成ができる。
- SQL Editorを利用したテーブルの新規作成ができる。
- curlコマンドを利用してREST APIの動作確認ができる。
- REST APIの自動生成の利便性を確認する。
プロジェクトの新規作成
-
Projectsのページで「New project」をクリックする。

-
プロジェクトの新規作成画面に遷移するので、下記の画像のように情報を入力し
「Create new project」をクリックする。Database passwordについては
「Generate a password」をクリックすることで自動生成が可能なので活用してみよう。
注意点としては「Enable Data API」のチェックボックスは必ずオンにしておくこと。
これがオフになっているとREST APIの自動生成が行われなくなってしまう。

テーブルの新規作成
今回はSQL Editorを利用してusersテーブルを新規作成してみよう。
SQL Editorのページで下記のSQL文を入力してから「Run」をクリックすると
usersテーブルを新規作成できる。
CREATE TABLE users (
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
user_name TEXT NOT NULL,
email TEXT,
age INT,
phone_number TEXT,
created_at TIMESTAMPTZ DEFAULT NOW()
);
REST APIの動作確認
curlコマンドを利用してREST APIの動作確認をしてみよう。
POST→GET→PATCH→DELETEの順に検証を行う。
Supabaseにおいて、更新はPUTよりもPATCHを使うのが推奨されているため、
今回のハンズオンでもそれに従うものとする。
作業環境
- Windows11
- PowerShell
post001.jsonの作成
POSTメソッドの動作確認で利用するJSONファイルを予め作成しておく。
{
"user_name": "中村 亮",
"email": "ryonakamura@example.com",
"age": 33,
"phone_number": "090-1111-1111"
}
補足として、テーブルのidが下記のような設定であれば
UUIDが自動生成されるため、POST時のid指定が不要となる。
また、created_atも現在時刻が自動的に入るため指定不要である。
| Name | Type | Default Value |
|---|---|---|
| id | uuid | gen_random_uuid() |
| created_at | timestamptz | now() |
POSTメソッドの動作確認
post001.jsonが保管されているディレクトリで下記のcurlコマンドを実行してみよう。
なお、PowerShellでバッククォート(`)を使用して改行する場合は、
バッククォートの直後に半角スペースが含まれているとエラーになるため要注意。
curl.exe -X POST `
-H "Content-Type: application/json" `
-H "apikey: <your_supabase_api_key>" `
-d "@post001.json" `
"https://<your-project>.supabase.co/rest/v1/users"
GETメソッドの動作確認
先程POSTしたデータが本当にusersテーブルの中に格納されているのかを確認するため、
下記のcurlコマンドを実行してみよう。JSON形式のデータが返却されれば成功である。
curl.exe -X GET `
-H "apikey: <your_supabase_api_key>" `
"https://<your-project>.supabase.co/rest/v1/users"
patch001.jsonの作成
PATCHメソッドの動作確認で利用するJSONファイルを予め作成しておく。
{
"user_name": "田中 健",
"email": "tanakaken@example.com",
"age": 37,
"phone_number": "090-9999-9999"
}
PATCHメソッドの動作確認
GETメソッドで確認したデータをPATCHメソッドで置換してみよう。
ちなみに<UUID>の部分には先程のGETメソッドで確認したidを入力すればよい。
成功したら先程のGETメソッドをもう一度実行してちゃんと置換されているかも確認する。
curl.exe -X PATCH `
-H "Content-Type: application/json" `
-H "apikey: <your_supabase_api_key>" `
-d "@patch001.json" `
"https://<your-project>.supabase.co/rest/v1/users?id=eq.<UUID>"
DELETEメソッドの動作確認
最後に、DELETEメソッドの動作確認をしてみよう。
成功したら先程のGETメソッドをもう一度実行してテーブルの中身が空になっているかも確認する。
curl.exe -X DELETE `
-H "apikey: <your_supabase_api_key>" `
"https://<your-project>.supabase.co/rest/v1/users?id=eq.<UUID>"
おわりに
AWSでREST APIを作成した時と比較すると分かりやすいが、
やはりテーブルの作成直後にREST APIを利用できるというのは
開発スピードの面で非常に大きなアドバンテージとなる。
特に個人開発や小規模な企業においてはかなり有力な選択肢と言っても過言ではないだろう。
Supabaseは「データベース=API」という設計思想を採用しており、
従来のAPIファーストなクラウド構成とは異なる開発体験を提供する。
この思想は特にデータ中心のアプリケーションにおいて高い生産性を発揮するため、
プロジェクト特性に応じて採用を検討する価値は十分にあると言える。
Discussion