プログラミングの自動化を支援するAIツールには、「人間のバグも学ぶ」という欠点が潜んでいる

プログラミングをサポートしてくれる人工知能(A))ツールが増えている。こうしたツールはコーディング作業の効率を高めてくれる一方で、AIならではのミスによってセキュリティの問題を引き起こす可能性もはらんでいる。

TEXT BY WILL KNIGHTTRANSLATION BY MITSUKO SAEKI

WIRED(US)

いまどきのソフトウェア開発者のなかには、人工知能(AI)の助けを借りてコードを書いている人々がいる。そうした開発者は、AIにも人間と同じような欠点があることに気づき始めているという。

マイクロソフト傘下でソースコードのホスティングやコラボレーションの各種ツールを提供しているGitHubは、AIを使ったプログラマー支援ツールのベータ版を2021年6月に公開した。コマンドやデータベース検索、API(アプリケーション・プログラミング・インターフェース)へのリクエストなどをタイピングし始めると、ユーザーの意向を察して残りの部分を書いてくれる「Copilot」というプログラムだ。

コードの書き方を変える技術

バイオテクノロジー企業に勤めるデータサイエンティストで、Copilotのテストに参加したアレックス・ナカは、このプログラムの有用性を高く評価し、自身の仕事のやり方が変わったと語る。「このプログラムのおかげで、画面をブラウザーに切り替えてAPIドキュメントを参照したり、プログラミング技術に関するQ&Aサイトでサンプルを探したりする時間が減りました」と、彼は言う。「自分の仕事がコードを書くことから、コードを吟味することへと変わったように感じます」

ところが、ナカは自分のコードにさまざまなかたちでエラーが紛れ込むようになったことにも気づいた。「プログラムの提案をそのまま受け入れていると、ちょっとしたエラーを見逃してしまうことがあるのです」と、彼は説明する。「エラーを拾い出すのにかなり苦労することもあります。おそらく自分が犯しがちな間違いとは毛色の違うエラーが多いからでしょう」

AIが不完全なコードをつくってしまう危険性は、意外に高いのかもしれない。このほどCopilotの生成したコードをニューヨーク大学の研究チームが分析したところ、セキュリティが重要となる特定のタスクにおいて、約40%の確率でコードにセキュリティ上の欠陥があったという。

この割合について「予想していたよりもやや大きい」のだと、ニューヨーク大学教授でこの分析に関わったブレンダン・ドラン=ギャビットは指摘する。「とはいえ、Copilotに施された訓練は実は正しいコードを書くためのものではありませんでした。与えられたプロンプトに沿ったテキストを生成するためのものだったのです」