開発環境のセットアップ
必要なツール
- Node.js 20+
- pnpm 9+
- Android Studio (Androidアプリ開発の場合)
インストール
git clone https://github.com/gakusai-UoA/soshosai-monorepo-2026.git
cd soshosai-monorepo-2026
pnpm install
開発サーバーの起動
# API + Web を同時起動
pnpm dev
# 個別起動
pnpm dev:api # Hono API (localhost:8787)
pnpm dev:web # React Web (localhost:5173)
pnpm dev:docs # ドキュメント (localhost:3001)
Cloudflare へのデプロイ
# API のデプロイ
pnpm --filter api run deploy
⛅ Cloudflare デプロイにおける重要事項とアンチパターン
pnpm workspaces を用いたモノレポ構成において、Cloudflare Workers/Pages へのデプロイを行う際は以下の点に必ず注意してください。
1. pnpm deploy コマンドの衝突防止
モノレポ内のパッケージに定義された deploy スクリプトをルートディレクトリから実行する際、pnpm --filter <pkg> deploy を実行してはなりません。
- 原因:
deployは pnpm 組み込みの機能(パッケージを集約して別フォルダに出力するコマンド)として認識されてしまい、引数不足でエラーが発生します。 - 対策: 必ず
pnpm --filter <pkg> run deployのようにrunを明示的に挟んで実行してください。
2. Secret 環境変数の上書き(プレースホルダーの禁止)
wrangler.jsonc や wrangler.toml の vars 内に、型生成などを目的として YAHOO_APP_ID: "" などの空文字列プレースホルダーを記述してはなりません。
- 原因: Wrangler のデプロイ仕様により、設定ファイルの
varsに書かれた定義が優先され、Cloudflare 側で登録されていた Secret(wrangler secret putまたは管理画面で設定した値)が空文字列で上書きされて消滅します。 - 対策: Secret として利用する環境変数は
varsオブジェクトから完全に除外し、型定義が必要な場合はindex.tsのEnvインターフェースやローカルの.dev.varsファイル内で直接定義してください。
3. モノレポ環境における自動デプロイ設定
Cloudflare の Git 統合(Wrangler による自動デプロイパイプライン)を利用する際、コマンドがプロジェクトルートで実行されるため、設定ファイル wrangler.jsonc が見つからずに Missing entry-point to Worker script エラーが発生することがあります。以下のいずれかの方法で対策を行ってください。
- 対策A(推奨): Cloudflare ダッシュボードの Build & Deploy 設定にて Root directory (ルートディレクトリ) を
packages/api/gakusai-assistantなどの対象パッケージのサブディレクトリに指定する。 - 対策B: デプロイコマンド(Deploy command)を
pnpm --filter gakusai-assistant exec wrangler versions uploadに変更する。 (※pnpm execを挟むことで、pnpm が自動的にパッケージのディレクトリへ移動してからコマンドを実行し、すでにインストール済みのローカルの wrangler を利用するため高速かつ確実に動作します。)