CTS-KB

壁打ち・規模判定編:ステアリング駆動開発のファーストステップ

⏱ 約 8 分で読めます
#ステアリング駆動開発 #壁打ち #ADR #規模判定 #Claude Code

🎯 壁打ちをスキップすると、AI はハルシネーションで埋める

ステアリング駆動開発の入口は 壁打ち です。ここを飛ばすと、AI は「なぜその作業が必要か」を推測で埋め始めます。結果、見た目は正しいが目的を外したコードが量産されます。

壁打ちは「5 観点で認識を揃え、規模を判定し、オーナーが承認する」3 つの工程に分解できます。本記事ではシリーズ第 2 回として、このファーストステップを .claude/skills/brainstorming/ の運用例で解説します。

🧠 壁打ちには「業務理解 × 開発手法」両輪のスキルが必要

壁打ちの 5 観点は、表面的には質問項目に見えますが、質の高い壁打ちを成立させるには 業務理解と開発手法の両輪 が必要です。ここを正直に共有しておきます。

壁打ちで動員されるスキル

領域具体例なぜ必要か
業務理解業務フロー、関係者の責務、KPI、現場の運用ルール背景・目的・スコープを「現場の言葉」で語るため
ドメインモデリングDDD / Bounded Context / ユビキタス言語 / 集約業務を AI が扱える構造に翻訳するため
アーキテクチャ素養オブジェクト指向 / SOLID / 階層分離既存資産観点で「流用可能性」を判断するため
代替案の引き出し設計パターン・他社事例・OSS 動向代替案観点で「比較する選択肢」を出すため

正直に言うと、AI 駆動開発のハードルは高い

これまで 「仕様書通りにコーディングする」 ことが主な業務だったエンジニアにとって、AI 駆動開発はハードルが急に上がります。なぜなら、AI 駆動開発で求められるのは 「要件定義を一人で進められる責務」 に近いからです。

「何を作るか」を曖昧にしたまま実装に入ると、AI は推測でコードを量産し、品質判断不能な状態になります。 要件定義 = 開発そのもの という原則の意味は、ここに表れます。

具体的に必要となる力:

  • 業務担当者と 「業務の言葉」で会話して、ユビキタス言語を引き出せる
  • 既存システムを 読み、流用判断ができる
  • 設計原則・パターンを チェックリストとして持っている
  • 採用しなかった代替案を 「なぜ選ばなかったか」で語れる

これらは一朝一夕には身につきません。 これまでの開発スタイルでは出番が少なかった筋肉 を新たに鍛える必要があります。

でも、ここで「自分には無理」と判断する必要はない

ハードルは高い。けれど、 道筋はあります 。本ナレッジベースを段階的な学習パスとして使ってください。

ステップやること参照記事
1. 地図を持つ開発手法の全体像を頭に入れる開発手法ガイド:概要
2. ドメイン言語を養うDDD・集約・Bounded Context の感覚を掴むDDD 編
3. レビュー観点を装備SOLID をチェックリスト化SOLID 編
4. 検証習慣を作るTDD で AI 出力を即座に判定TDD 編
5. 小規模で壁打ちを試すS 規模で壁打ちの型を覚える本記事 + 概要編
6. M / L 規模に挑戦業務担当者と一緒に進めるステアリング作成編

いきなり本番の L 規模を一人で抱えない — これが安全な始め方です。まずは S 規模で壁打ちのフォーマットに慣れ、徐々に複雑度を上げていくと、業務理解と開発手法の両輪を実戦で鍛えられます。

💡 チームで導入する場合: 「業務知識が厚いメンバー」と「開発手法が厚いメンバー」のペアで壁打ちを進めると、片側だけのチームより圧倒的に質が上がります。一人で両輪を完璧にする必要はありません。 チームのスキルセットを補完し合う設計 が、AI 駆動開発を本番投入する現実解です。

🗣️ 壁打ちは 5 観点で進める

CTS-EC では壁打ちを 5 観点で定型化しています。1 つでも欠けたら Step 1(規模判定)に進みません

#観点代表的な問い
1背景(Why now?)なぜ「今」必要か?やらないと何が起きるか?
2目的(What success?)何を達成したら成功か?定量/定性の指標は?
3スコープ(What’s in/out?)In Scope / Out of Scope を明示する
4既存資産(What exists?)参照可能な既存実装・仕様・過去ステアリングは?
5代替案(What else?)別アプローチ、トレードオフ、判断を覆す条件

🔍 既存資産は「ツール検索必須」

「既存資産」観点では 必ず Grep / Glob / Read を実行 します。記憶ベースで「特になし」と回答するのは禁止です。

Grep "OAuth" dotnet/src/          # 既存実装
Glob "**/Auth*.cs"                 # 類似ファイル
Read docs/glossary.md              # 関連用語
ls .steering/archive/              # 過去ステアリング

結果は brainstorm.md の §4 に表で残します。

種別参照先流用可能性
既存実装dotnet/src/.../AuthService.csパターン踏襲
仕様書docs/specs/auth-design.md関連
過去ステアリングarchive/20260301-oauth-v1/テスト構造を流用

この表があることで、/steering-complete 時に ADR 昇華の判断材料にもなります。

📊 S / M / L 規模判定

壁打ち完了後、AI が規模を 推奨 します。オーナーが最終判断します。

規模条件ステアリングファイル数
Sバグ修正、軽微な変更、設定変更不要0
M単機能追加、リファクタ、単一ドメイン変更必須4
L複数機能、アーキテクチャ変更、複数ドメイン連携、新規用語導入必須8

