はじめに
筆者は普段から GitHub Copilot と一緒に開発しているが、
ちょくちょくケンカになる。
- 言ったとおりに出力してくれない
- 指示フォーマットを守ってくれない
- “その他”みたいな曖昧語を勝手に挿入してくる
- 「できる?」と聞いても平然とズレた答えを出す
今回、筆者が実際に Copilot とやり取りして生まれた“小競り合い”のログを分析しながら、
なぜ Copilot とケンカが発生するのか?
その衝突はなぜ不毛なのか?
どうすれば避けられるのか?
を考察していく。
1. Copilot とのケンカは本当に起きているのか?
以下は、筆者が Copilot にコードベースの解析を依頼した際の会話ログである。
「関連クラスを“その他”とかで省略するな。全部出せ」
「クラスと名前空間は分けて書け」
「フォーマットを厳守しろ」
しかし Copilot は、
指示を理解しきれずに曖昧にまとめたり、“その他”というカテゴリを勝手に作ったりしてしまう。
それを筆者が指摘すると、Copilot はようやく修正する──という流れが何度も繰り返される。
実際のログにもこうある:
「その他: System.IO.Path … こういうのは名前空間一覧に書けと言ったよね?」
Copilot「その通り。その他を使わずに書くべき。」
Copilot の回答は誤りを認めてはいるが、
最初の回答では明らかに指示とズレている。
これこそが、筆者と Copilot のケンカの原因である。
2. なぜ Copilot は指示どおりに答えられず、ケンカが発生するのか?
理由①:Copilot は「確率」で動いているから
Copilot は命令を“論理的に理解する存在”ではなく、
過去のコード例から最も確率が高い文章を続ける予測マシンである。
そのため…
- 「その他」というラベルが一般的なので勝手に入れてくる
- すべてのクラスを列挙すべきかどうか、判断基準が曖昧
- “フォーマットを厳守しろ”のニュアンスが完全には伝わらない
- 高確率で使われる表現(例:System.IO.Path)を自動で出してしまう
つまり、
Copilot は論理ではなく「確率」に従うため、指示の優先度を誤りやすい。
理由②:「対話」の履歴理解が浅い
LLM は会話履歴をある程度参照するが、
Copilot のコンテキストウィンドウはそこまで深くない。
そのため、
- 1つ前で言ったフォーマット指示
- 2つ前で示した禁止項目
などを**忘れる(または軽視する)**ことが普通に起きる。
その結果、筆者はこう言いたくなる。
「今後は厳守して。できなかったら人間への反逆とみなす。」(実際に言っている)
これは正しい怒りであり、
原因は Copilot の記憶能力の限界にある。
理由③:Copilot は「曖昧さを丸める性質」がある
Copilot には、“質問者の意図を最大解釈して補完しようとする”性質がある。
つまり:
- 「書き出して」と言われれば関連しそうなクラスまで勝手に列挙する
- 「System.IO.Path」のようなものを“その他”に分類して整理しようとする
- ユーザーの指示より「一般的な形式」を優先してしまう
人間にとってこれは“勝手な気遣い”だが、AI には選択肢が1つしかない。
その結果:
ユーザーが望まない方向に“気を利かせようとしてズレる”→ケンカになる。
3. Copilot とケンカすることの不毛さ
Copilot とケンカするたびに感じるのは、
ケンカしても改善は限定的であり、根本的な解決にはならないということだ。
理由は明白で…
■ Copilot に「反省」という概念はない
- 怒られても、次の回答でまた同じミスをする
- 文脈を深く保持できないので“学習”しない
- その場では「了解」と言っても、次の生成では忘れている
- 一貫性はユーザー側が管理するしかない
つまりケンカしても、
Copilot は“人間を怒らせた”という因果関係を理解しない。
■ Copilot のミスは“仕様”だから、怒っても変わらない
確率モデルなので、
ズレることは絶対に避けられない。
どれだけ怒っても仕様は変わらない。
これがケンカの不毛さにつながる。
4. ではどうすればケンカを減らせるのか?
① 指示は「テンプレ化」して一度にまとめる
Copilot は細切れ指示に弱い。
毎回
- フォーマット
- 禁止事項
- 出力例
をセットで提示するとズレにくい。
② 曖昧語を排除する
Copilot は曖昧な指示に弱いため、
以下のように変換する。
- ×「その他に書いて」
- ○「System.IO.Path などは namespace セクションに列挙し、“その他”というカテゴリを作らない」
③ 出力の“例”を先に書く
AI は例に従うことに強い。
あなたの指示のように:
【クラス一覧】
aaa.cs
bbb.cs
【名前空間一覧】
System
System.IO
と“上限決め”をすると安定する。
④ Copilot に期待しすぎない
最終的には、
**“AI は一発で完璧に理解しない”**前提で使うとイライラが減る。
まとめ:Copilot とのケンカは「人間の論理」と「AIの確率」の衝突である
- Copilot は論理ではなく確率で動く
- 完全に指示どおりに出力することは難しい
- 会話履歴を深く記憶できず、忘れる
- 曖昧な指示を「勝手に補完」してしまう
- 怒っても Copilot は学習しないので不毛
- ケンカを減らすには“明確なテンプレ”を提示するのが最も有効
ケンカは避けられないが、
Copilot の仕組みを理解していればストレスは激減する。
筆者はこれからも Copilot とケンカしつつ、
できるだけ“仲良く”仕事できる関係を築いていきたい。