CTS-KB

開発手法ガイド:概要

⏱ 約 8 分で読めます
#開発手法 #AI駆動開発 #オブジェクト指向 #SOLID #DDD #TDD #テスト技法 #CQRS #イベントソーシング #CES #アトミックデザイン #モノレポ

🎯 AI 駆動開発の前に知っておくべきこと

AI コーディングツール(Claude Code 等)は強力ですが、 開発の基礎が曖昧なまま使うと、品質の低いコードを高速に量産するだけ になります。

AI に的確な指示を出し、生成されたコードの良し悪しを判断するには、開発者自身がソフトウェア設計の原則を理解している必要があります。

本シリーズは、AI 駆動開発の精度を高めるための 予備知識 として、以下のテーマを体系的に解説します。

🧲 すべての設計原則は「疎結合」と「テスト容易性」のためにある

設計原則・パターン・アーキテクチャは、見た目の語彙はバラバラでも、突き詰めると 同じ目的 を共有しています。

モジュール同士を疎結合に保ち、テストを書きやすい状態を維持すること。

これが守られている設計では、 AI が生成したコードを安心して受け取れる 。守られていない設計では、AI の出力を信じる根拠そのものがなくなります。設計原則は「美しさ」のためではなく、 AI 駆動開発で量産されるコードを成立させるためのインフラ だと捉えるのが本シリーズの立場です。

確信的な原則スローガン

各原則を 「やってはいけないこと」と「やるべきこと」 で言い切ると、AI への指示にもレビューにも使える共通語になります。曖昧に運用すると AI 生成コードに侵食されます。

原則スローガン
SRP(単一責任)1 つのクラスに、変更理由は 1 つだけ
OCP(開放閉鎖)改修するな、拡張せよ
LSP(リスコフ置換)親と入れ替えても破綻させるな
ISP(インターフェース分離)使わないメソッドに依存させるな
DIP(依存性逆転)上位は下位を知らない。抽象が境界を切る
DRY同じ知識を二箇所に書くな
SoC関心の違うものを混ぜるな
TDDテストが書けない設計は壊れている
DDD業務の言葉でコードを書け
CQRS書き込みと読み取りを混ぜるな
イベントソーシング事実を上書きするな、追記せよ
ヘキサゴナル / クリーンコアにフレームワークを混ぜるな
アトミックデザイン下位は上位を知らない。依存方向は一方向
モノレポ共通化しすぎるな。境界を lint で強制せよ

特に OCP の「改修するな、拡張せよ」 は、AI 駆動開発で if/switch 文が肥大化する典型的な失敗を防ぐ最重要スローガンです。「動くから良い」で既存コードに分岐を足し続けると、AI も人間もレビュー不能なコードに育ちます。

疎結合がもたらす 4 つの果実

設計原則を守ると、AI 駆動開発で次の 4 つが手に入ります。逆に守られていないと、AI を導入するほど被害が大きくなります。

果実なぜそうなるか
テストが書ける依存をモック・スタブ・インメモリ実装に差し替え可能。単体テストが数 ms で回る
AI 生成コードを信頼できるテストで即座に Red/Green を判定できる。 Kent Beck が「TDD は AI エージェントの superpower」と語る根拠
影響範囲が予測できる依存方向が一方向に固定される。AI の変更がどこまで波及するかをレビュー前に見積もれる
新メンバーがオンボードできる局所的に読めば全体が分かる。AI 支援によるオンボーディングも加速

疎結合が崩れた瞬間に起きること

崩れた状態起きる事態
God Class(責務の混在)AI が変更すると無関係な機能が壊れる
依存方向の逆流(インフラがドメインを汚染)AI が ORM を意識せずドメインに侵食
巨大インターフェースAI がモック作成に失敗、テストを書かなくなる
Read Model なしの直接 SELECT画面要件が AI 経由でドメインに流れ込む

AI は 「動く」と判断したコードを高速に提案 します。設計原則を持たないチームは、その提案を「動くから OK」で受け取り、気づいたときには疎結合が完全に失われています。

🧱 各テーマの位置づけ

オブジェクト指向
  └→ なぜ階層(プロジェクト)を分けるのか
     ドメイン層 / アプリケーション層 / インフラストラクチャー層 / インターフェース層

SOLID 原則
  └→ オブジェクト指向設計を保守可能に保つ 5 原則
     SRP / OCP / LSP / ISP / DIP

DDD(ドメイン駆動設計)
  └→ ビジネスの言葉でコードを書く設計手法
     Bounded Context / ユビキタス言語 / 集約

