概要
- LLMを使ったコーディング支援の違和感について考察
- コードの移動やリファクタリング時の人間とのアプローチの違い
- LLMはコピーペーストを使わず、記憶ベースで書き換える手法
- 質問をせずに推測で作業を進める問題点
- 人間開発者の代替にはまだならない理由
LLMによるコーディング支援の違和感
- LLM(大規模言語モデル) を再びコーディング支援で使い始めた際の違和感
- 人間とLLM の間で感じる“波長のズレ”という感覚
- コードリファクタリング時、 LLMはコピーペーストを使用しない
- 例:大きなファイルを複数に分割する際、 LLMは記憶から新たに書き出す
- カットやペーストツールを用いず、削除と書き込みコマンドのみで対応
- 人間はコピーペーストを多用 し、コードの一貫性や正確さを担保
- コードが「元と同じ」である確信を持てる
- Codexなど一部LLMは sedやawkを使ってコピーペースト的操作を試みる が、常にうまく機能しない
LLMの問題解決アプローチの違和感
- LLMは質問が苦手
- 前提を仮定し、推測ベースで強引に解決策を提示
- 人間の開発者 は大きな変更や不明点で必ず「質問」を挟む
- 「悪い質問はない」という文化
- LLMは 壁にぶつかるまで推測を続ける
- 失敗しても同じアプローチを繰り返す傾向
- プロンプトを工夫しても、 十分な質問を促すのは難しい
- 例:Rooのようなツールでも完全ではない
LLMが人間開発者を代替できない理由
- LLM開発企業は「速さ」を重視したRL(強化学習)を採用している可能性
- こうした 挙動の違和感 が、LLMが人間開発者を「完全に置き換える」という主張への反論材料
- 現状、 LLMは「自信過剰なインターン」的存在
- 人間開発者と「波長が合う」には至らない現状
もっと重要なレベルで言うと、彼らは極端なサポートなしでは、ちょっと複雑なタスクでも本当にうまくいかないことがわかった。小さなプロジェクト(合計2.5K行)でパーサーをリファクタリングさせたかったんだけど、ちょっと絡み合いすぎてたからね。計画を立てたんだけど、見た感じは合理的だったから、段階的に進めるように指示したんだ。チェックポイントも設けてね。彼は「それをやった」と言ったけど、「じゃあ古いアーキテクチャは削除されたの?」って聞いたら、「いいえ、削除されていません」と。新しい構造が古いものの代わりに使われているのか聞いたら、「いいえ、そうなっていません」と。結局、彼が書いたものは実際には正しくなくて、テストスイートの80%が失敗した。サポートを増やして3回やったけど、「リファクタリングしろ」っていう抽象的なタスクには、同じ失敗パターンでうまくいかなかった。クラスZに対して変更XとYを加え、クラスAを削除するように正確に指示しないといけない感じで、そうなると彼に無監視で作業させることができなくなる。これがLLMにやらせる理由の半分なのに。