メインコンテンツまでスキップ

開発環境のセットアップ

必要なツール

  • 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.jsoncwrangler.tomlvars 内に、型生成などを目的として YAHOO_APP_ID: "" などの空文字列プレースホルダーを記述してはなりません。

  • 原因: Wrangler のデプロイ仕様により、設定ファイルの vars に書かれた定義が優先され、Cloudflare 側で登録されていた Secret(wrangler secret put または管理画面で設定した値)が空文字列で上書きされて消滅します。
  • 対策: Secret として利用する環境変数は vars オブジェクトから完全に除外し、型定義が必要な場合は index.tsEnv インターフェースやローカルの .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 を利用するため高速かつ確実に動作します。)