← 100 Challenge

マルチAI討論システム

Claude Code スラッシュコマンドで6体のAIエージェントが討論し、止揚的結論を導く

1. 概要

前日(0318)のCLI三者討論フレームワークを発展させ、Claude Codeのスラッシュコマンド+サブエージェント機能で実際に動作するマルチAI討論システムを設計した。

2. アーキテクチャ

Phase 0 オーケストレーター起動(ユーザーがテーマを指定) │ Phase 1 主張生成(6並列) ├─ Claude賛成派 ──→ 1_claims/pro_claude.md ├─ Claude反対派 ──→ 1_claims/con_claude.md ├─ Gemini賛成派 ──→ 1_claims/pro_gemini.md ├─ Gemini反対派 ──→ 1_claims/con_gemini.md ├─ Codex賛成派 ──→ 1_claims/pro_codex.md └─ Codex反対派 ──→ 1_claims/con_codex.md │ Phase 2 要約(2並列)※オーケストレーターはclaims未読 ├─ 賛成派サマライザー(pro×3を読む)──→ 2_summaries/pro_summary.md └─ 反対派サマライザー(con×3を読む)──→ 2_summaries/con_summary.md │ Phase 3 審判(1タスク)※オーケストレーターはsummaries未読 └─ 審判AI(要約2件を読む)──→ 3_report/final_report.md │ Phase 4 ユーザーへ完了通知

3. 使い方

20260319/ ディレクトリをカレントディレクトリとしてClaude Codeを起動し、スキルを実行する。

cd 20260319
claude

# Claude Code内で:
/debate ソフトウェア開発においてテストは本当に必要か

実行後、debate_YYYYMMDD_HHMMSS/ ディレクトリが生成される。

4. 定義ファイル構成

20260319/
├── .claude/
│   ├── skills/
│   │   └── debate/
│   │       └── SKILL.md          # オーケストレーター(スキル定義)
│   └── agents/
│       ├── debater/
│       │   └── AGENT.md          # 討論者エージェント(Claude用)
│       ├── summarizer/
│       │   └── AGENT.md          # 要約者エージェント
│       └── judge/
│           └── AGENT.md          # 審判エージェント
└── prompts/
    └── debater.md                # Gemini/Codex CLI用プロンプトテンプレート

5. 生成されるワークスペース

debate_20260319_143000/
├── 1_claims/
│   ├── pro_claude.md      # Claude賛成派の主張
│   ├── pro_gemini.md      # Gemini賛成派の主張
│   ├── pro_codex.md       # Codex賛成派の主張
│   ├── con_claude.md      # Claude反対派の主張
│   ├── con_gemini.md      # Gemini反対派の主張
│   └── con_codex.md       # Codex反対派の主張
├── 2_summaries/
│   ├── pro_summary.md     # 賛成派要約(共通主張+独自洞察)
│   └── con_summary.md     # 反対派要約(共通主張+独自洞察)
└── 3_report/
    └── final_report.md    # 最終レポート(評価+止揚的結論)

6. 設計上のポイント

オーケストレーターは中間ファイルを読まない

オーケストレーターが主張ファイルを読むと、要約の前にバイアスが入る。ファイルパスの受け渡しのみ行い、内容の解釈はサマライザーと審判に委ねる。

立場ごとに要約AIを分離

賛成・反対それぞれに専任のサマライザーを置くことで、立場の混同を防ぐ。サマライザーは「3者共通の主張(Core Claims)」と「1者だけの独自視点(Unique Insights)」を分離して出力する。

止揚(Aufheben)的結論

審判AIは単純な勝ち負けではなく、弁証法的な統合を目指す。賛成・反対双方の正当な点を取り入れた、より高次の結論を導出する。

7. スキル・エージェント定義

役割種別定義ファイルモデル概要
オーケストレーターSkill.claude/skills/debate/SKILL.mdopus全体の制御フロー。Phase 0〜4を順次実行
討論者(Claude)Agent.claude/agents/debater/AGENT.mdopusテーマと立場を受け取り、主張をファイル出力
討論者(Gemini/Codex)CLIprompts/debater.mdCLIに渡すプロンプトテンプレート
要約者Agent.claude/agents/summarizer/AGENT.mdopus同一立場の3ファイルを統合要約
審判Agent.claude/agents/judge/AGENT.mdopus両要約を評価し止揚的結論を導出

フロントマター仕様

