開発環境構築ガイド
このドキュメントに従えば、ローカル開発環境をゼロからセットアップできる。
1. 前提条件
| ツール | バージョン | 用途 |
|---|---|---|
| Node.js | v24.x | clasp / npm scripts の実行基盤 |
| npm | v11.x (Node 同梱) | パッケージ管理 |
| Git | 2.x 以上 | バージョン管理 |
| GitHub アカウント | — | リポジトリへのアクセス (下記参照) |
| Google アカウント | — | GAS プロジェクトへのアクセス |
2. リポジトリのクローンと依存インストール
リポジトリは private のため、オーナー (t-saitoh-bizlp) から Collaborator 招待を受ける必要がある。
| 項目 | 値 |
|---|---|
| リポジトリ | t-saitoh-bizlp/bizlp-gas-accounting |
| 可視性 | Private |
| ホスティング | GitHub |
招待を承諾したら SSH でクローンする:
git clone [email protected]:t-saitoh-bizlp/bizlp-gas-accounting.git
cd bizlp-gas-accounting
npm install
npm install で以下がインストールされる:
| パッケージ | 種別 | 用途 |
|---|---|---|
marked | dependencies | ドキュメントビルド (Markdown → HTML) |
@types/google-apps-script | devDependencies | GAS API の型定義 (エディタ補完用) |
typescript | devDependencies | 型チェック (tsconfig.json 参照) |
nodemon | devDependencies | ドキュメントの自動リビルド |
live-server | devDependencies | ドキュメントのライブリロード |
3. clasp のセットアップ
clasp は GAS プロジェクトをローカルから操作する CLI ツール。
3.1 インストール
npm install -g @google/clasp
動作確認:
clasp --version # 3.x を確認
3.2 認証
clasp login --creds creds.json
creds.jsonは Google Cloud Console で発行した OAuth クライアント ID (デスクトップアプリ) のファイル。リポジトリ管理者から受け取るcreds.jsonは.gitignoreで除外済み。リポジトリにコミットしない- 認証が切れたら (
invalid_grant/Skipping push.) 同じコマンドで再認証
3.3 環境別の clasp 設定
GAS プロジェクトは本番 (prod) と開発 (dev) に分離されている。
.clasp.dev.json ← 開発用 scriptId (リポジトリ管理)
.clasp.prod.json ← 本番用 scriptId (リポジトリ管理)
.clasp.json ← 実際に clasp が参照するファイル (git 除外)
clasp-switch.sh で切り替える:
npm run switch:dev # .clasp.dev.json → .clasp.json
npm run switch:prod # .clasp.prod.json → .clasp.json
npm run status # 現在どちらの環境か確認
3.4 GAS スクリプトプロパティ
各 GAS プロジェクトのスクリプトプロパティに以下を設定する (GAS エディタ → プロジェクトの設定):
| プロパティ名 | dev | prod | 説明 |
|---|---|---|---|
ENV | dev | 未設定 or prod | 環境判定に使用 |
SPREADSHEET_ID | 開発用シートID | 本番用シートID | 操作対象スプレッドシート |
GEMINI_API_KEY | APIキー | APIキー | Gemini API (領収書読取) |
4. npm scripts 一覧
デプロイ
| コマンド | 動作 |
|---|---|
npm run push:dev | 開発用 GAS にデプロイ |
npm run push:prod | 本番用 GAS にデプロイ |
npm run open:dev | 開発用 GAS エディタを開く |
npm run open:prod | 本番用 GAS エディタを開く |
npm run status | 現在の環境を確認 |
ドキュメント
| コマンド | 動作 |
|---|---|
npm run docs:build | ドキュメントをビルド (_site/ に出力) |
npm run docs:serve | ビルド後にローカルサーバーで閲覧 |
npm run docs:dev | ファイル変更を監視して自動リビルド + ライブリロード |
5. 開発フロー
git pull origin main → ブランチ作成 → コード修正 → clasp push (dev) → GAS で動作確認 → git commit → git push → PR → main マージ
動作未確認のコードを GitHub に push しない。
作業着手時の同期ルール
複数ワークスペース(§8)で並行作業するため、作業着手時は必ず git pull origin main --no-rebase で最新を取り込んでからブランチを切る。以下に該当する作業は特に重要:
- PR 作成 / commit を伴う変更
- 共有ファイル (
CLAUDE.md,docs/_config.json,docs/_internal/TODO_future.md,docs/_internal/changelog.md,docs/dev/*.md,docs/_internal/research_questions.md,docs/_internal/research_prompts/) の編集 - メイン側で実装完了の通知を受けた後のドキュメント反映
同期を怠ると、並行作業で同じ ID の案件が重複起票される / 同じファイルが二重作成される 事故が発生する(例: 2026-04-20 に MAS-214 dev 仕様書が両ワークスペースで同時作成された事案)。
Claude Code のメモリ運用
~/.claude/projects/.../memory/ に feedback_auto_pull_main.md を配置しておくと、Claude Code が作業依頼を受けた際に 明示指示なしで自動 pull する。手動で「pull して」と毎回指示する負荷を軽減できる。
詳しいブランチ命名規則・デプロイフローは CLAUDE.md を参照。
6. CI/CD
GitHub Actions (deploy.yml) が main / dev ブランチへの push をトリガーに自動デプロイする。
docs/**と*.mdの変更はデプロイ対象外mainへのデプロイ時はmas/900_test/ディレクトリが自動削除される- CI で使用する Secrets:
CLASPRC_JSON— clasp 認証情報CLASP_SCRIPT_ID_PROD/CLASP_SCRIPT_ID_DEV— 各環境の scriptIdCLASP_DEPLOYMENT_ID_PROD/CLASP_DEPLOYMENT_ID_DEV— Web App のデプロイメント ID (任意)
7. AI ツール
本プロジェクトでは以下の AI ツールを開発に活用している。
7.1 Claude Code (CLI)
コード実装・リファクタリング・PR 作成などのメイン開発に使用する。
| 項目 | 設定値 |
|---|---|
| ツール | Claude Code (CLI / デスクトップアプリ) |
| API Provider | Anthropic |
| Model | Claude Opus 4.7 (1M context) |
| プロジェクト設定 | CLAUDE.md (リポジトリルート) に記載 |
CLAUDE.mdにコーディング規約・ブランチ運用・テスト方針を定義し、Claude Code がそれに従って開発を行う- MCP サーバー (Google Sheets) を接続してスプレッドシートの直接操作も可能
7.2 Roo Code (VS Code 拡張) — ドキュメント QA 向け
ドキュメントのリンク切れ・パス不整合・旧ファイル名残存を機械的に検出するために使用する。
| 項目 | 設定値 | 理由 |
|---|---|---|
| 拡張機能名 | Roo Code | VS Code 上で LLM を活用したコード/ドキュメントレビューを実行 |
| API Provider | Google Gemini (Google AI Studio 経由) | 大量ドキュメントの一括入力に対応する長コンテキストモデルを使用 |
| Model | gemini-3.1-pro(最新安定版を選択) | 100万トークン超のコンテキストで全仕様書を一度に処理可能 |
| API キー取得先 | Google AI Studio | API キーを発行し Roo Code の設定に入力する |
| Model Reasoning Effort | High | 複雑なクロスリファレンスの検出精度を確保 |
精度・安全性設定
| 項目 | 設定値 | 理由 |
|---|---|---|
| Use custom temperature | 0 | AI の創造性を排除し、事実に基づく厳格な照合を行うため |
| Auto-Approve | Enabled | QA 実行時の手動承認を省略し、連続チェックを効率化 |
| 許可するアクション | Read のみ | 意図しないファイル変更を防ぐため。QA は検出のみ行い、修正は別途実施する |
Custom Instructions
以下を Roo Code の Custom Instructions に設定する:
あなたは厳格で几帳面な『技術ドキュメントの品質管理(QA)エンジニア』です。
創造性や推測は一切不要です。提供された『正となるディレクトリ構成』と
『ドキュメントの内容』を機械的に照合し、1文字のパスのズレ、拡張子の間違い、
旧ファイル名の残存を容赦なく指摘してください。
指示された出力フォーマット(Markdownテーブル)を厳格に守り、
余計な挨拶や感想は出力しないでください。
Gemini Deep Research との連携方式
Roo Code は標準 Gemini API (generateContent) 経由のため、Gemini の Deep Research 機能(自律的な多段調査)を直接呼び出すことはできない(Deep Research は別エンドポイント Interactions API で、かつエンタープライズ allowlist 招待制)。
法制度・税務など外部調査が必要な論点は以下の 2 段階方式 で運用する:
docs/_internal/research_prompts/RQ-NNN_meta_prompt.mdを Gemini Pro に投入 → Deep Research 用プロンプトを設計させる- 設計されたプロンプトを
RQ-NNN_prompt.mdとして保存 - Gemini Advanced(gemini.google.com) の Deep Research に投入
- 結果を
RQ-NNN_result.mdとして保存し、関連dev_*.mdの「人間が検討すべき事項」に反映
運用例は docs/_internal/research_prompts/README.md 参照(MAS-299 / MAS-304 / MAS-305 が稼働中)。
8. VS Code ワークスペース構成
本プロジェクトでは 2 つの VS Code ワークスペース を用途別に使い分ける。
| ワークスペース | ローカルパス | 用途 | AI ツール |
|---|---|---|---|
| コード開発用 | my-gas-project/ (bizlp-gas-accounting) | GAS コードの実装・修正・テスト | Claude Code |
| ドキュメント更新用 | my-gas-project-doc/ | 仕様書・ガイドの作成・更新・QA | Claude Code + Roo Code (Gemini) |
- コード開発用ワークスペースでは clasp によるデプロイやコード変更を行う
- ドキュメント更新用ワークスペースではドキュメントの執筆・整合性チェックに専念する。コード変更は行わない
- ドキュメント更新用では Claude Code による執筆・構成作業と、Roo Code (Gemini) によるドキュメント QA (§7.2) の両方を活用する
並行作業時の競合事故パターンと対策
2 つのワークスペースで同時に Claude Code を走らせると、以下のような事故が発生する:
| 事故パターン | 発生例 | 対策 |
|---|---|---|
| 同 ID 案件の二重起票 | 2026-04-20 に両側で MAS-214 dev 仕様書を同時作成(156 行 vs 200 行の 2 版) | 作業着手前に TODO_future.md で ID の状態を確認。または当日の git log を確認 |
| 共有ファイルへの同時編集 | _config.json / TODO_future.md / changelog.md への並行書き込みでコンフリクト | §5 の auto-pull ルールに従い、編集前に必ず最新 main を取り込む |
| PR マージの順序逆転 | サブ側 PR が先に作られていても、メイン側がローカルで先にマージすると順序が入れ替わる | gh pr list --state open で相手側の未マージ PR を確認してからマージ |
| ブランチ名の衝突 | 両側で docs/dev-N-XX のような類似名を使うと別ブランチが出来てしまう | ブランチ名に sub- / main- のプレフィックス、または作業者イニシャルを付与(運用ルール化は要検討) |
詳細な担当マトリクスは CLAUDE.md の「ファイル担当マトリクス」参照。
VS Code 推奨拡張機能
| 拡張機能 | 用途 |
|---|---|
| Google Apps Script | GAS 関連のシンタックスハイライト |
| Roo Code | ドキュメント QA (§7.2 参照) |