応用編 第7章

バックエンド入門

基礎編で作ったアプリは「自分のブラウザ専用」でした。この章では、複数の端末・複数の人でデータを共有できる本格的なアプリへ進化させます。鍵になるのはSupabaseというサービスです。

この章のレッスン
  1. バックエンドで何が変わるのか
  2. BaaSという近道 — Supabaseとは
  3. Supabaseをはじめる
  4. データベースの基本
  5. ToDoアプリをクラウド対応にする
  6. ログイン機能をつける
  7. 公開前のセキュリティ基礎

7-1バックエンドで何が変わるのか

基礎編のToDoアプリはlocalStorage保存でした。これには限界があります。スマホとPCでデータが共有されない、家族と一緒に使えない、ブラウザのデータを消すと全部消える——。

バックエンドがあると、できること

機能localStorageのみバックエンドあり
複数端末でデータ共有
複数人で同じデータを使う
ログイン(ユーザーごとのデータ)
データの安全な保管△(端末依存)

構成のイメージ

データの流れ
【今まで】
ブラウザ ←→ localStorage(同じ端末の中)

【これから】
ブラウザ ←→ インターネット ←→ データベース(クラウド上)
                                ↑
                  スマホからも、家族の端末からも同じデータに届く
💡 ここだけ押さえる ・バックエンド = データを「クラウド上」に置き、誰からでも届くようにする仕組み
・「端末をまたぎたい」「人と共有したい」と思った時がバックエンドの導入時

7-2BaaSという近道 — Supabaseとは

本来、バックエンドを作るにはサーバーの構築・管理という大仕事が必要です。しかし今はBaaS(Backend as a Service)という「できあいのバックエンドを借りるサービス」があります。

代表的なBaaS

サービス特徴
Supabase本格的なデータベース(PostgreSQL)が使える。無料枠が広い。このコースの採用サービス
FirebaseGoogle製。実績豊富でモバイルアプリに強い

Supabaseで借りられるもの

これらを無料枠の範囲で、管理画面からポチポチ設定するだけで使えます。個人開発の規模なら無料枠でほぼ事足ります。

💡 ここだけ押さえる ・BaaS = できあいのバックエンドを借りるサービス。サーバー管理不要
・Supabase = データベース・認証・ストレージが無料で使えるBaaS
・個人開発の規模なら無料枠で十分

7-3Supabaseをはじめる

アカウント作成とプロジェクト準備

  1. supabase.com にアクセスし、GitHubアカウントでサインアップ(第6章で作ったアカウントが使えます)
  2. 「New Project」でプロジェクトを作成。名前は自由(例:my-todo-cloud)、リージョンは「Northeast Asia (Tokyo)」を選択
  3. データベースのパスワードを設定(パスワード管理ツール等に必ず控える)

接続情報を確認する

プロジェクトができたら、Settings → API で次の2つを確認できます。アプリからSupabaseに接続するときに使う「住所と入場券」です。

Claude Codeへの伝え方
Supabaseのプロジェクトを作りました。
Project URLとanon keyを渡すので、このアプリから
Supabaseに接続できるよう設定してください。

URL: (ここに貼り付け)
anon key: (ここに貼り付け)
⚠️ 注意 Settings画面には「service_role key」という絶対に公開してはいけない強力なキーもあります。ブラウザで動くアプリに使うのは「anon key」だけ。service_role keyは渡さない・貼らない・コードに書かない、を徹底してください。

7-4データベースの基本

データベース(DB)は「データの保管庫」ですが、実体はExcelの表によく似ています

3つの基本用語

用語Excelでいうと例(ToDoアプリ)
テーブルシート「todos」という表
カラム(列)列の見出しid、内容、完了フラグ、作成日時
レコード(行)1行のデータ「買い物に行く・未完了・6/11」

SQLとは

データベースへの命令語をSQLと呼びます。読めなくて大丈夫ですが、雰囲気だけ見ておきましょう。

SQLの例(読むだけでOK)
-- todosテーブルから未完了のタスクを取り出す
SELECT * FROM todos WHERE done = false;

-- 新しいタスクを追加する
INSERT INTO todos (content, done) VALUES ('買い物に行く', false);

