初級編のカリキュラムへ

初級編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:保存されるか確認

  1. 公開URLの /memos でログインして、メモをいくつか保存。
  2. ページを再読み込み——メモが残っていたら、データベース保存成功!
  3. 1つ削除してみる。

STEP4:門番が働いているか“2アカウント”で確認

  1. 別のメールアドレスでもう1つアカウントを登録する(テスト用)。
  2. そのアカウントで /memos を開く。
  3. さっきのメモが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)——アプリの三種の神器が揃いました。次回⑥は初級編の仕上げ。公開状態を整えて、希望者は独自ドメインまで。ゴールは目の前です。