コンテンツにスキップ

Chapter 6: データベースの接続

ダッシュボードにリアルなデータを流し込むため,Vercel の Postgres をセットアップします。GitHub 連携から環境変数の配置,初期データの投入まで一気に進めましょう。


この章で身につくこと

  • プロジェクトを GitHub に公開して Vercel と連携する
  • Vercel で Postgres データベースを作成し,環境変数を設定する
  • シードスクリプトで初期データを投入する
  • API ルートを使ってクエリの動作を確認する

Step 1. GitHub リポジトリを用意する

まだリポジトリを作成していない場合は,GitHub のガイド を参考に nextjs-dashboard プロジェクトを push しておきましょう。GitLab や Bitbucket でも構いませんが,ここでは GitHub を使用します。


Step 2. Vercel アカウントを作成する

  1. Vercel のサインアップページHobby プラン を選択し,Continue with GitHub をクリックします。
  2. 連携が済むと Import Project 画面が表示されるので,作成したリポジトリを選んで「Import」→「Deploy」と進めます。 alt text alt text alt text

デプロイが完了すると,ドメインやビルドの履歴が確認できるダッシュボードへ遷移します。以降は main ブランチへ push するたびに自動デプロイされ,Pull Request ごとにプレビュー URL も生成されます。


Step 3. Postgres データベースを作る

  1. プロジェクトダッシュボードで Storage タブを開き,「Create Database」を選択。
  2. Postgres を選び,表示されるプロバイダ(Neon や Supabase など)から好きなものを選択します。 alt text
  3. リージョンは Vercel プロジェクトと同じ Washington D.C (iad1) を選ぶと遅延が最小になります。 alt text
  4. 作成が完了したら .env.local タブの Show secret を押し,表示された環境変数をコピーします。 alt text

ローカルリポジトリの .env.example.env にリネームし,コピーした内容を貼り付けてください。

重要

.gitignore.env が含まれているか必ず確認し,認証情報が公開リポジトリへ上がらないよう注意しましょう。


Step 4. データベースをシードする

チュートリアルではブラウザから実行できるシード API を用意しています。次の手順で初期データを投入します。

  1. 開発サーバーを起動する。

    Terminal
    pnpm dev
    
  2. ブラウザで http://localhost:3000/seed を開く。

Database seeded successfully と表示されれば成功です。スクリプトは SQL でテーブルを作成し,placeholder-data.ts の内容を流し込みます。完了後は /app/seed/route.ts を削除して問題ありません。


トラブルシューティング

  • シークレットは「Reveal」してからコピーしてください。伏せ字のままだと .env に正しい値が入らず接続に失敗します。
  • パスワードハッシュには bcrypt を使用しています。環境によって動かない場合は bcryptjs に置き換えても構いません。
  • シードに失敗したらテーブルを削除して再実行できます。

    DROP TABLE tablename;
    

    ※テーブルとデータがすべて消えるので,本番環境では使用しないでください。


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 で返ってくれば接続完了です。


これでバックエンドの基盤が整いました。次章からはデータを読み込み,ダッシュボードへ表示していきます。