英語として素直に読めば意味が伝わるはずです。実際の開発ではSQLもClaude Codeが書いてくれます。あなたは「テーブル=表、カラム=列、レコード=行」の対応だけ覚えておけば、AIの説明が理解できます。

🖐 やってみよう Supabaseの管理画面「Table Editor」で、ToDo用のテーブルを作ってみましょう。やり方はClaude Codeに「SupabaseでToDoアプリ用のテーブル設計を考えて。Table Editorでの作成手順も教えて」と聞けば、項目まで提案してくれます。

7-5ToDoアプリをクラウド対応にする

準備が整いました。第6章で作ったToDoアプリを、localStorage保存からSupabase保存に切り替えます。

進め方

プロンプト(コピーして使えます)
このToDoアプリのデータ保存先を、localStorageから
Supabaseのデータベースに切り替えたいです。

【Supabase情報】
- Project URL: (貼り付け)
- anon key: (貼り付け)
- テーブル名: todos(作成済み)

【お願い】
1. まず現状のコードを確認して、変更計画を説明してください
2. 私がOKと言ってから着手してください
3. 切り替え後、追加・完了・削除が同期されることを
   確認する手順も教えてください

動作確認のポイント

💡 うまくいかないときは Supabase連携の典型的なつまずきは「RLS(後述)の設定」です。エラーが出たら、F12のConsoleのメッセージをClaude Codeに貼り付けて「Supabaseに接続できません。原因を調べて」と頼みましょう。

7-6ログイン機能をつける

今のままでは、URLを知っている人全員が同じToDoリストを見てしまいます。「ユーザーごとに自分のデータだけ見える」ようにするのが認証(ログイン機能)です。

認証の仕組み(ざっくり)

  1. ユーザーがメールアドレス+パスワードで登録(サインアップ)
  2. ログインすると「本人証明書(トークン)」がブラウザに発行される
  3. 以降のデータ操作には自動で証明書が添えられ、サーバーは「この人のデータだけ」を返す

この仕組みを自作するのは大変ですが、Supabaseの認証機能(Supabase Auth)を使えばClaude Codeにほぼお任せできます

プロンプト
このToDoアプリにログイン機能を追加してください。

【要件】
- メールアドレス+パスワードで新規登録・ログイン・ログアウト
- ログインしていない人にはログイン画面だけ表示
- タスクはユーザーごとに分かれて保存される
- Supabase Authを使う

まず必要な作業の全体像を説明してください。
Supabase側の設定が必要なら、その手順も案内してください。
🖐 やってみよう 自分のメールアドレスでアカウントを作り、家族のアドレスでもう1つ作って、それぞれのタスクが混ざらないことを確認してみましょう。

7-7公開前のセキュリティ基礎

データを預かるアプリには、安全のための最低限の作法があります。難しい理論は不要。次の4つを守れば、個人開発として十分な水準です。

セキュリティ4つの作法

  1. RLSを必ず有効にする — RLS(Row Level Security)は「自分の行(データ)しか触れない」ようにするSupabaseの仕組み。テーブルごとに有効化し、ルール(ポリシー)を設定します。Claude Codeに「全テーブルにRLSが正しく設定されているか確認して」と頼めばチェックできます。
  2. 秘密のキーは公開しない — service_role keyやパスワードをコードに書かない。GitHubに上げる前に「公開してはいけない情報が含まれていないか確認して」とAIにチェックさせる習慣を。
  3. パスワードは使い回さない — Supabase・GitHub・Cloudflareなど、サービスごとに別のパスワード+可能なら二段階認証を。
  4. 個人情報は最小限に — 名前や住所など、アプリに本当に必要なデータ以外は集めない。持っていないデータは漏れようがありません。
公開前のセキュリティチェック・プロンプト
このアプリを公開する前にセキュリティチェックをしたいです。
以下の観点でコードと設定を確認して、問題点と対策を
初心者向けに説明してください。
1. 公開してはいけないキーや情報が含まれていないか
2. SupabaseのRLS設定は適切か
3. その他、個人開発として最低限やるべき対策
🎉 第7章 修了 ログインできて、データがクラウドに保存されて、ユーザーごとに分離されている——これはもう本物のWebサービスの構成です。基礎編からの大きなレベルアップ、おめでとうございます!

📝 第7章 理解度チェック

全問正解できたら次の章へ進みましょう。