AIエージェントに「相棒」を持たせるという発想
2026年4月6日、GitHubはGitHub Copilot CLIの実験的新機能として「Rubber Duck」モードを発表しました。同日、日本語のテック系ニュースサイトPublickeyでも詳細が紹介され、開発者コミュニティで一気に話題となっています。
名前の由来は「ラバーダックデバッギング」— アヒルのおもちゃに問題を説明するだけでバグが見つかる、というプログラマーの有名な逸話から。Copilot CLIのRubber Duckモードは、このメタファーを別のAIモデルに置き換えたものです。
本記事では、Rubber Duckモードの設計思想・使い方・他のAIコーディングツールとの比較を整理します。
Rubber Duckモードとは何か
ひと言で説明すると
メインで利用するAIモデルの回答に対して、別のAIモデルがセカンドオピニオンを返す機能です。GitHub Copilot CLIでコマンドやコードの提案を求めた際に、Rubber Duckモードをオンにすると、裏側で別モデルにも同じクエリが投げられ、結果が突き合わせられます。
具体的なユースケース
| シーン | 効果 |
|---|---|
| シェルコマンド生成 | 危険なオプション(rm -rfなど)を別モデルが警告 |
| コードリファクタリング | 別モデルがバグ混入・型不整合を指摘 |
| エラー解決 | 異なるモデルが異なるアプローチを提示 |
| シェルスクリプトのレビュー | セキュリティ脆弱性をクロスチェック |
なぜ「Rubber Duck」なのか
GitHubはこの機能を単なるマルチエージェント化ではなく、デバッギング文化への敬意を込めた”相棒”機能として位置付けています。人間がアヒルに説明して気付く代わりに、別モデルに説明させて気付きを得る— これがネーミングの核心です。
技術的な仕組み
モデルファミリーの組み合わせ
Copilot CLIはメインのモデル(Claude Sonnet、GPT-5系、Gemini 2.5系など)と、Rubber Duck役のモデルを個別に選択できます。同じファミリーの異なるサイズ(例: Sonnet + Opus)を組み合わせることも、完全に別ベンダーのモデル(例: GPT + Claude)を組み合わせることも可能です。
内部フロー
# ユーザーの入力
$ gh copilot suggest "nginxの設定を再読込する方法"
# Rubber Duckモード有効時の内部処理
# 1. メインモデル(Claude Sonnet)に問い合わせ
# 2. サブモデル(GPT-5 mini)に同じクエリを投げる
# 3. 両方の回答を差分解析
# 4. 一致 or 差分をユーザーに提示
差分があった場合、Copilot CLIは「どちらが正しい可能性が高いか」を即断せず、両方をユーザーに提示します。最終判断は人間に委ねる設計思想です。
設定方法
設定はgh copilot configから行います。
# Rubber Duckモードを有効化
$ gh copilot config set rubberDuck.enabled true
# セカンドオピニオン用モデルを選択
$ gh copilot config set rubberDuck.model claude-sonnet-4-6
# 差分しきい値(信頼度低下時のみ表示)
$ gh copilot config set rubberDuck.threshold 0.7
既存ツールとの比較
Claude Codeとの違い
Claude Codeは単一モデル(Claude)による自律実行型ですが、Copilot CLIの Rubber Duck は異なるモデルの意見を重ねるアプローチ。両者は競合というより思想の違いと捉えるべきです。詳細な比較はCursor 3 vs Claude Code 徹底比較でも触れています。
| 項目 | Copilot CLI (Rubber Duck) | Claude Code | Cursor 3 |
|---|---|---|---|
| モデル構成 | マルチモデル | 単一(Claude) | 単一(ユーザー選択) |
| 回答の信頼性確保 | セカンドオピニオン | ツール実行+評価 | 人間のレビュー |
| 実行自律性 | 低〜中 | 高 | 中 |
| 得意領域 | シェル操作・調査 | 大規模リファクタリング | 日常のコーディング |
OpenCrewとの違い
マルチエージェント方向のアプローチはOpenCrewのマルチエージェントOSと似ていますが、OpenCrewが役割分担を目指すのに対し、Copilot CLIのRubber Duckは同じ問いへの別視点を目指す点が異なります。
Rubber Duckモードが解く問題
1. LLMの「自信満々な間違い」
単一モデルによるAIコーディングは自信ある間違い(confident hallucination)が最大の弱点でした。出力が自然な日本語・自然なコードである限り、ユーザーは疑いにくい。Rubber Duckは異なるモデルの視点で認知バイアスを割る役割を果たします。
2. 危険コマンドの事前警告
シェルコマンド生成は特にリスクが高く、sudo rm -rf /のような致命的な出力を単一モデルがしてしまった場合、見抜きにくいケースがあります。別モデルが異なる安全基準でチェックすることで、こういったコマンドを事前にブロックできます。
3. ベンダーロックインの緩和
シングルモデル依存はベンダーロックインのリスクを高めます。Rubber Duckモードは複数ベンダーのモデルを日常的に併用する習慣を作り、ユーザー側の選択肢を広げる副次効果もあります。
現場での導入パターン
パターン1: レビューパイプライン
# CIでシェルスクリプトをRubber Duck経由でレビュー
$ gh copilot review --rubber-duck ./deploy.sh
デプロイスクリプトやIaCコードをRubber Duck経由でレビューすると、シングルモデルでは見逃していたリスクを検出できます。
パターン2: ペアデバッグ
プロダクション障害対応中、Rubber Duckモードで2つのモデルの仮説を並べると、原因切り分けのスピードが上がります。片方のモデルが「DBコネクション問題」と言い、もう片方が「ロードバランサ問題」と言えば、両方を同時に調査できます。
パターン3: 学習支援
若手エンジニアがCopilot CLIを学習目的で使う場合、Rubber Duckモードは異なる視点の教材として機能します。「こう書く方法もあるが、別モデルはこう書くだろう」という提示は、視野を広げる効果があります。
注意点と制約
1. レイテンシの増加
2つのモデルに問い合わせる以上、応答時間はおおむね1.5〜2倍になります。対話型の即応性が欲しいシーンでは、常時オンは推奨されません。
2. コスト増
2モデル呼び出しなので、API利用料金は単純に2倍になります。現時点でPublickeyの報道では料金プランの詳細は未公表ですが、Rubber Duckは高リスク作業だけに限定して使うのが現実的でしょう。
3. 実験的機能である点
GitHubは明確に「実験的機能」と位置付けており、一部のCopilot Proユーザーから段階的ロールアウトされています。プロダクションでの継続利用を前提にする場合は注意が必要です。
まとめ
GitHub Copilot CLIの「Rubber Duck」モードは、AIコーディング領域に“相棒”という新しい概念を持ち込みました。
- 設計思想: 別モデルの視点で自信ある間違いを割る
- 想定シーン: 危険コマンド・IaCレビュー・ペアデバッグ・学習支援
- 現実的な使い方: 常時オンではなく、高リスク作業に限定して発動
- 他ツールとの差別化: Claude Codeの”自律実行”、Cursor 3の”GUI支援”に対して、Copilot CLIは”セカンドオピニオン”
シングルモデルへの依存リスクが顕在化した2026年、Rubber Duckモードはマルチモデル併用の標準スタイルを作るかもしれません。AIコーディングの実務導入を検討中の方は、Claude Code活用ワークフローも併せてご参考にしてください。
参考ソース