セットアップ手順書
前提条件
- Azureアカウント・サブスクリプションあり
- GitHubアカウントあり
- Node.js 22以上インストール済み
- VSCode等のエディタ
1. Azureリソース作成
リソースグループ
- リージョン:Japan East
VNet
- アドレス空間:10.0.0.0/16
- サブネット1:App Service用(10.0.1.0/24)プライベートサブネット有効
- サブネット2:DB用(10.0.2.0/24)プライベートサブネット有効
App Service
- ランタイム:Node.js 22 LTS / Linux
- リージョン:Japan East
- プラン:Premium V3 P0V3(B1はクォータ不足になる場合あり)
- ネットワーク → VNet統合 → App Service用サブネットを選択
- スタートアップコマンド:node server.js
Azure Database for PostgreSQL フレキシブルサーバー
- リージョン:Japan East
- バージョン:16
- ワークロード:Dev/Test
- コンピューティング:B1ms
- 認証:PostgreSQLとMicrosoft Entra認証
- ネットワーク:プライベートアクセス(VNet統合)→ DB用サブネットを選択
- 注意:ネットワーク接続方法は作成後変更不可
2. GitHubリポジトリ・Next.jsプロジェクト作成
- GitHubでPrivateリポジトリ作成(.gitignore:Node)
- Next.jsプロジェクトを作成(TypeScript・ESLint・Tailwind・src/・App Router・Import Alias有効、React Compiler無効)
- next.config.ts に output: 'standalone' を追加
- .env を .gitignore に追加
- GitHubにpush
3. GitHub Actionsデプロイ設定
- App Serviceの発行プロファイルをダウンロード
- GitHubシークレットに AZUREAPPSERVICE_PUBLISHPROFILE として登録
- ワークフローファイルを作成:
- Node.js 22でビルド
- standaloneフォルダに static・public・prismaをコピー
- .next/standalone をApp Serviceにデプロイ
- pushして動作確認
4. Prisma設定
- prisma@6 と @prisma/client@6 をインストール(7系は設定方法が異なるため6系固定)
- npx prisma init でschema.prismaを生成
- schema.prismaにSummaryモデルを定義(id・company・role・product・summary・createdAt)
- App Serviceの環境変数に DATABASE_URL を設定
5. DBの初期化
- src/app/api/seed/route.ts を作成
- POSTリクエストでテーブル作成(CREATE TABLE IF NOT EXISTS)とテストデータ投入を行う
- pushしてデプロイ後にcurlでPOSTリクエストを送信
- 成功確認後、seedファイルを削除してpush
6. API・ライブラリ作成
- src/lib/db.ts:Prismaクライアントのシングルトン
- src/app/api/summaries/route.ts:company・role・productでDB検索するGETエンドポイント
- src/app/page.tsx:会社名・役職・商品を入力して検索するフォーム画面
注意点・ハマりポイント
- npx create-next-app はリポジトリのルートで . を指定して実行(入れ子に注意)
- App ServiceはPremium V3以上でないとVNet統合が使えない場合あり(クォータ申請が必要なこともある)
- Prismaは必ず6系を使う(7系はschema.prismaの書き方が変わる)
- standaloneビルドでは node_modules/.bin/prisma が含まれないため、スタートアップコマンドでのマイグレーション自動化は工夫が必要
- .env は絶対にGitHubにpushしない
- seedエンドポイントは使用後すぐに削除する
タスク一覧
✅ 比較的簡単に実現可能なタスク
- seedエンドポイントの削除
- Entra認証の設定(App Service → 認証 → IDプロバイダー追加)
- OpenAI APIキーをApp Serviceの環境変数に登録
- /api/session エンドポイント作成(エフェメラルキー発行)
- WebRTCの実装(useWebRTCフック)
- フロント画面の改善(ロールプレイ開始ボタンの実装)
- TanStack Queryの導入
⚠️ 要注意タスク
- VPN Gateway (P2S) の設定
- GatewaySubnetは作成済み
- VPN Gateway作成中(30〜45分かかる)
- 完成後にPoint-to-Site設定・証明書作成・クライアント設定が必要
- 完成すればローカルから直接DB操作可能
- DBマイグレーションの自動化
- 現状:seedエンドポイント経由で手動
- VPN Gateway完成後はローカルから npx prisma migrate deploy で実行可能
- 将来的にはSelf-hosted Runner経由での自動化が理想
- 環境変数の管理
- 現状:App Serviceの環境変数に直接設定
- DATABASE_URL と OPENAI_API_KEY が対象
- 将来的にはAzure Key Vaultでの管理が理想