「全タスクに L 規模を適用する」のは過剰 です。バグ修正に 8 ファイルの仕様書は書きません。逆に新ドメイン追加を M 規模で済ませると、architecture.md / glossary.md の欠落で後から設計崩壊が起きます。

🚨 L 規模のシグナル(チェックリスト)

以下のいずれかに該当すれば L 規模を推奨します。

  • 複数の Bounded Context にまたがる
  • 新しいエンティティ・集約を導入する
  • 既存アーキテクチャの変更を伴う
  • 新しい用語(ユビキタス言語)を導入する
  • 3 つ以上のフェーズに分かれる
  • 複数の外部サービス連携がある

CTS-EC では「共通ブランドマスタ導入」「3 段階カテゴリマッピング」「Saga パターン標準化」などが L 規模でした。いずれも新用語 + 複数コンテキスト + 新規アーキテクチャの 3 条件を満たしています。

✍️ brainstorm.md のフォーマット

壁打ちの結果は .steering/[YYYYMMDD]-[タイトル]/brainstorm.md に保存します。ステアリング固有の作業メモで、揮発可です。

# 壁打ち: Yahoo OAuth 実装

**日付**: 2026-04-20
**ステータス**: 検討中 → 承認済み

## 1. 背景
- ショッピング ID 認証の EOL が 2026-06 → OAuth 移行必須

## 2. 目的
- 全店舗の OAuth 移行完了
- **成功指標**: 未移行店舗 0 / トークン失効エラー率 < 0.1%

## 3. スコープ
### In Scope
- Yahoo OAuth トークン取得・保存・リフレッシュ
### Out of Scope
- 楽天・Amazon の認証(別ステアリングで対応)

## 4. 既存資産
| 種別 | 参照先 | 流用可能性 |
| --- | --- | --- |
| 既存実装 | `dotnet/src/.../CognitoAuth.cs` | 近似パターン |

## 5. 代替案
| 案 | メリット | デメリット | 採否 |
| --- | --- | --- | --- |
| A: 自前実装 | 制御しやすい | 保守負担大 | ❌ |
| B: IdentityServer 委譲 | 実績あり | 学習コスト | ✅ 採用 |

## オーナー承認
- [x] 承認日: 2026-04-20
- [x] 規模判定: L

## 再利用可能な判断(ADR 昇華候補)
- [ ] OAuth ライブラリ選定ポリシー(ADR 昇華候補)
- [ ] トークン保管場所の命名規則(ADR 昇華候補)

🏛️ ADR 昇華の基準

brainstorm.md の「ADR 昇華候補」セクションから、プロジェクト全体に永続化すべき判断のみdocs/adr/adr-NNN.md に手動で昇華します(/steering-complete 実行時)。

昇華する昇華しない
設計原則・命名規則の決定タスク固有の実装詳細
アーキテクチャパターンの選定一時的な判断
採用しなかった代替案の記録単純な作業手順
プロジェクト全体に影響する制約レビュー指摘の対応履歴

2 段構成にすることで「壁打ちの作業メモ」と「再利用可能な決定」を分離管理できます。ADR に一時的な判断が混ざると、後から読み返したときに重要度が判別できなくなるため、昇華判断を意識的に行うことが重要です。

🧭 オーナー承認の文面テンプレート

壁打ち + 規模判定が揃ったら、次の文面でオーナーに投げます。

★ 壁打ち・規模判定レビュー ★

1. 壁打ちドキュメント: .steering/20260420-yahoo-oauth/brainstorm.md
2. 推奨規模: L
3. 理由: 新規 Bounded Context「認証連携」を導入、
         Yahoo API 依存追加、トークン管理の新規用語あり

ご確認ください:
- 承認(規模も含めて)
- 規模変更(L→M など)
- 壁打ち修正(追加議論が必要)

承認が取れた時点で Step 3(ステアリング作成)に進めます。承認前に実装・Git コミットに進むのは禁止です。

⚠️ 壁打ちフェーズでやってはいけないこと

  • 5 観点のうち 1 つでもスキップしてステアリング作成に進む
  • 「既存資産」観点でツール検索なしに「特になし」と回答する
  • brainstorm.md を作成せずに直接 ADR を書く
  • ユーザー対話なしに、記憶ベースで問いを埋める
  • オーナー承認前に規模を AI 側で確定する

📚 シリーズ記事

#タイトル内容
1概要ステアリング駆動開発の全体像
2壁打ち・規模判定編(本記事)壁打ちの進め方、ADR の書き方、規模判定の基準
3ステアリング作成編M/L 規模のドキュメント作成、TDD タスク分解
4実装・完了編TodoWrite 連携、進捗管理、アーカイブ運用
5コンテキスト設計編AI に渡すコンテキストの最適化、skills 設計
6品質ゲート編doc-reviewer、テスト品質チェック、受入テスト
7Claude Code ベストプラクティスCLAUDE.md 設計、hooks、commands、rules、skills
8Agent Teams 編agents 定義、チーム構成、マルチエージェント協調
9Remote Control 編スマホ・Web から CLI セッションを操る席拘束からの解放

🔗 関連記事

📖 関連用語

  • ADR — brainstorm.md から昇華する設計判断記録
  • ビジネスケイパビリティ — 壁打ちでスコープを業務側の言葉で語る前提概念
  • MVP — In Scope / Out of Scope を絞るスコープ設計の考え方
  • ハルシネーション — 壁打ちで抑制する典型的な失敗モード