2015年7月27日以前の記事
検索
連載

「プログラミング言語」は今後不要になるのか ソフトウェア開発者の業務、半分はAIで自動化可能に

言語生成AIが持つプログラミングコードの生成能力は驚異的なものです。ソフトウェア開発における生成AIの導入は、3つの形態に分けられます。

Share
Tweet
LINE
Hatena
-

この記事は、『生成AIで世界はこう変わる』(今井翔太著、SBクリエイティブ)に掲載された内容に、編集を加えて転載したものです(無断転載禁止)。


 ソフトウェア開発における生成AIは、私自身が積極的に利用していることもあり、定量的な研究成果に加え、当事者の生の声もお伝えしたいと思います。この部分に関しては主観的な記述も多くなりますが、その点はご留意ください。

 「ChatGPT以前のソフトウェア開発は石器時代だった」とは、ある開発者の言葉です。言語生成AIが持つプログラミングコードの生成能力は驚異的なものです。ChatGPT登場当日、私が最も驚き、「これは本当にすごい」と確信したきっかけは、このプログラミングコードの生成能力を目の当たりにしたことでした。


(写真はイメージ、ゲッティイメージズより)

 ここからの話は、生成AIの導入が最も良い方向に作用した場合にはこれほどの効果がある、という事例として参考にしていただければと思います。

ソフトウェア開発の生成AI活用 3つの形態とは?

 ソフトウェア開発における生成AIの導入は、以下の3つの形態に分けられるでしょう。

(1)逐次的にコードの続きを提案してくれるシステム

(2)対話的にコードを生成してくれるシステム

(3)指示を出すと実行結果を含め、全部のコードを生成してくれるシステム

 (1)は、Microsoft社傘下のGitHub社というプログラミングコード共有システムの企業が開発した、プログラミング支援ツール「GitHub Copilot」というものが該当します。

 図3-7は、GitHub Copilotを用いて私が作成したプログラムコードです。とはいえ、実際に書いたのは「def」の部分までであり、続きから「return Q」までは全てCopilotに搭載された生成AIが提案しています。この提案を受け入れると、提案内容がそのまま書き込まれますし、提案を無視して自分で続きを書くこともできます。


図3-7 「Copilot」で自動生成されたコード(『生成AIで世界はこう変わる』より、以下同)

 (2)はいわゆるChatGPTのような対話的生成AIシステムです。プログラミングに関する自然言語のプロンプトを入力してコードを生成、ユーザー側でコードを実行して、そのフィードバックをユーザーが「エラーが出た」などと入力し、再びコード生成、実行と繰り返すような使用を想定しています。

 (3)のレベルまでできる生成AIシステムの例はまだあまりありませんが、OpenAI社が2023年7月に公開したChatGPTのプラグイン「Advanced Data Analysis」が該当します。

開発者の仕事、半分は生成AIで自動化

 (1)については、GitHub Copilotがプログラマーの生産性をどれだけ向上させたかに関して、長期にわたって調査した報告と研究論文があります。2021年のテクニカルレビュー期間から、GitHub社は定期的にCopilotの使用状況に関する統計データを発表していますが、ここでは2023年前半に公開されたデータを参照します。

 Copilotユーザーが書いたプログラムは、その約半分(46%)がAIの提案をそのまま受け入れたものであるという結果が出ています。つまりCopilotの導入により、開発者の仕事のほぼ半分が自動化されたことになります。この割合はプログラミング言語によって異なりますが、Javaの開発に関しては60%を超えており、もはや人間よりもCopilotが書いたコードの割合が高いという驚異的な結果になっています。

 図3-8は、生産性に関わる要素について、開発者視点の評価を示しています。ほとんどの項目で7割以上の開発者から高い評価を得ています。


図3-8 「Copilot」による生産性向上についての開発者視点の評価(『生成AIで世界はこう変わる』より)

 また、GitHubがMicrosoft社やMIT(マサチューセッツ工科大学)と共同で行った研究では、開発者をCopilotを使う/使わないの2つのグループに分け、あるプログラミング言語を使ってサーバープログラムを開発するというタスクを行わせました。この結果、Copilotを使わなかったグループの開発者が平均161分でタスクを完了させていたのに対し、Copilotを使ったユーザーはその半分以下の平均71分でタスクを完了させたという結果が出ています(図3-9)。つまりCopilotを使うことで、生産性が2倍以上アップしていることになります。


図3-9 「Copilot」使用の有無による開発者の生産性の比較

プログラミング言語を使わなくてもプログラミングが可能に?

 ChatGPT登場以降は、ChatGPTに「ブラウザで遊べるブロック崩しゲームのコードを書いてください」といったプロンプトを入力し、コードを出力させる開発者が増えています。Copilotと異なり、人間の自然言語の要求に対し、その要求を満たすコードをまとめて書いてくれます。

 自然言語を使うという性質から、まったくのプログラミング初心者でもある程度の作業が可能な使い方です。「これからの主要なプログラミング言語は自然言語になり、誰でもできるようになるだろう」と言う人も存在します。

 対話形式という性質を利用すれば、エラーが出た場合は修正を求めることができ、コードが足りない場合は続きを要求することもできます。また、ChatGPTの高速な読解力と広範な知識を生かして、単なるコードの生成以外にも「他人のコードの読解」「エラー箇所の指摘」「計算効率が高いコードへの変換」「別のプログラミング言語への変換」といった用途でも使用できます。

 これらは従来、人間の開発者がどれだけ知識を持っていても、人間の脳の処理能力の限界から、どうしても時間がかかる作業でした。しかし、ChatGPTは数秒でこなすことができます。

 また、2023年7月に実装された「Advanced Data Analysis」にいたっては、実装したいものの要求とデータを渡せば、プログラムの実行結果も含めて必要な全ての作業を自動でやってくれます。

 実際にどれくらい生産性が上がったのか、定量的に表すのは難しいのですが、どれだけ低く見積もっても2倍以上、5倍、10倍という数字でも納得できるレベルです。開発者を100人、1000人と雇っている企業であれば、全体としての恩恵はすさまじいものになるでしょう。

Copyright © ITmedia, Inc. All Rights Reserved.

ページトップに戻る