「ChatGPT」が開発で役に立たない納得の理由 ただし、GPT-3.5版に限る:787th Lap
開発現場においてプログラミング作業を効率化できると「ChatGPT」に期待が集まる。一方で、まだ開発を任せられる段階ではないとの意見もある。
生成AIに期待できることの一つに「コード生成」がある。2024年2月にNVIDIAのジェンスン・フアンCEOが「AIの登場によってプログラミングはもはや人に不可欠なスキルではなくなった」と公言したこともあってか、「プログラマーは不要になるのでは」などとささやかれた。それに対して、「決してプログラマーを葬るようなことにはならない」と異を唱える開発者もいる。
ある研究結果によって、ChatGPTが開発に“使えない”理由が明かされた。
生成AIがコーディングを得意としているのは事実だが、コーディングを任せるにはまだ不安がある。そんな研究結果が発表された。
この件の詳細が、IEEEが発行しているソフトウェアエンジニアリング分野の研究や技術進展を扱う学術雑誌『IEEE Transactions on Software Engineering』の6月号に掲載された。複雑なその内容を、IEEEの学会誌『IEEE Spectrum』がブログ記事で分かりやすく解説している。
論文では「ChatGPT」によって生成されたコードを「機能性」「複雑性」「セキュリティ」の3つの観点から評価している。その結果、ChatGPTはタスクの難易度やプログラミング言語の種類、その他のさまざまな要因によって機能的なコードを生成する成功率は0.66%〜89%とされ、ばらつきがあることが分かった。
論文を発表した研究チームの一人でグラスゴー大学の講師であるユーティアン・タン氏は、AIによるコード生成は生産性の向上とソフトウェア開発の自動化においては幾つかの利点をもたらす一方で、「AIモデルの限界を理解することが重要だ。ChatGPTによるコード生成では見えない問題が発生する場合がある。だが、その問題を明らかにすることで生成技術を改善できる」としている。
このタン氏の主張を調査するために、研究チームは「C」「C++」「Java」「JavaScript」「Python」の5種のプログラミング言語についてコーディングの学習サイト「LeetCode」から728のコーディング問題をピックアップし、「GPT-3.5」ベースのChatGPTに解かせてみた。
ChatGPTは各種言語でのコーディング問題を難なくこなした。難易度「低」の問題では89%、「中」では71%、「高」では40%という成功率で、機能的なコードを生成した。だが、「2021年以降に公開された問題では、難易度の低い問題でも設問の意味すら理解できないこともあった」とタン氏は指摘する。
難易度低の問題については成功率が約89%から約52%に低下し、難易度高の問題については約40%から0.66%まで急低下した。タン氏は「ChatGPTは人間のような批判的思考能力が欠けているため、学習したことがある過去の問題にしか対処できないことがこの現象が起こる理由だ」という。
さらに研究チームは、LeetCodeからテストに関するフィードバックを受け取った後でChatGPTがコーディングエラーを修正する能力があるかどうかも調査した。ChatGPTが問題を理解できず解けなかったコーディング問題50本をランダムに抽出した。すると、ChatGPTはコンパイルエラーの修正は可能だが、間違いを修正するのは得意ではなかったという。
タン氏は「ChatGPTはアルゴリズムの本質を理解できず、誤ったコードを生成する場合がある。単純なエラーのフィードバック情報だけでは、エラーを修正することは難しい」と説明する。さらに研究チームは、ChatGPTで生成されたコードにはヌルテストの欠落など、脆弱(ぜいじゃく)性が存在することも指摘された。この脆弱性は簡単に修正できるものだが、コード生成においてセキュリティ面に難があるのは確かなようだ。
研究チームの検証によると、ChatGPTは同じLeetCodeの問題を人間が解いた時よりも、実行時間とメモリのオーバーヘッドが50%も小さいコードを作成できる。また、ChatGPTが生成したコードはC言語で作成されたものが最も複雑で、次にC++とPythonが人間が書いたコードと同程度の複雑さだったことも論文で明らかになった。
この調査結果からタン氏は「脆弱性を生まないためにも開発者はChatGPTに追加情報を提供する必要がある。複雑なプログラミング問題に遭遇したときは可能な限りの知識をChatGPTに提供し、プロンプトを使ってChatGPTに注意を促すことが重要だ」としている。
つまり、コーディングに生成AIを活用するのであれば、その能力を享受するだけでなくプログラマーとして持てる知識をAIに与える必要があるということだ。コーディングにおいては生成AIはまだ万能ではない。開発現場で生成AIを活用するには「知識の共有」がポイントになりそうだ。
上司X: コード生成AIツールの能力について調査した研究結果が発表された、という話だよ。
ブラックピット: IEEEの発行している学術雑誌で発表されたんですね。
上司X: IEEE Transactions on Software Engineeringな。ソフトウェア開発の分野では権威ある学術誌だ。だからこそ、この研究には価値があるというわけだ。
ブラックピット: なるほど。
上司X: NVIDIAのCEOが「もはやプログラマーは不要になる」みたいなことを言って業界がざわついたけれども、その現実にはまだ程遠いようだ。
ブラックピット: 2021年を境にして得意なこととそうでないことがあるということですね。ちょうどChatGPTがリリースされた辺りですかね。
上司X: そういうことになりそうだ。2021年辺りにトレーニングで利用されたコードであるかどうかが、コード生成能力のターニングポイントになっているようだ。
ブラックピット: そりゃそうですよねえ。AIがいろいろ知っているとはいえ、さすがに知らないことは知らないってのは当然のことですし。それはソースコードに限らないことかと。ただ、知っていることを組み合わせて新しいことを創造できますから厄介です。
上司X: いや、別に厄介ということはなかろう。ともかく、人間のプログラマーにはコーディング問題を解決する批判的思考があるし、想像力で対処できるところがAIより優位な点だろう。論文の通り、プログラマーが自身の知識をAIに与えて共存することで、明るい未来がやってくるのだろうよ。
ブラックピット(本名非公開)
年齢:36歳(独身)
所属:某企業SE(入社6年目)
昔レーサーに憧れ、夢見ていたが断念した経歴を持つ(中学生の時にゲームセンターのレーシングゲームで全国1位を取り、なんとなく自分ならイケる気がしてしまった)。愛車は黒のスカイライン。憧れはGTR。車とF1観戦が趣味。笑いはもっぱらシュールなネタが好き。
上司X(本名なぜか非公開)
年齢:46歳
所属:某企業システム部長(かなりのITベテラン)
中学生のときに秋葉原のBit-INN(ビットイン)で見たTK-80に魅せられITの世界に入る。以来ITひと筋。もともと車が趣味だったが、ブラックピットの影響で、つい最近F1にはまる。愛車はGTR(でも中古らしい)。人懐っこく、面倒見が良い性格。
Copyright © ITmedia, Inc. All Rights Reserved.