初級編約40分
初級④ ログインをつける
初級の山場。このサイトと同じ会員機能を、あなたのアプリに
初級編の山場です。無料講座「ログイン機能(認証)」で学んだSupabaseを使って、あなたのアプリに会員登録・ログインを付けます。ちなみに、いまあなたが使っているこの学習サイトの会員機能も、まったく同じ作り方です。
今日のゴール
自分のアプリで「会員登録→ログイン→ログアウト」が一周できること。手順が多めなので、休み休みでOK。エラーが出たらそのままAIに貼る——いつもの黄金手順を忘れずに。
STEP1:Supabaseのプロジェクトを作る
- supabase.com で「Start your project」→ GitHubでサインアップ(またソーシャルログイン!)。
- 「New project」→ 名前は my-app、Region は Tokyo(Northeast Asia)を選ぶ。
- データベースのパスワードを決めて、必ずメモ(あとで使うことがある)。
- 数分待つと、プロジェクトのダッシュボードが開く。
STEP2:“2つの鍵”を控える
プロジェクトの 設定(Project Settings)→ API を開き、次の2つをメモ帳にコピーしておきます。
- Project URL
- あなたのSupabaseの住所(https://〇〇.supabase.co)。
- anon public キー
- ブラウザに置く前提の“公開用の鍵”。これを使う。
service_role キーには触らない
同じ画面にある service_role キーは“全権限のマスターキー”。アプリに書いたり、AIのチャットに貼ったりは絶対にしないこと(セキュリティの回で学んだ「鍵を外に置かない」の最重要ポイントです)。
STEP3:Vercelに“環境変数”として渡す
鍵はコードに直書きせず、環境変数に入れます(デプロイの回で学んだやつの実践!)。
- Vercelの my-app →「Settings」→「Environment Variables」。
- 名前 NEXT_PUBLIC_SUPABASE_URL = さっきの Project URL を追加。
- 名前 NEXT_PUBLIC_SUPABASE_ANON_KEY = anon public キーを追加。
- 「Deployments」から最新のデプロイを Redeploy(環境変数は再デプロイで反映される)。
STEP4:AIにログイン機能を実装してもらう
このアプリにSupabaseでメール+パスワードのログイン機能を付けたい。@supabase/supabase-js と @supabase/ssr を使って。/login ページで会員登録とログインができて、ヘッダーにはログイン状態(メールアドレス)とログアウトボタンを表示。環境変数は NEXT_PUBLIC_SUPABASE_URL と NEXT_PUBLIC_SUPABASE_ANON_KEY を使う前提で。まず計画を見せて。計画を読んでOKしたら実行→mainに反映。山場ほど「計画→OK→実行」です。
STEP5:Supabase側の仕上げ設定
- Supabaseの Authentication の設定で、テスト中は「Confirm email(メール確認)」を一旦オフにすると動作確認がスムーズ(本番公開時にオンに戻すのがおすすめ)。
- URL Configuration の Site URL に、あなたの公開URL(https://〇〇.vercel.app)を設定。
STEP6:一周してみる
- 公開URLの /login で会員登録(自分のメールでOK)。
- ログインして、ヘッダーに自分のメールが出るか確認。
- ログアウトして、表示が戻るか確認。
おさらい:今日使った“言葉”
- Supabase
- 認証+データベースのセット。このサイトと同じ基盤。
- anon キー
- 公開前提の鍵。service_role は絶対に出さない。
- 環境変数
- 鍵をコードに直書きせず、安全に渡す仕組み。変更後はRedeploy。
- 認証
- 「あなたは誰?」を確かめる仕組み。次回は“認可”(誰が何を見られるか)へ。
初級④・完成チェック
0 / 5つまずいたら(ここは特に遠慮なくAIへ)
①画面が真っ白/エラー→Vercelのログをコピーして「このエラーを直して」。②登録メールが来ない→Confirm emailがオンのまま。オフにするか、迷惑メールを確認。③ログインしても表示が変わらない→環境変数の名前のスペルと、Redeploy済みかを確認。
お疲れさまでした!!
会員機能が動くアプリを持っているのは、もう立派な開発者です。次回⑤は、ログインした人のデータを保存します——そして、いよいよRLS(門番)を自分の手で立てます。