初級編約35分
初級⑤ データを保存する
“ひとことメモ帳”を作り、RLSという門番を自分の手で立てる
今日は「ひとことメモ帳」を作ります。ログインした本人だけが、自分のメモを保存・閲覧・削除できるアプリ。データベースと、そして無料講座で予告したRLS(行レベルセキュリティ)を、ついに自分の手で扱います。
今日のゴール
メモを保存→リロードしても残っている→別のアカウントからは見えないことを確認する。最後の確認こそが、今日の主役です。
STEP1:テーブルと“門番(RLS)”を作る
SupabaseのダッシュボードでSQL Editorを開き、これを貼って Run します(メモの保管棚+「自分の行しか触れない」門番を一度に作るSQLです)。
create table if not exists public.memos (
id bigint generated always as identity primary key,
user_id uuid not null references auth.users (id) on delete cascade,
body text not null check (char_length(body) <= 500),
created_at timestamptz not null default now()
);
alter table public.memos enable row level security;
drop policy if exists "memos_select_own" on public.memos;
create policy "memos_select_own"
on public.memos for select using (auth.uid() = user_id);
drop policy if exists "memos_insert_own" on public.memos;
create policy "memos_insert_own"
on public.memos for insert with check (auth.uid() = user_id);
drop policy if exists "memos_delete_own" on public.memos;
create policy "memos_delete_own"
on public.memos for delete using (auth.uid() = user_id);いま何をした?
create table=メモの棚を作る。enable row level security=門番を立てる。create policy=「自分の行だけ 見られる/書ける/消せる」という門番のルール。認証(誰?)と認可(何をしてよい?)が、ここでつながりました。
STEP2:メモ画面をAIに実装してもらう
/memos ページを作って。ログインしている人だけが使える。テキスト入力と「保存」ボタン、自分のメモ一覧(新しい順)、各メモに削除ボタン。Supabaseの public.memos テーブル(user_id, body, created_at)を使って。未ログインの人には /login への案内を出して。まず計画を見せて。計画OK→実行→mainに反映、のいつもの流れで。
STEP3:保存されるか確認
- 公開URLの /memos でログインして、メモをいくつか保存。
- ページを再読み込み——メモが残っていたら、データベース保存成功!
- 1つ削除してみる。
STEP4:門番が働いているか“2アカウント”で確認
- 別のメールアドレスでもう1つアカウントを登録する(テスト用)。
- そのアカウントで /memos を開く。
- さっきのメモが1つも見えなければ——RLS、完璧に機能しています。
この確認を“儀式”にしよう
RLSの設定漏れは、実際に世界中で起きているデータ漏洩事故の定番です。データを扱うアプリを作ったら、必ず2アカウントで見え方を確認。この10分の儀式が、あなたとユーザーを守ります。
おさらい:今日使った“言葉”
- テーブル
- データの棚。memosには user_id・body・created_at を保存。
- RLS(行レベルセキュリティ)
- 「自分の行しか触れない」門番。enableで立てて、policyでルールを書く。
- ポリシー
- 門番のルール。select(見る)/insert(書く)/delete(消す)ごとに設定。
- 2アカウント確認
- 他人のデータが見えないことを実際に確かめる儀式。
初級⑤・完成チェック
0 / 4つまずいたら
①保存してもエラー→SQLを実行し忘れていないか確認。エラー文はそのままAIへ。②メモが表示されない→ログインしているか確認。③別アカウントでも見えてしまう→大事故の芽!「memosテーブルのRLSとポリシーを確認して」とAIに相談。
お疲れさまでした!
ログイン+保存+安全(RLS)——アプリの三種の神器が揃いました。次回⑥は初級編の仕上げ。公開状態を整えて、希望者は独自ドメインまで。ゴールは目の前です。