AIがソフトウェアを実際に構築できない理由
ChatGPTなど多くの大規模言語モデル(LLM)が人間並みのコーディング能力を持つようになったというベンチマーク結果が多数登場しており、ソフトウェア開発においてAIが活用される潮流が生じつつあります。ところが、コードエディタ「Zed」の開発チームの一員であるコンラッド・アーウィン氏は、「LLMはソフトウェアを実際に構築することはできない」として、その理由を説明しています。
Why LLMs Can't Really Build Software — Zed's Blog
https://zed.dev/blog/why-llms-cant-build-softwareアーウィン氏が長年人間のソフトウェアエンジニアの仕事を見ている中で気づいたのは、人間が常にメンタルモデルを構築するというものでした。メンタルモデルとは、頭の中で行動をイメージするようなもので、有能な人間はたいていの場合以下の動作を繰り返していたとのこと。 ・要件のメンタルモデルを構築する ・その要件を満たすコードを書く ・コードが実際に何をしているかのメンタルモデルを構築する ・違いを特定し、コードまたは要件を更新する アーウィン氏は「有能なソフトウェアエンジニアの特筆すべき点は、明確なメンタルモデルを構築し維持する能力です。一方でLLMは違います。LLMはコードを書くのが非常に上手で、問題点を特定して修正する際のコードの更新もある程度は可能です。実際のソフトウェアエンジニアがやるようなこと、コードを読む、テストを実行する、ログを追加するなどもできます。しかし、彼らができないのは、明確なメンタルモデルを維持することです」と指摘。
アーウィン氏の肌感覚では「LLMは無限に混乱するもので、自分が書いたコードが実際に機能すると仮定し、テストが失敗すると、コードを修正するべきかテストを修正するべきか推測するしかなく、イライラしてすべてを削除して最初からやり直す」という印象があり、ここが人間と大きく違い、与えられた文脈を見直して問題点を導き出すような処理ができないと主張しています。
ソーシャルサイトのHacker Newsでは、「人間は一歩引いて全体を俯瞰しつつ問題の根本原因を特定することができる」と補足されていました。
アーウィン氏は「人間のソフトウェアエンジニアは作業を進める中でテストを実施します。テストが失敗すると、メンタルモデルを確認してコードを修正するかテストを修正するか、または決定を下す前に追加のデータを集めるかを判断できます。イライラすると、話し合いを通じて助けを求めることができます。そして、時々すべてを削除して最初からやり直すこともありますが、その際は問題の理解がより明確になっています」と人間の特徴を分析。 一方のAIには以下のような欠点があるとしています。 ・モデルは欠落した文脈を見つけるのが苦手 ・新しく入力された情報ほど正しいと錯覚しがち ・誤った情報を事実として主張する幻覚に陥る
アーウィン氏は「要件が明確で、問題が単純であれば、一度で完了できます。ところが、より複雑なタスクでLLMは文脈を正確に維持できず、解決策を提示するための反復作業に取り組めません」とまとめています。
Hacker Newsでは、「LLMは確かに未熟だが、人間のジュニアエンジニアと同等の能力は持っている」「少ない文脈で人間と同様の結果を求める場合が多くて失敗するだけで、人間のソフトウェアエンジニアが使うようなツールを全て与えれば改善する」「LLMは現在のところソフトウェアを開発できないかもしれないが、2022年にChatGPTが登場して以来、10倍に進化しているため、今後はできるようになるだろう」といったコメントが寄せられました。
・関連記事 AIを使ったソフトウェア開発の「正解」はまだない - GIGAZINE
Microsoft製品のコードの30%程度はAIで書かれている - GIGAZINE
Googleに約25年務める開発者が「どうやってGoogleは汎用人工知能(AGI)を達成しようと計画しているのか」について語る - GIGAZINE
AIを使って効果的にプログラミングを行う方法とは? - GIGAZINE
AIに「もっといいコードを書いて」と繰り返し要求するとコードの実行速度は向上するがバグが増えるという報告 - GIGAZINE