InfoWorld 寄稿者 |
「AI モデルは現在、そこそこのプログラマーが時間内により多くの成果を出せるように支援することに優れています」とエンジニアの David Showalter 氏は主張する。しかし、それは正しいのだろうか? Showalter 氏は、大規模言語モデル (LLM) は信頼できないコーディング アシスタントであるという Santiago Valdarrama 氏の主張に応えていた。Valdarrama 氏は、「LLM が [一貫してコンピューターをコマンドに応答させるプログラミング言語と同じ] 保証を与えない限り、LLM は永遠に「クールなデモ」のままで、本格的なアプリケーションには役に立たない運命にある」と述べている。LLM がプロンプトに応答する方法に明らかに一貫性がないという点では、彼の言う通りである。同じプロンプトでも、LLM の応答は異なる。そして Showalter 氏はおそらく間違っている。AI モデルは平均的な開発者がより多くのコードを生成するのを支援することには「優れています」が、それは使用可能なコードを生成することと同じではない。
AI とソフトウェア開発の秘訣は、どこに粗い部分があるかを知ることです。多くの開発者はそれを知らず、LLM の出力に頼りすぎています。HackerNews のコメンテーターの 1 人が言うように、「ChatGPT に対するユーザーの信頼は、特定の種類のユーザーにとってエラーが明らかでない例に基づいているのだろうか」。ソフトウェア開発で AI を効果的に使用するには、LLM からゴミが出ているかどうかを知るのに十分な経験が必要です。
私がこれを書いている間にも、多くの開発者が反対するでしょう。上記の HackerNews スレッドの多くのコメントを読んでみてください。一般的に、反論は「もちろん、LLM の出力を完全に信頼することはできません。Stack Overflow や IDE などで見つけたコードを完全に信頼できないのと同じです」に集約されます。
これは、ある意味では真実です。しかし、期待するほどうまくいかないこともあります。たとえば、開発者は IDE に絶対的な信頼を置くべきではないと言うのは妥当ですが、IDE が「プログラムを台無しにする」ことはないと安全に想定できます。では、Lisp の括弧を間違えないなどの基本的なことについてはどうでしょうか。ChatGPT はおそらく間違えるでしょうが、IDE は間違えるでしょうか。おそらくそうはならないでしょう。
Stack Overflow のコードはどうでしょうか。確かに、無意識にコピー アンド ペーストする開発者もいますが、経験豊富な開発者であれば、まずコードに関する投票やコメントを確認するでしょう。LLM はそのようなシグナルを発しません。それを信じて受け入れるしかありません。あるいはそうでないかもしれません。ある開発者が示唆しているように、「[Stack Overflow と LLM の出力はどちらも] おそらく間違っている [そしておそらく経験の浅い開発者によって書かれた] ものとして扱う」のが賢明です。しかし、たとえ間違いであっても、そのようなコードは「少なくとも私を正しい方向に導く」ことができます。
繰り返しになりますが、開発者は Stack Overflow のコード サンプルや LLM コードが間違っていることを認識できるほどのスキルが必要です。あるいは、開発者はそれを「React ページの大きなテーブルのようなありふれたものの 200 行の定型コード」などにのみ使用するだけの賢明さも必要かもしれません。結局のところ、ここでは「それを信頼する必要はありません。完了後にテストするだけです。」
つまり、ある開発者はこう結論づけています。「ジュニア開発者やインターン生を信頼するのと同じように AI を信頼してください。やり方がわかっていて、正しく行われているかどうか確認できるが、そのために時間を費やしたくないタスクを AI に任せてください。そこがちょうどいいところです。」AI から最大限の恩恵を受ける開発者は、AI が間違っているが、それでも多少は有益だと判断できるほど賢い人たちです。
Datasette の創設者 Simon Wilison 氏は、初期のころ、「AI から最高の結果を得るには、多くの知識と経験が必要です」と主張していました。「その多くは直感にかかっているからです」。彼は経験豊富な開発者に対し、さまざまな LLM の限界をテストして、それぞれの長所と短所を評価し、うまくいかない場合でも効果的に使用する方法を評価するようアドバイスしています。
もっと経験の浅い開発者はどうでしょうか。彼らが AI を効果的に活用できる見込みはあるのでしょうか。Amazon CodeWhisperer のゼネラルマネージャーであり、Amazon Q のソフトウェア開発ディレクターでもある Doug Seven 氏は、そう信じています。彼によると、CodeWhisperer のようなコーディングアシスタントは、経験の浅い開発者にとっても役立つそうです。「彼らは、自分がどこに向かっているのかを理解するのに役立つ提案を得ることができ、他の人の邪魔をする必要が減ります (たとえば、助けを求めるため)。」
おそらく、いつものように正しい答えは「それは状況による」でしょう。
そして、重要なのは、ソフトウェア開発の正しい答えは、一般的に「より多くのコードをより速く書く」ではないということです。私が主張したように、まったく逆です。最高の開発者は、コードを書く時間を減らし、解決しようとしている問題とその解決方法を考える時間を増やします。LLM はここで役立ちます。Willison は次のように示唆しています。「ChatGPT (および GitHub Copilot) は、膨大な量の「物事を理解する」時間を節約してくれます。Bash で for ループを書くことから、JavaScript でクロスドメイン CORS リクエストを作成する方法を覚えることまで、すべてを調べる必要さえありません。プロンプトを出すだけで、80% の確率で正しい答えを得ることができます。」
前述のように、「80% の時間」のどこで線引きをするかを知ることは、経験から身につくスキルです。しかし、たとえば Scala で何かを書く方法の大まかなアイデアを得るために LLM を使用する練習は、すべての人に役立ちます。ただし、LLM の出力を批判的に見守っている限りは。
Matt Asay は MongoDB で開発者関係を担当しています。ここで述べられている意見は Matt のものであり、雇用主の意見を反映するものではありません。
著作権 © 2024 IDG Communications, Inc.
著作権 © 2024 IDG Communications, Inc.