Chapter 6: データベースの接続
ダッシュボードにリアルなデータを流し込むため,Vercel の Postgres をセットアップします。GitHub 連携から環境変数の配置,初期データの投入まで一気に進めましょう。
この章で身につくこと
- プロジェクトを GitHub に公開して Vercel と連携する
- Vercel で Postgres データベースを作成し,環境変数を設定する
- シードスクリプトで初期データを投入する
- API ルートを使ってクエリの動作を確認する
Step 1. GitHub リポジトリを用意する
まだリポジトリを作成していない場合は,GitHub のガイド を参考に nextjs-dashboard プロジェクトを push しておきましょう。GitLab や Bitbucket でも構いませんが,ここでは GitHub を使用します。
Step 2. Vercel アカウントを作成する
- Vercel のサインアップページ で Hobby プラン を選択し,Continue with GitHub をクリックします。
- 連携が済むと Import Project 画面が表示されるので,作成したリポジトリを選んで「Import」→「Deploy」と進めます。

デプロイが完了すると,ドメインやビルドの履歴が確認できるダッシュボードへ遷移します。以降は main ブランチへ push するたびに自動デプロイされ,Pull Request ごとにプレビュー URL も生成されます。
Step 3. Postgres データベースを作る
- プロジェクトダッシュボードで Storage タブを開き,「Create Database」を選択。
- Postgres を選び,表示されるプロバイダ(Neon や Supabase など)から好きなものを選択します。

- リージョンは Vercel プロジェクトと同じ Washington D.C (iad1) を選ぶと遅延が最小になります。

- 作成が完了したら
.env.localタブの Show secret を押し,表示された環境変数をコピーします。
ローカルリポジトリの .env.example を .env にリネームし,コピーした内容を貼り付けてください。
重要
.gitignore に .env が含まれているか必ず確認し,認証情報が公開リポジトリへ上がらないよう注意しましょう。
Step 4. データベースをシードする
チュートリアルではブラウザから実行できるシード API を用意しています。次の手順で初期データを投入します。
-
開発サーバーを起動する。
-
ブラウザで http://localhost:3000/seed を開く。
Database seeded successfully と表示されれば成功です。スクリプトは SQL でテーブルを作成し,placeholder-data.ts の内容を流し込みます。完了後は /app/seed/route.ts を削除して問題ありません。
トラブルシューティング
- シークレットは「Reveal」してからコピーしてください。伏せ字のままだと
.envに正しい値が入らず接続に失敗します。 - パスワードハッシュには
bcryptを使用しています。環境によって動かない場合はbcryptjsに置き換えても構いません。 -
シードに失敗したらテーブルを削除して再実行できます。
※テーブルとデータがすべて消えるので,本番環境では使用しないでください。
Step 5. クエリが動くか確認する
/app/query/route.ts には listInvoices() を呼び出してレスポンスを返すルートハンドラーが用意されています。
SELECT invoices.amount, customers.name
FROM invoices
JOIN customers ON invoices.customer_id = customers.id
WHERE invoices.amount = 666;
コメントアウトを解除し,ブラウザで http://localhost:3000/query にアクセスしてください。請求金額と顧客名が JSON で返ってくれば接続完了です。
これでバックエンドの基盤が整いました。次章からはデータを読み込み,ダッシュボードへ表示していきます。