このプロジェクトは、フロントエンド (React + Vite) とバックエンド (Go + Vertex AI) で構成されています。
- Node.js (v24以上推奨)
- Go (1.24以上推奨)
- Google Cloud CLI (gcloud)
ローカルから Vertex AI (Gemini) を呼び出すために、Application Default Credentials (ADC) を設定します。
gcloud auth application-default loginブラウザが開いて Google アカウントへのログインを求められます。
ローカル環境からGCP上のCloud SQLへ接続するために、Cloud SQL Auth Proxy を利用します。
インストール(初回のみ):
cd backend/
# Mac: Apple Silicon (M1/M2/M3)
curl -o cloud-sql-proxy https://storage.googleapis.com/cloud-sql-connectors/cloud-sql-proxy/v2.14.3/cloud-sql-proxy.darwin.arm64
chmod +x cloud-sql-proxy
# Mac: Intel
curl -o cloud-sql-proxy https://storage.googleapis.com/cloud-sql-connectors/cloud-sql-proxy/v2.14.3/cloud-sql-proxy.darwin.amd64
chmod +x cloud-sql-proxy
# Linux: AMD64
curl -o cloud-sql-proxy https://storage.googleapis.com/cloud-sql-connectors/cloud-sql-proxy/v2.14.3/cloud-sql-proxy.linux.amd64
chmod +x cloud-sql-proxy
# Linux: ARM64
curl -o cloud-sql-proxy https://storage.googleapis.com/cloud-sql-connectors/cloud-sql-proxy/v2.14.3/cloud-sql-proxy.linux.arm64
chmod +x cloud-sql-proxyWindows の場合は公式ダウンロードリンク (x64)から cloud-sql-proxy.exe を backend/ フォルダに配置してください。
backend/.env を作成してください:
GOOGLE_CLOUD_PROJECT=git-push-pray
GOOGLE_CLOUD_LOCATION=asia-northeast1
GOOGLE_GENAI_USE_VERTEXAI=TRUE
DATABASE_URL=postgres://appuser:【パスワード】@localhost:5432/git-push-pray?sslmode=disable
godotenvによりbackend/.envは自動的に読み込まれます。
make allCloud SQL Proxy・バックエンド・フロントエンドをまとめて起動します。
make allは内部でncコマンドを使ってDB Proxyの起動を待機します。ncがない場合は固定時間の待機にフォールバックします。
# ターミナル1: Cloud SQL Auth Proxy
make database
# ターミナル2: バックエンド(localhost:5432 が起動してから)
make back
# ターミナル3: フロントエンド
make frontmake database→localhost:5432経由でGCPのDBに接続make back→ 起動成功でBackend server listening on port 8081と表示make front→http://localhost:5173でアクセス可能
フロントエンドからのAPIリクエスト (/api/*) は Vite のプロキシ設定によって自動的にバックエンド (http://localhost:8081) へ転送されます。
- Cloud SQL Auth Proxy・バックエンド・フロントエンドの3つが起動していることを確認
http://localhost:5173をブラウザで開く- チャット欄にメッセージ(例:
「ReactのHooksについて教えて」)を送信 - Vertex AI (Gemini) からの回答が返れば成功
初回はAPIのコールドスタートで少し時間がかかる場合があります。
バックエンドのみを起動してAPIを直接叩く場合:
# バックエンド起動
make back
# 別ターミナルでAPIを叩く
curl -X POST http://localhost:8081/api/chat \
-H "Content-Type: application/json" \
-d '{"user_id":"test-user","message":"GCPのVertex AIについて3行で教えて"}'成功すると以下のようなレスポンスが返ります:
{ "reply": "Vertex AIは...\n1. ...\n2. ...\n3. ...\n" }