スキル(SKILL.md)とエージェント(AGENT.md)はYAMLフロントマター付きMarkdown。

# SKILL.md のフロントマター例
---
name: debate
description: マルチAI討論システム
user-invocable: true
allowed-tools: Read, Write, Bash, Glob, Grep, Agent
model: opus
argument-hint: "[討論テーマ]"
---

# AGENT.md のフロントマター例
---
name: debater
description: 討論の参加者
tools: Read, Write
model: opus
maxTurns: 5
---

8. CLI呼び出し仕様

0318の調査結果に基づく。プロンプトは一時ファイル経由で渡す(シェルエスケープ問題の回避)。

AI呼び出し方備考
ClaudeAgentツール(サブエージェント)Read/Writeツールにアクセス可能
Geminigemini -p "$(cat prompt.txt)"TTY非検出で自動ヘッドレス
Codexcodex exec "$(cat prompt.txt)" 2>/dev/nullstderr抑制で結果のみ取得

9. 前提条件

10. 実行サンプル

テーマ: 「ソフトウェア開発においてテストは本当に必要か」

実行日時: 2026-03-19 05:33 / ワークスペース: debate_20260319_053330/

Phase 1: 主張生成(6並列)

賛成派 — Claude(4,393字)

要旨: テストは品質保証と変更容易性の両面で不可欠。省略は短期的コスト削減に見えて長期的に技術的負債を蓄積する。

根拠:

  • バグの発見コストは発見時期に比例して増大(IBMの研究:本番リリース後は100倍以上)
  • リファクタリングとシステム進化の安全網(Fowlerの「レガシーコード=テストのないコード」)
  • 仕様の明文化と設計改善(TDDによるインターフェース設計の自然な改善)
  • CI/CDパイプラインの信頼性担保(GitHub Actions等がテストステップを前提に設計)
  • チーム開発における暗黙知の補完(機械可読なドキュメントとして常に最新)

先制回答: 小規模でもコアロジックにはテストを書く習慣が将来の拡張に備えた合理的判断。テストなしの手動確認・障害対応コストを定量比較すれば投資は正当化される。

賛成派 — Gemini(4,266字)

要旨: テストは単なる確認作業ではなく、品質・開発効率・ビジネス持続可能性を支える不可欠な基盤。

根拠:

  • 品質担保とエンドユーザーからの信頼獲得(アリアン5ロケット爆発事故の事例)
  • 開発ライフサイクル全体のコスト削減(シフトレフトによる手戻り最小化)
  • 安全なリファクタリングと継続的な機能進化の実現
  • 「動く仕様書」としての役割とチームの意思疎通
賛成派 — Codex(4,032字)

要旨: テストは品質確保・保守性向上・コスト削減・仕様共有・属人化防止のために必要な開発活動。

根拠:

  • 品質を安定させ重大な不具合の流出を防ぐ(ECサイト・金融系の具体例)
  • 変更に強い開発を可能にする(回帰テストが安全網として機能)
  • 開発コストを長期的に下げる(本番障害の対応コスト vs 開発初期の修正コスト)
  • 仕様理解とチーム開発を支える(正常系・異常系・境界条件の共有)
  • 属人化防止(担当者退職後の保守不能リスク)— Codex独自の視点
反対派 — Claude(4,378字)

要旨: テストは品質向上の一手段に過ぎず、すべての開発文脈において必須とはいえない。

根拠:

  • 小規模・短命なプロジェクトではROIが成立しない
  • テスト自体がバグを生む(偽の安心感。2022年 State of Testing調査)
  • 型システム・静的解析・形式検証がテストを代替しつつある(Rustの所有権モデル等)
  • 実装詳細に密結合したテストがリファクタリングを阻害する
  • 本番トラフィックを用いた観測型品質保証の台頭(Netflix・Amazon)

先制回答: 品質保証はテスト以外の手段の組み合わせで達成可能。テスト整備は安定フェーズ以降でも合理的。

反対派 — Gemini(4,392字)

要旨: 「テストは必ずしも常に必要・最適解であるとは限らない」

根拠:

  • 市場投入速度(Time-to-Market)の機会損失(Twitter初期の事例)
  • テストコード自体が「負債」となるリスク(カバレッジ100%追求の弊害)
  • 「テスト=品質」という誤認と心理的油断
  • 現代的な型システムと静的解析による代替
反対派 — Codex(4,868字)

要旨: テストはあらゆるソフトウェア開発で必須とするのは現実的ではない。

