デプロイ・運用開始
アプリケーションを本番環境にデプロイし、運用を開始します。
デプロイ先
Frontend: Vercel
- ✓ Next.jsに最適化されたホスティング
- ✓ グローバルエッジネットワークで高速配信
- ✓ 自動HTTPS・SSL証明書
- ✓ GitHubと連携して自動デプロイ
Backend: Railway
- ✓ FastAPI + MySQL + Redisを一括管理
- ✓ GitHub連携で簡単デプロイ
- ✓ データベース・キャッシュをワンクリック追加
- ✓ 環境変数の安全な管理
Step 1: 本番設定ファイルの準備
Claude Codeへの指示
TaskFlowの本番デプロイ用設定ファイルを生成してください。 【必要なファイル】 - vercel.json(フロントエンド設定) - Procfile(Railway用) - railway.toml(Railway設定) - .env.production(バックエンド・フロントエンド) 本番環境に適したセキュリティ設定を含めてください。
vercel.json(フロントエンド)
{
// Vercel設定ファイル
"buildCommand": "npm run build",
"outputDirectory": ".next",
"rewrites": [
{
"source": "/api/:path*",
"destination": "https://your-backend.railway.app/api/:path*"
}
],
"env": {
"NEXT_PUBLIC_API_URL": "@api_url"
},
"headers": [
{
"source": "/(.*)",
"headers": [
{ "key": "X-Frame-Options", "value": "DENY" },
{ "key": "X-Content-Type-Options", "value": "nosniff" }
]
}
]
}
Procfile(バックエンド)
web: uvicorn app.main:app --host 0.0.0.0 --port $PORT
railway.toml(バックエンド)
[build] builder = "nixpacks" [deploy] startCommand = "alembic upgrade head && uvicorn app.main:app --host 0.0.0.0 --port $PORT" healthcheckPath = "/health" healthcheckTimeout = 300 restartPolicyType = "on_failure" restartPolicyMaxRetries = 3
backend/.env.production(バックエンド環境変数テンプレート)
# データベース接続(RailwayのMySQL接続URLを使用) DATABASE_URL=mysql+asyncmy://user:password@host:port/dbname # JWT認証用シークレットキー(必ずランダムな文字列に変更) SECRET_KEY=your-production-secret-key-change-this # CORS設定(Vercelのドメインを指定) CORS_ORIGINS=https://your-app.vercel.app # Redis接続URL(RailwayのRedis接続URLを使用) REDIS_URL=redis://default:password@host:port # 環境設定 ENVIRONMENT=production DEBUG=false
frontend/.env.production(フロントエンド環境変数テンプレート)
# バックエンドAPIのURL(RailwayのデプロイURLを指定)
NEXT_PUBLIC_API_URL=https://your-backend.railway.app
Step 2: Vercelへのフロントエンドデプロイ
Claude Codeへの指示
Vercelへのデプロイ手順を案内してください。 frontendディレクトリをVercelにデプロイします。 GitHubリポジトリ連携で自動デプロイを設定してください。
1. GitHubにコードをプッシュ
# リポジトリにすべての変更をプッシュ
git add .
git commit -m "prepare for production deployment"
git push origin main
2. Vercelでプロジェクトをインポート
Vercelダッシュボード(vercel.com)にログインし、「Add New Project」からGitHubリポジトリをインポートします。
- ✓ Root Directoryを
frontendに設定 - ✓ Framework PresetがNext.jsになっていることを確認
3. 環境変数を設定
Vercelの「Settings > Environment Variables」で以下を設定します。
# RailwayバックエンドのURLを指定
NEXT_PUBLIC_API_URL = https://your-backend.railway.app
4. デプロイ実行
CLIでデプロイする場合は以下のコマンドを実行します。
# Vercel CLIをインストール npm i -g vercel # frontendディレクトリでデプロイ cd frontend vercel --prod
✓ 確認ポイント
VercelのURLにアクセスし、ページが正常に表示されることを確認してください。ビルドログにエラーがないことも確認しましょう。
Step 3: Railwayへのバックエンドデプロイ
Claude Codeへの指示
Railwayへのバックエンドデプロイ手順を案内してください。 FastAPI + MySQL + Redisの構成です。 環境変数の設定とデータベースマイグレーションを含めてください。
1. Railwayでプロジェクトを作成
Railwayダッシュボード(railway.app)にログインし、「New Project」から「Deploy from GitHub repo」を選択してリポジトリを接続します。
2. MySQLサービスを追加
プロジェクト内で「+ New」から「Database > MySQL」を選択して追加します。
- ✓ 自動的にDATABASE_URL環境変数が生成されます
- ✓ 接続情報はVariablesタブで確認できます
3. Redisサービスを追加
同様に「+ New」から「Database > Redis」を選択して追加します。
- ✓ 自動的にREDIS_URL環境変数が生成されます
- ✓ WebSocket通知やキャッシュに使用します
4. 環境変数を設定
バックエンドサービスの「Variables」タブで以下を設定します。
# RailwayのMySQL接続URL(自動生成された値を参照) DATABASE_URL=${{MySQL.DATABASE_URL}} # JWT認証用シークレットキー SECRET_KEY=<ランダムな文字列を生成して設定> # CORS設定(Vercelのデプロイドメインを指定) CORS_ORIGINS=https://your-app.vercel.app # Redis接続URL(自動生成された値を参照) REDIS_URL=${{Redis.REDIS_URL}} # 環境設定 ENVIRONMENT=production
5. デプロイ実行
環境変数を設定後、Railwayが自動的にビルド・デプロイを実行します。railway.tomlのstartCommandにより、マイグレーション実行後にサーバーが起動します。
✓ 確認ポイント
RailwayのデプロイURLに /docs を付けてアクセスし、Swagger UIが表示されることを確認してください。
Step 4: デプロイ後の動作確認
フロントエンドの確認
- ☑ VercelのURLにアクセスしてトップページが表示される
- ☑ ログインページ・登録ページが正しく表示される
- ☑ スマートフォン表示(レスポンシブ)が崩れていない
- ☑ ブラウザのコンソールにエラーが出ていない
バックエンドの確認
- ☑
/docsでSwagger UIが表示される - ☑
/healthエンドポイントが正常応答を返す - ☑ CORSが正しく動作している(フロントエンドからAPIを呼べる)
- ☑ データベース接続が正常に動作している
認証フローの確認
- ☑ 新規ユーザー登録ができる
- ☑ ログインしてトークンが取得できる
- ☑ 認証が必要なページにアクセスできる
- ☑ 未認証時にログインページへリダイレクトされる
機能テスト
- ☑ プロジェクトを新規作成できる
- ☑ タスクを作成・編集・削除できる
- ☑ タスクのドラッグ&ドロップでステータスを変更できる
- ☑ 2つのブラウザタブでリアルタイム同期が動作する
セキュリティ確認
- ☑ HTTPSで通信されている(URLが https:// で始まる)
- ☑ 環境変数がフロントエンドに露出していない
- ☑ CORSが本番ドメインのみに制限されている
- ☑ APIレスポンスに不要な内部情報が含まれていない
完成!
おめでとうございます!
AI駆動開発 上級編を完了しました。
TaskFlowプロジェクトを通じて、要件定義からデプロイまで、
全工程をAIと協力して進める方法を学びました。
習得したスキル
- ✓ AIを活用した要件定義・設計手法
- ✓ Next.js + FastAPIのフルスタック開発
- ✓ データベース設計とマイグレーション
- ✓ 認証・認可の実装
- ✓ WebSocketによるリアルタイム通信
- ✓ テスト戦略とCI/CDパイプライン構築
- ✓ 本番環境へのデプロイと運用
次のステップ
機能追加
通知機能、高度なフィルター、全文検索、ファイル添付など、実務で求められる機能を追加して発展させましょう。
パフォーマンス最適化
Lighthouse分析、画像最適化、APIレスポンスのキャッシュ戦略、データベースクエリの最適化に取り組みましょう。
スケーリング対応
ユーザー数の増加に備えて、負荷分散、データベースレプリケーション、CDN活用などを検討しましょう。
他のプロジェクトで実践
学んだAI駆動開発のワークフローを、ECサイト、SNS、SaaSなど別のプロジェクトで実践してスキルを定着させましょう。