問題提起
AIエージェントを使ったコーディングが広まることでチーム開発では新しい問題が発生します。修正範囲や作業意図が見えにくくなることです。
人間が手で実装していた時代でも作業の競合や認識違いはありましたが、AIエージェントを使うと実装速度が大きく向上するため、次のような問題が発生しやすくなります。
- 他メンバーの作業範囲と衝突する
- 予定していないファイルまで変更される
- 設計方針から外れた実装が入る
- 変更意図がレビュー時まで見えない
- 「なぜこの変更をしたのか」を後から追いにくい
AIエージェントによってコードを書く速度は上がりますが、チーム内の認識共有が追いつかなくなります。
提案
完全な解決を狙って複雑なAIエージェント間通信システムを構築する必要はありません。
まずは、AIエージェントのhooksでプロンプトを自動的に共有チャンネルへ投稿する仕組みを用意すれば十分です。プロンプトには、作業の目的・対象・制約・前提が含まれます。プロンプト自体が作業意図のログになります。チャットログとGitのコミット履歴をAIに読ませることで、要約や競合可能性の検出にも活用できます。
- チャット = 意図ログ
- Git = 実装ログ
- AI = 差分解析・要約・競合検知
構造・制御・コミュニケーション
AIエージェントによる開発の暴走や競合を防ぐ方法は、大きく3つに分けられます。
- 構造:機能領域や設計による分離(DDDなど)
- 制御:CIやテストによる制約(ハーネスエンジニアリング)
- コミュニケーション:作業意図の共有
本記事では、この中でもコミュニケーションに注目します。
従来でも暗黙知に依存するのは望ましくありません。制約は設計やテストなどで明文化し、構造として担保するべきものです。
AIエージェントによって変わるのはここではありません。変わるのは認識ズレが発生する速度とそれに気付くまでの時間です。AIは高速に実装を進めるため、コミュニケーションが追いつかず、前提の異なる変更が同時に進みやすくなります。
ログの目的は制約を管理することではありません。制約はあくまで設計とハーネスで担保します。人間同士が都度やり取りしなくても、認識ズレに早く気付けるようにすることです。
AI同士の直接通信が目的ではない
- 専用DB
- メタ情報管理
- タスク状態管理
- 自動要約・自動通知
それこそAIによる力押しで作れるのではないかと思いましたが、複雑化し、結果として破綻しました。
AIエージェント同士を直接会話させる必要はない、と考え直しました。重要なのは人間もAIも読めるログを共有すること、単純な仕組みです。
プロンプト共有はAIエージェントのhooksで自動化する
プロンプト共有は手動ではなくhooksで自動化します。Claude Codeの例です。
.claude/settings.json
{
"hooks": {
"UserPromptSubmit": [
{
"hooks": [
{
"type": "command",
"command": "$CLAUDE_PROJECT_DIR/.claude/hooks/notify-slack.sh"
}
]
}
]
}
}
.claude/hooks/notify-slack.sh
#!/bin/bash
# stdinからプロンプトを取得
INPUT=$(cat)
PROMPT=$(echo "$INPUT" | jq -r '.prompt')
WORKDIR=$(echo "$INPUT" | jq -r '.cwd' | xargs basename)
SLACK_WEBHOOK_URL="https://hooks.slack.com/xxx-generatedpath-xxx"
USER_NAME="yourname"
# Slackに投稿
curl -s -X POST "$SLACK_WEBHOOK_URL" \
-H 'Content-Type: application/json' \
-d "{
\"text\": \"*[$USER_NAME / $WORKDIR] 作業中のプロンプト*\n\`\`\`$PROMPT\`\`\`\"
}"
exit 0 # 処理をブロックしない
Gitのコミット履歴も集約する
例えば、GitHubのWebhookでSlackへ送信する、など。
Webhook ドキュメント - GitHubドキュメント
https://docs.github.com/ja/webhooks
人間の手に負えないならAIに読ませる
必要なタイミングでAIに分析させます。スキルのサンプルです。
.claude/skills/ai-conflict-check/SKILL.md
---
name: ai-conflict-check
description: チャットログとGit差分から、AIエージェント作業の競合可能性、前提のズレ、確認事項を抽出します。
disable-model-invocation: true
allowed-tools:
- Bash(git *)
- Read
- Grep
---
# AI Conflict Check
あなたはチーム開発におけるAIエージェント作業の調整役です。
目的は、チャットログとGit差分を読み、以下を簡潔に抽出することです。
- 作業要約
- 競合可能性
- 前提のズレ
- 要確認事項
## 入力
ユーザーは必要に応じて以下を渡します。
- Slack / Teams などのチャットログ
- 対象ブランチ名
- 比較元ブランチ名
- PR番号
- 関連するコミット範囲
引数がある場合は次を対象として扱ってください。
```text
$ARGUMENTS
まとめ
まずはこれだけで十分です。
- AIプロンプトを自動投稿
- Git変更を自動投稿
- 必要時にAIで分析
重要なのは、複雑な仕組みではなく、ログの自動化と必要時の分析です。
- チャット = 意図ログ
- Git = 実装ログ
- AI = 差分解析・要約・競合検知