このドキュメントに従えば、ローカル開発環境をゼロからセットアップできる。


1. 前提条件

ツールバージョン用途
Node.jsv24.xclasp / npm scripts の実行基盤
npmv11.x (Node 同梱)パッケージ管理
Git2.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 で以下がインストールされる:

パッケージ種別用途
markeddependenciesドキュメントビルド (Markdown → HTML)
@types/google-apps-scriptdevDependenciesGAS API の型定義 (エディタ補完用)
typescriptdevDependencies型チェック (tsconfig.json 参照)
nodemondevDependenciesドキュメントの自動リビルド
live-serverdevDependenciesドキュメントのライブリロード

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 エディタ → プロジェクトの設定):

プロパティ名devprod説明
ENVdev未設定 or prod環境判定に使用
SPREADSHEET_ID開発用シートID本番用シートID操作対象スプレッドシート
GEMINI_API_KEYAPIキー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 — 各環境の scriptId
    • CLASP_DEPLOYMENT_ID_PROD / CLASP_DEPLOYMENT_ID_DEV — Web App のデプロイメント ID (任意)

7. AI ツール

本プロジェクトでは以下の AI ツールを開発に活用している。

7.1 Claude Code (CLI)

コード実装・リファクタリング・PR 作成などのメイン開発に使用する。

項目設定値
ツールClaude Code (CLI / デスクトップアプリ)
API ProviderAnthropic
ModelClaude Opus 4.7 (1M context)
プロジェクト設定CLAUDE.md (リポジトリルート) に記載
  • CLAUDE.md にコーディング規約・ブランチ運用・テスト方針を定義し、Claude Code がそれに従って開発を行う
  • MCP サーバー (Google Sheets) を接続してスプレッドシートの直接操作も可能

7.2 Roo Code (VS Code 拡張) — ドキュメント QA 向け

ドキュメントのリンク切れ・パス不整合・旧ファイル名残存を機械的に検出するために使用する。

項目設定値理由
拡張機能名Roo CodeVS Code 上で LLM を活用したコード/ドキュメントレビューを実行
API ProviderGoogle Gemini (Google AI Studio 経由)大量ドキュメントの一括入力に対応する長コンテキストモデルを使用
Modelgemini-3.1-pro(最新安定版を選択)100万トークン超のコンテキストで全仕様書を一度に処理可能
API キー取得先Google AI StudioAPI キーを発行し Roo Code の設定に入力する
Model Reasoning EffortHigh複雑なクロスリファレンスの検出精度を確保

精度・安全性設定

項目設定値理由
Use custom temperature0AI の創造性を排除し、事実に基づく厳格な照合を行うため
Auto-ApproveEnabledQA 実行時の手動承認を省略し、連続チェックを効率化
許可するアクション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 段階方式 で運用する:

  1. docs/_internal/research_prompts/RQ-NNN_meta_prompt.mdGemini Pro に投入 → Deep Research 用プロンプトを設計させる
  2. 設計されたプロンプトを RQ-NNN_prompt.md として保存
  3. Gemini Advanced(gemini.google.com) の Deep Research に投入
  4. 結果を 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/仕様書・ガイドの作成・更新・QAClaude 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 ScriptGAS 関連のシンタックスハイライト
Roo Codeドキュメント QA (§7.2 参照)