TDD(テスト駆動開発)
  └→ テストを先に書くことで設計を磨く
     Canon TDD / テスト網羅性

テスト技法
  └→ 何をどうテストするか — レベル × 技法の体系
     単体 / 結合 / E2E / UAT / 限界値分析 / 同値分割 / カバレッジ

CQRS(コマンド・クエリ責務分離)
  └→ 書き込みと読み取りを別モデルにする
     Command / Query / Read Model

イベントソーシング
  └→ 状態ではなくイベント列を真実とする永続化
     Event Store / Projection / Snapshot

CES アプローチ
  └→ CQRS + イベントソーシング + Saga の統合
     長期トランザクション / 補償トランザクション

アトミックデザイン
  └→ UI コンポーネントの分類・再利用戦略
     Atoms / Molecules / Organisms / Design Tokens

モノレポ
  └→ 複数サービスを 1 リポジトリで管理する運用戦略
     Nx / Turborepo / pnpm workspaces

📐 なぜこの順番なのか

順番テーマ理由
1オブジェクト指向すべての設計原則の土台。階層分離の考え方がないと SOLID も DDD も理解できない
2SOLID 原則オブジェクト指向を保守可能にする 5 原則。AI 生成コードのレビュー観点として機能する
3DDDビジネスロジックの設計手法。AI に「何を作るか」を正確に伝える力
4TDD設計の品質を検証する手法。「いつテストを書くか」
5テスト技法「何をどうテストするか」の体系。単体・結合・E2E・UAT、限界値分析・同値分割
6CQRS書き込みと読み取りを分離する設計。AI に複雑クエリを任せてもドメインが汚染されない
7イベントソーシング状態ではなくイベント列を残す永続化。バグ再現・What-if 分析を AI に任せられる
8CES アプローチCQRS + ES + Saga の統合。長期トランザクションを AI に組み立てさせる土台
9アトミックデザインUI の設計原則。フロントエンド開発で AI との協働を効率化する
10モノレポ複数サービスを扱う運用戦略。AI に渡すコンテキストの範囲を構造で設計する

下から始めると、なぜそうするのかが分からないまま手法だけを覚えることになります。 上から順に積み上げる ことで、各手法の必然性が理解できます。CQRS・イベントソーシング・CES の 3 つは応用領域なので、 業務要件で必要になってから着手 しても遅くありません。

🤖 AI 駆動開発との関係

これらの知識があると、AI との協働で以下が変わります。

知識AI への指示結果
オブジェクト指向がわかる「ドメイン層とインフラストラクチャー層を分離して」と指示できる保守しやすいコード
SOLID 原則がわかる「OCP に従って if 分岐ではなく Strategy で」と指示できる拡張に強いコード
DDD がわかる「ユビキタス言語に合わせて」と指示できるビジネスと一致したコード
TDD がわかる「テストを先に書いて」と指示できる仕様通りのコード
テスト技法がわかる「限界値分析と同値分割で網羅して」と指示できる境界バグが残らない
CQRS がわかる「Command と Query を別モデルで」と指示できる画面要件でドメインが汚染されない
イベントソーシングがわかる「過去のイベント列を再生してバグを再現して」と指示できるデバッグと What-if 分析が容易
CES アプローチがわかる「Saga として補償も含めて設計して」と指示できる長期トランザクションが安全
アトミックデザインがわかる「Atom / Molecule で分けて」と指示できる再利用可能な UI
モノレポがわかる共有ライブラリの変更影響を把握できる安全なリファクタリング

AI は道具であり、使い手の設計力がそのまま成果物の品質に反映されます。

📚 シリーズ記事

#タイトル内容
1概要 (本記事)シリーズの全体像と各テーマの位置づけ
2オブジェクト指向編階層分離(ドメイン / アプリケーション / インフラストラクチャー / インターフェース)
3SOLID 原則編5 原則の使い所・典型違反パターンと是正方針
4DDD 編Bounded Context・ユビキタス言語・集約設計
5TDD 編テスト駆動開発の実践・テスト網羅性・Canon TDD
6テスト技法編単体・結合・E2E・UAT のレベル別戦略、限界値分析・同値分割・カバレッジ
7CQRS 編コマンド・クエリ責務分離と Read Model 設計
8イベントソーシング編状態ではなくイベント列を真実とする永続化・イベント DB(Event Store)の選定
9CES アプローチ編CQRS + Event Sourcing + Saga による長期トランザクション設計
10アトミックデザイン編UI コンポーネントの分類と設計・Design Tokens との統合
11モノレポ編単一リポジトリでの複数サービス管理・Nx / Turborepo / pnpm workspaces

📖 関連用語