根拠:

  • 費用対効果に合わないケースの存在(社内限定ツール・データ変換スクリプト)— Codex独自の視点
  • テスト以外の品質確保手段(SQLの制約・ORM・入力バリデーション・CI上のLint)
  • テストが保守負担となり開発速度を下げる
  • 実運用での価値がテスト有無より重要(段階的公開・ログ監視・素早い修正体制)
  • テストがあっても品質は保証されず、過信は危険

Phase 2: 要約(2並列)

賛成派サマライザー

共通主張(Core Claims):

  • 早期バグ発見によるコスト削減(IBMの調査: 本番後修正は100倍以上)
  • 変更・リファクタリングに対する安全網
  • 動く仕様書としてのチーム開発支援
  • 品質保証と信頼性の確保

独自の洞察(Unique Insights):

  • Claude独自: CI/CDパイプラインとの構造的統合 / TDDによる設計改善効果
  • Gemini独自: アリアン5ロケット爆発事故という歴史的失敗事例の引用
  • Codex独自: 属人化リスクとしての視点 / 業務ドメイン固有の具体例(ECサイト・金融系)

強度評価: 複数の独立した軸から一貫して同一結論を支持。ただし反論耐性の厚みにばらつきあり。

反対派サマライザー

共通主張(Core Claims):

  • コスト対効果からテストが合理的でないケースの存在
  • 型システム・静的解析がテストを部分的に代替しうる
  • テストコード自体が保守負担となり開発速度を阻害する
  • テストの存在が品質を保証するわけではなく過信が危険
  • 観測・監視・ロールバック等の代替品質保証手段の成熟

独自の洞察(Unique Insights):

  • Claude独自: テスト自体がバグを生む「偽の安心感」 / 段階的戦略の正当化 / Netflix・Amazonの事例
  • Gemini独自: Twitter初期の成長事例 / 「テストのための開発」という本末転倒の具体描写
  • Codex独自: 社内限定ツールという地味だが現実的なユースケース / SQL制約・ORM等のインフラ層による品質担保

強度評価: 「無条件の必須論への反証」という抑制的立場は堅固だが、ミッションクリティカル領域への言及が薄く適用範囲の限界が不明確。

Phase 3: 最終レポート(審判)

説得力の評価

評価軸賛成派反対派
論理的整合性A — 複数の独立した軸から一貫して同一結論を支持B — 抑制的立場は健全だが適用範囲の限界が不明確
根拠の具体性A — IBM調査、アリアン5事故、ECサイト・金融系の具体例B — Netflix・Amazon等の事例はあるが因果関係の立証が不十分
反論への対応力B — Claudeのみ先制回答あり、他2名は反論への対応を欠くB — ミッションクリティカル領域への反論が薄い
独自性B — CI/CD統合やTDD設計改善等の新規性ありA — 通説を反転させる切り口に独自性
総合A(8.0/10)B(6.5/10)

止揚(Aufheben)的結論

この討論の本質的な対立は「テストが必要か否か」ではなく、「品質保証のコストをどの時点・どの手段に配分するのが最適か」という資源配分問題である。

賛成派が正しく指摘するように、欠陥コストは発見が遅れるほど指数関数的に増大し、テストはその早期発見の最も体系化された手段である。一方、反対派が正しく指摘するように、テストコード自体が保守対象であり、不確実性の高い段階で過剰なテストを整備することは投資効率を損なう。両者は矛盾しているのではなく、ソフトウェアのライフサイクル上の異なるフェーズにおける最適戦略を述べているに過ぎない。

統合的視座は「品質保証戦略のポートフォリオ管理」という概念である。テストは品質保証の重要な構成要素だが唯一の手段ではなく、型システム・静的解析・コードレビュー・監視・ロールバック機構・フォーマル検証といった手段とともに、プロジェクト特性に応じて最適な組み合わせを選択すべきである。

問うべきは「テストは必要か」ではなく、「このプロジェクト・このフェーズにおいて、品質保証への投資をどの手段にどれだけ配分するのが合理的か」である。

残された論点

  1. AI支援によるテスト自動生成が議論の前提を変える可能性 — テスト作成コストがほぼゼロに近づいた場合、討論の構図自体が変わりうる
  2. ドメイン別のリスク分析の欠如 — ミッションクリティカル領域と低リスク領域では必要性が質的に異なる
  3. テストの「書き方」の品質が議論されていない — テストの要否ではなくテスト設計の巧拙の問題が混在