⏱ 読了目安: 約7分
- AIをコード打鍵の「手足」ではなく指示と検証結果で動かす「部下」と位置づけ、手戻りを極限まで削る手法が確立された。
- チケット本文と設計書を分離し、承認ステータス(draft/approved)とTDD、git worktree、4つの専用スキルでループ制御する。
- エンジニアは全コードの目視を脱し「5つの重要判断ポイント」へ集中する運用ルールへとシフトすることが求められる。
AIを「手足」にする開発のデッドロック
深夜の障害対応や締め切り間際の機能追加で、キーボードを叩く打鍵速度そのものがボトルネックになることは実は滅多にありません。我々エンジニアが日々苦しめられているのは、過去の経緯を解きほぐすコード調査、曖昧な仕様のすり合わせ、そして『一見動いているが実は既存機能を壊しているスパゲッティコード』の手戻り対応です。AIエージェントが登場し、コード出力速度が数万倍になっても開発プロセス全体が速くならないのは、まさにこの「認知負荷と手戻りの沼」から抜け出せていないからです。
多くの現場において、AIはエディタの補完機能の延長、つまり自分の「手足」として使われています。何を作るか、どう直すかを人間が全て考え、1回の会話やコマンドでコードを打たせる。一見効率的に見えますが、これは人間の思考速度と単一セクションのコンテキスト容量が上限(ボトルネック)になる構造的なデッドロックを抱えています。毎回ゼロから背景をプロンプトで説明し、出てきた数千行の差分を自分の目で全行チェックしなければならず、結果として確認と手戻りで丸1日を潰すことになります。
この不条理な限界を突破する鍵は、AIに対するスタンスを「手足」から「部下」へと不可逆的にシフトさせることです。人間が1行ずつの打鍵指示を出すのをやめ、目的・完了条件・守るべき制約を明示的に定義する。その上で、調査、実装案の作成、テストの実行までをAIに任せ、人間は「あらかじめ設計した判断点」だけで決断を下す。自分自身の役割を「コードを書く側」から「ループと判断点を設計する側」へ移さなければ、AI時代の開発スピードを手に入れることは不可能です。
| 比較項目 | 「手足」としてのAI利用 | 「部下」としてのAI利用 |
|---|---|---|
| 役割分担 | 人間が調査・詳細指示を行い、AIが打鍵 | AIが調査・案出し・実作業、人間は最終判断のみ |
| インプット | 具体的なコード変更指示・プロンプト | 目的・完了条件・制約・参照ドキュメント |
| 停止・確認頻度 | 毎回(出力を人間が全て目視確認) | あらかじめ定義された判断点のみ |
| プロセスの上限 | 人間の思考速度・目視確認の限界 | 人間による「判断点の設計」の品質 |
チケットと設計書を切り離す分離設計
AIエージェントに自律的なループを回させる際、最も頻繁に発生する事故が「AIが仕様を都合よく解釈し、誰も望んでいないコードを勝手に作り込む」という現象です。この暴走を止めるために導入すべき最も強力なアーキテクチャが、タスク管理ツール(Asana、Jira、Linear等)における「チケット本文」と「設計書」の完全分離設計です。
従来の運用では、Asanaのチケット本文に不具合現象から修正方針、ファイルパス、工数までを雑多に書き込みがちでした。しかし、これではビジネス側の関係者にとって雑音が増えるだけでなく、AIがチケットの断片的な記述を「確定した仕様」と誤認して実装に突き進むリスクを生み出します。そこで、チケット本文には「利用者から見た現象、影響、期待する完了条件」というビジネス要求のみを記述し、修正方針やテスト計画といった技術的詳細はアクセス制御された別ファイルの「設計書」として厳格に分離管理します。
設計書にはメタデータとして `status: draft` または `status: approved` の承認ステータスを持たせます。AIは自分でこのステータスを `approved` に変更する権限を持ちません。AIが起票スキルを動かすと、コードベースを静的に調査した上で設計書を `draft`(下書き)として出力し、索引ファイル(`INDEX.md`)へ追記して人間へ通知します。実装スキルを実行する際、AIは該当チケットの設計書が `approved` でない限り、一切のコード変更に着手できないルールを徹底します。これにより、「勝手な仕様決め打ちによる巨大な手戻り」を仕組みレベルでゼロに抑え込むことが可能になります。
- チケット本文の責務:現状の不具合・影響・期待される完了条件(直し方は書かない)。
- 設計書の責務:BE/FEの修正方針、影響・リスク、データ移行、TDDテスト計画、着手前に確定すべき事項。
- 承認制御:設計書はgit管理外の保護ゾーンに置き、人間の明示的承認(approved)なしでは実装ループを起動させない。
4スキルで回すTDD自動化ループ
AIを部下として機能させるためには、単一の巨大なプロンプトを与えるのではなく、明確に責務が分離された「業務手順書=スキル」を構成する必要があります。本手法では、Claude Codeのカスタムスキル機能(`.claude/skills/`)を活用し、役割と書き込み権限の異なる4つのスキルを連携させる設計をとります。
1つ目はタスク調査と起票を担う `ticket-create`(起票スキル)。コードベースを読み取り専用で精査し、Asana等に課題を起票すると同時に `status: draft` の設計書を生成します。2つ目は核心となる `ticket-implement`(実装スキル)。承認済みの設計書を確認した後、共有作業ツリーを汚さないよう独立した `git worktree`(1タスク=1ブランチ=1 worktree)を切ってTDD(テスト駆動開発)を開始します。まず失敗するテストを書き、それを通過する最小限の実装を行い、リファクタリングする過程を自律的に回します。
ここで極めて重要なのが「自分が書いたコードを自分でレビューさせない」原則です。実装後、別コンテキストのエージェントを起動して敵対的検証・セキュリティ・コード品質の3観点から並行監査を行う `PR検証スキル` を挟みます。そして最後に、これら全体を俯瞰しタスクのステータス遷移(開発タスク → TODO → リリース → 完了)を一元管理する `オーケストレータスキル` が全体を制御します。各スキルに `disable-model-invocation: true` を設定し、副作用のある処理(pushやタスクステータス更新)は許可された文脈でのみ実行させることで、自律性と安全性を完璧なバランスで両立させています。
| スキル名 | 主な役割 | タスクツール書き込み権限 | 安全制御機構 |
|---|---|---|---|
| ticket-create | コード調査、タスク起票、設計書(draft)の作成 | タスク作成のみ | コードベースの変更不可(読み取り専用) |
| ticket-implement | worktree構築、TDD実装、補助レビュー、PR作成 | 単体実行時のみ(委譲時は不可) | status: approved の設計書が必須 |
| PR検証 | 別コンテキストによる差分監査、CI/環境確認 | 明示されたコメントのみ | 実装コンテキストからの完全分離 |
| オーケストレータ | TODOからのタスク取得、スキル呼び出し、完了遷移 | ステータス更新を一元管理 | ループ試行回数・時間のハード上限 |
人が介在すべき5つの判断点と今後の問い
この全自動に見える仕組みにおいて、開発スピードと品質を極限まで引き上げている真の要素は「人間の関与をどこまで減らしたか」ではなく、「人間がどこで正確に立ち止まったか」にあります。どれほど高度なAIモデルであっても、ビジネスの目的設定や非互換な変更のリスク判断を丸投げすることは不可能です。我々エンジニアは、以下の「5つの判断ポイント(ゲート)」に絞って思考リソースを全集中させるべきです。
- ゲート1:目的と完了条件の定義(何を解決したいのか、何をもって終了とするかのゴール設定)
- ゲート2:設計書の承認(draft状態の修正方針・テスト計画に対し、人間が責任を持ってGOを出す)
- ゲート3:仕様の分岐判断(未確定の業務仕様やエッジケースが発生した際、AIの提示する選択肢から決断する)
- ゲート4:破壊的変更の承認(既存ロジックの置換、ファイル削除、データ構造の変更に対する安全確認)
- ゲート5:最終検証とマージ(PRの差分とAIが出したテスト証拠を確認し、本番環境へ取り込む最終判断)
明日からの開発実務に向けた実践的な処方箋は明確です。まず、日々の開発チケットを見直し、「目的・完了条件」と「修正手順」の記述を分離すること。そしてClaude Code等を利用する際は、いきなりコードを書かせるのではなく「まず調査して設計書を書け、指示があるまでコードはいじるな」というプロンプト制約(スキルのルール化)を組むことから始めてください。
AIがコードをいくらでも生成できるようになった今、エンジニアの価値は「コードを書くスピード」から「システム全体の責務境界と判断点をいかに美しく設計できるか」へと完全に移行しました。我々はAIに手足としての打鍵作業を奪われることを恐れるのではなく、自らが「優れた判断者・アーキテクト」としてAIという部下を指揮できているか、常に自らのキャリアと技術力に問い続けなければなりません。


コメント