バイブコーディングでデータベースを使う方法|Supabase連携の基本

「データベースって難しそう」——受講者との初回面談で、8割以上がこう口にする。テーブル設計、SQL、リレーション。確かに用語だけ聞くと敷居が高い。だが、バイブコーディングでデータベースを扱う分には、これらを自分で書く必要がなかった。

バイブコーディングでデータベースを使う方法、結論から言うとSupabaseかFirebaseを選び、AIにテーブル設計からクエリまで任せれば動く。必要なのは「どんなデータを保存したいか」を言語化する力だけだ。

少なくとも、僕の講座で50人以上がこの方法でデータベース連携のアプリを完成させている。

この記事でわかること
  • データベースの基本概念——プログラミング未経験者でも理解できる解説
  • Supabase vs Firebase——バイブコーディングに最適なDB選び
  • AIにデータベース設計を任せるプロンプトの書き方
  • バイブコーディングでCRUD操作を実装する手順
  • データベース連携でよくあるトラブルと対処法

データベースの基本概念——これだけ知っておけばいい

データベースとは、データを整理して保存する場所。Excelのスプレッドシートに近いイメージで考えれば十分だろう。

たとえばタスク管理アプリなら、「タスク名」「期限」「完了フラグ」「担当者」といった列を持つテーブルが1つあればいい。Excelで言うシートがテーブル、列がカラム、行がレコード。この3つの用語だけ覚えておけば、AIへの指示に困ることはなかった。

Supabase vs Firebase——バイブコーディングでのDB選び

データベースサービスの2大選択肢がSupabaseとFirebase。どちらもバイブコーディングと組み合わせて使える。

項目 Supabase Firebase
DB種類 PostgreSQL(リレーショナル) Firestore(NoSQL)
無料枠 500MB、50,000行 1GB、50,000読み取り/日
認証機能 内蔵(Auth) 内蔵(Firebase Auth)
AIとの相性 ◎(SQLベースで出力安定) ○(NoSQLはAIの出力がブレやすい)
学習コスト 低い やや高い

僕のおすすめはSupabase。理由は2つ。SQLベースなのでAIが生成するクエリの精度が高い。そしてダッシュボードからテーブルの中身を直接確認・編集できるため、デバッグが楽だった。

Firebaseを選ぶべきケースもある。リアルタイム同期が必要なチャットアプリや、Googleのエコシステム(Firebase Hosting、Cloud Functions)を活用したい場合だ。ただし初学者がバイブコーディングで最初に触るなら、Supabaseの方がつまずきにくかった。

AIにデータベース設計を任せるプロンプトの書き方

データベース設計をAIに任せる際、プロンプトの書き方が出力を大きく左右する。

最も効果的だったのは、「どんなデータを保存したいか」をリストで渡す方法。「ユーザーテーブル(名前、メール、パスワードハッシュ、登録日)と、タスクテーブル(タスク名、説明、期限、完了フラグ、担当ユーザーID)を作って」のように、テーブルとカラムを列挙する。

リレーション(テーブル同士の関連)も日本語で指示できた。「1人のユーザーが複数のタスクを持つ」と書けば、AIは外部キーを設定したSQLを生成した。ERD(Entity-Relationship Diagram)を描く必要はない。

セキュリティ設定を忘れずに

SupabaseにはRLS(Row Level Security)という仕組みがある。これを有効にしないと、誰でもデータベースの全データにアクセスできてしまう。「RLSを有効にして、ログインユーザーが自分のデータだけ読み書きできるポリシーを設定して」とAIに指示するのを忘れないこと。僕の受講者の約3割がこの設定を忘れて、テストデータが外部から見える状態になっていた。

バイブコーディングでCRUD操作を実装する

CRUD(Create, Read, Update, Delete)はデータベース操作の基本4パターン。タスク管理アプリを例に、バイブコーディングでの実装手順を示す。

1 Supabaseプロジェクトの作成

supabase.comでプロジェクトを作成し、テーブルエディタからテーブルを手動で作成する。もしくはCursorに「Supabaseのマイグレーションファイルを作って」と指示すれば、SQLが自動生成された。

2 アプリ側からSupabaseに接続

「Supabase JSクライアントを使って接続して。URLとanon keyは環境変数から読み込んで」と指示する。Supabaseの接続情報はダッシュボードの「Settings > API」から取得できた。

3 CRUDの各操作を実装

「タスクの追加フォーム、一覧表示、編集ボタン、削除ボタンを実装して。Supabaseのinsert、select、update、deleteを使って」と指示した。フォームのバリデーションも含めて、Cursorが一括で生成してくれた。

この一連の工程にかかった時間は約45分。データベースの知識がない受講者でも、1時間以内にCRUDアプリを動かせている。

データベース連携でよくあるトラブルと対処法

受講者がつまずくポイントを3つ挙げる。

トラブル1:データが保存されない

Supabaseのテーブルにデータが入らないケースの原因は、RLSポリシーの設定ミスが最も多かった。RLSが有効でポリシーが未設定だと、全てのINSERT操作が拒否される。SupabaseのダッシュボードでRLSの状態を確認するのが最初の一手だろう。

トラブル2:環境変数が読み込めない

SupabaseのURLやAPIキーが.envファイルに正しく設定されていない場合に発生する。Next.jsの場合、環境変数のプレフィックスにNEXT_PUBLIC_が必要な点を忘れがちだった。エラーが出たら環境変数名の確認が先決だ。

トラブル3:型の不一致

テーブルのカラムがinteger型なのに文字列を送信してエラーになるケースも頻発した。AIが生成するコードとテーブル定義の型が合っていない場合に発生した。テーブル定義をAIに共有すると、型の不一致を回避できる。

この記事のまとめ
  • バイブコーディングでデータベースを使うのに、SQLやDB設計の知識は不要
  • Supabase(PostgreSQL)がバイブコーディングとの相性で最も優れている
  • プロンプトでは「保存したいデータ」をテーブルとカラムのリストで渡すのが効果的
  • CRUD操作は約45分でフル実装が可能。未経験者でも1時間以内に動かせた
  • RLS(Row Level Security)の設定はセキュリティ上必須。忘れると全データが公開される
  • データ保存されない・環境変数エラー・型の不一致が三大トラブル

データベースはアプリの「記憶」。これがないと、ページをリロードするたびにデータが消える。バイブコーディングでデータベース連携ができれば、作れるアプリの実用性が格段に上がるのではないだろうか。

バイブコーディングを1日で習得しませんか?

AI登竜門では、プログラミング未経験の方でもたった1日でバイブコーディングを習得できるマンツーマン講座を開催しています。

オンライン説明会に参加する

関連記事