Supabaseとは?データ保存とログインを支える裏側の仕組み
アプリの裏側をまとめて用意する
Supabaseは、アプリのデータ保存やログインなどを支えるサービスです。中心はPostgreSQLというデータベースで、情報を表に整理して保存します。Authは利用者の認証、Storageは画像などのファイル保存を担当します。画面を作る道具とは役割が違い、Webサイトの裏側を組み立てる部品として使います。必要な機能だけを選び、最初から全てを使う必要はありません。
画面・ログイン・データの関係
例えば学習メモのアプリなら、画面で入力したメモをデータベースへ保存し、次に開いたときに読み出します。Authでログインした人を見分け、誰のメモかを管理します。ただし、ログイン機能を付けただけで他人のデータが見えなくなるわけではありません。「本人は自分のメモだけ読める」といったアクセスのルールを、保存先でも設定する必要があります。
練習用データで小さく始める
最初は、保存したい項目を紙に書き出しましょう。学習メモなら「本文・作成日・所有者」などです。公式の入門手順で練習用プロジェクトと表を用意し、架空のデータを一件だけ保存して読み出します。次にログインと権限を確認します。AIへ依頼するときも「表を作る」だけでなく、「誰が何を読めて、変更できるか」を一緒に伝えることが重要です。
- 利用者の画面
- Authで本人を確認+RLSで許可を判定
- Databaseの本人のメモ
RLSはデータごとの入場ルール
RLSは、表の行ごとにアクセスを制限する仕組みです。「ログイン中の本人の行だけ許可する」などの条件を書きます。ブラウザーから使う公開用キーは秘密ではなく、そのキーだけで情報を守るものではありません。公開する表ではRLSを有効にし、必要な操作だけを許可する方針を設定します。ログアウト状態と別の利用者でも試し、見えてはいけないメモが取得できないことを確認しましょう。例えば二人分の架空の利用者を用意し、一人目のメモを二人目が読めないかを試します。読み取りだけでなく、追加・更新・削除でも同じルールを確かめます。画面にボタンがないことはアクセス禁止の証明ではないため、データ側の権限まで確認することが必要です。
秘密キーと本番データを守る
強い権限を持つsecretキーや旧service_roleキーは、ブラウザーやGitHub、チャットへ置きません。これらはRLSを迂回できるため、サーバー側でも利用者の権限確認が必要です。古い教材のキー名をそのままコピーせず、公式の現行案内を確認してください。顧客情報を入れる前に、権限、バックアップ、保存地域、料金を見直します。最初の目標は「保存できた」だけでなく、「本人だけが読めた」までです。