AI コーディングエージェントを前提とする開発プロジェクトの情報管理原則とフォルダ構成。 特定のツール(Claude Code, GitHub Copilot 等)に依存しない一般論。
スコープ: 情報の分類・配置・管理の原則。 プロジェクト管理(スケジュール、タスク管理等)は扱わない。
関連: AIエージェント開発の情報管理-設計根拠(各原則の背景と根拠)
- Single Source of Truth(SSoT): 各情報の「正」は1箇所で管理し、他はそこから導出する
情報を以下の領域に配置する。
project-root/
├── rules/ # 方針・スコープ・拘束的制約
├── backlog/ # やること・バグメモ等(コミット対象、完了分は整理)
├── tests/ # テスト(振る舞いの正)
├── src/ # ソースコード(実装の正)
├── config/ # 実行環境固有の値(.env, CI設定等)
├── decisions/ # 意思決定ログ(append-only)
├── derived/ # 派生ビュー(正からの一方通行導出)
├── references/ # 参照情報(正ではない補助的な情報)
└── tmp/ # 揮発的一時情報(gitignore 対象)
人の脳/組織
→ rules/ mission, planning, principles を定める
→ rules/ mission から scope(プロダクトの境界)を定める
→ backlog/ scope から直近やることを決める
→ tests/ backlog からテストを書く
→ src/ tests からコードを書く
config/ は実行環境ごとに独立して決まる。decisions/ は各段階の判断時に横断的に生まれる。
上流を変えたら下流に影響する。この依存の方向が各領域の関係を決める(作業の順序ではない)。
情報の種類ごとに「正」の領域を1つだけ定める。
| 情報の種類 | 問い | 正の所在 |
|---|---|---|
| 原則・制約 | must | rules/ |
| 振る舞い | what | tests/ |
| 実装 | how | src/ |
| 環境固有の値 | where | config/ |
| 判断理由 | why | decisions/ |
正に分類されない情報は以下の3種類に分かれる。
derived/(正の再表現): 既存の正を読みやすく再構成した文書。フローの一部ではなく、何かの上流にもならない。正と矛盾する場合は正が優先される。
例: ユーザー向けマニュアル、API リファレンス、コマンド一覧、アーキテクチャ概要図。
references/(参照情報): 実装判断に影響するが、他のどの領域にも属さない補助的な情報。正と矛盾した場合は正が優先される。
例: 技術的知見(ライブラリの罠、エッジケース)、外部ドキュメントの要点、回避策の記録。
一時情報: 永続させない情報。拘束力があるなら永続領域に移し、ないなら一時情報として扱う。
| 区分 | git 管理 | 例 |
|---|---|---|
| 揮発的一時情報 | gitignore | 作業メモ、実験コード |
| 追跡可能一時情報 | git コミットして削除後も履歴に残す | バックログ |
作業中に得た知見や新たに確定した要求事項は、適切な永続領域に記録する。
判断基準は2つの観点:
- 反復コスト削減: 記録しないと同じ議論を繰り返す情報
- 破局コスト回避: セキュリティ・法務・データ損失に関わる情報
判断に迷った場合は記録しない。
目的別にファイルを分割する。以下はファイル構成の例。
- mission: プロダクト目的・非目標
- scope: 主要機能・ユースケース定義(状態管理は持たない)
- planning: 優先度の決め方
- constraints: 破ると破局や再議論を招く制約(検出方法併記)
- principles: 方向づけのための方針
新規の要求は方針から具体化されて backlog/ に入る。実装中に発見したバグや課題も backlog/ に追加する。
拘束力は弱く、テスト・コードに吸収されるまでの中間情報。コミット対象とし、完了した項目は整理する。外部ツール(GitHub Issues 等)で置き換えてもよい。
後から理由を問われうる判断を記録する場所(いわゆる ADR: Architecture Decision Records)。append-only で運用する。
各領域の定義を補足する実践的な指針。
- scope は粒度を荒く保つ(主要ユースケース・主要機能まで)
- constraints は可能なら自動検出できる形にする(linter、CI、テスト等)
- 自動化できない項目にはレビューポイントを併記する
- 検出もレビューもできない項目は decisions/ に移す
- 各記録に日付と文脈を記載する
- 完了した項目は定期的に整理する
- 更新漏れの検出方法は rules/ で定める