Skip to content

データベース連携

このセクションでは、Vercel Postgresを使ってデータを保存できるようにします。

ゴール

  • ToDoデータがデータベースに保存される
  • ページを更新してもデータが残る
  • CRUD(作成・読取・更新・削除)が全てできる

CRUD操作の概念

1. Vercel Postgresとは

Vercel Postgresは、Vercelが提供するデータベースサービスです。

メリット:

  • Vercelアカウントがあれば無料で使える
  • 設定が簡単
  • Next.jsとの相性が良い

2. プロジェクトをVercelに連携

まず、ToDoアプリのフォルダでVercelと連携します。

Vercelにプロジェクトをリンク

bash
vercel link

以下の質問に答えます:

  1. 「Set up」Y を入力
  2. 「Which scope」 → 自分のアカウントを選択
  3. 「Link to existing project?」N を入力(新規作成)
  4. 「What's your project's name?」todo-app と入力
  5. 「In which directory is your code located?」 → そのままEnter

3. データベースを作成

Vercel Postgresを作成

Claude Codeに指示:

vercel postgres create todo-db コマンドでデータベースを作成して

または、ターミナルで直接実行:

bash
vercel postgres create todo-db

確認メッセージ

「Created Postgres database」と表示されれば成功です。

環境変数をダウンロード

bash
vercel env pull .env.local

これでデータベースの接続情報が .env.local ファイルに自動で保存されます。

セキュリティ注意

.env.local ファイルには秘密情報が含まれます。GitHubにpushしないでください(通常は自動で除外されます)。

4. データベース接続を設定

Claude Codeに指示:

Vercel Postgresに接続するための設定をして。
@vercel/postgres パッケージを使って。

5. データベーステーブルを作成

ToDoを保存するためのテーブルを作成します。

Claude Codeに指示

ToDoを保存するためのデータベーステーブルを作成して。

テーブル名:todos
カラム:
- id: 自動採番
- title: ToDoの内容(文字列)
- completed: 完了フラグ(真偽値)
- created_at: 作成日時

6. APIを作成

フロントエンドとデータベースをつなぐAPIを作成します。

Claude Codeに指示

ToDoのCRUD操作をするAPIを作成して。

エンドポイント:
- GET /api/todos - 全てのToDoを取得
- POST /api/todos - 新しいToDoを作成
- PUT /api/todos/[id] - ToDoを更新(完了/未完了)
- DELETE /api/todos/[id] - ToDoを削除

7. フロントエンドをAPIに接続

画面からAPIを呼び出すように変更します。

Claude Codeに指示

ToDoアプリのフロントエンドを、作成したAPIを使うように修正して。

- ページ読み込み時にAPIからToDoを取得
- 追加ボタンでAPIを呼び出してToDoを追加
- 完了切替でAPIを呼び出してToDoを更新
- 削除ボタンでAPIを呼び出してToDoを削除

8. 動作確認

開発サーバーを再起動

開発サーバーを再起動して

テスト

  1. ToDoを追加

    • 入力して追加ボタンをクリック
    • リストに追加される
  2. ページを更新(重要!)

    • ブラウザを更新
    • データが残っている! 🎉
  3. 完了にする

    • ToDoをクリック
    • 更新してもデータが残っている
  4. 削除する

    • 削除ボタンをクリック
    • 更新してもデータが消えたまま

トラブルシューティング

データベース接続エラー

データベース接続エラーを確認して修正して

APIエラー

APIのエラーログを確認して修正して

データが保存されない

ToDoの追加処理を確認して、データベースに保存されているか確認して

チェックリスト

  • [ ] データベースが作成されている
  • [ ] 環境変数が設定されている
  • [ ] ToDoを追加できる
  • [ ] ページ更新後もデータが残る
  • [ ] 完了/未完了の切り替えができる
  • [ ] 削除ができる

次はデプロイに進みます!