目次
はじめに
近年進化が著しい生成系AIには、GPT-3のような文章生成AI、そして今年になって大きな話題となっているDALL-E 2やStable Diffusionのようなテキストから画像を生成するものがあります。こうしたなか、昨年2021年にはコメントからコードを生成するAIが登場し、今年になって急速に普及が進んでいます。そこでこの記事ではコード生成AIの登場から現在までを振り返ることで、その実用性を確かめると同時に今後の進化の方向性も明らかにします。
コード生成AIの誕生
2021年に登場したコード生成AIで代表的なものは、GitHub CopilotとOpenAI Codexです。以下では、これらの概要をまとめます。
GitHubから学習した「GitHub Copilot」
ソースコード共有プラットフォームGitHubを開発・運営するGitHub社は2021年6月29日、GitHub Copilotのテクニカルレビューを開始したことを発表しました。GitHub Copilotの基本的な機能は「計算結果を表示」のようなコメントを自然言語で記述すると、その記述に対応したコードを生成するというものです(※注釈1)。同AIは、言わばソースコードのオートコンプリート機能がさらに進化したものと言えます。
「公開されているソースは主に英語であるため、開発者が提供する自然言語のプロンプトが英語でない、あるいは文法的に正しくない場合、GitHub Copilot はうまく機能しなくなる可能性があります。そのため、英語を話さない人(が使う場合)は、サービスの質が低下する可能性があります。」
GitHub Copilotは、GitHubで一般公開されているソースコードとそのコードに対応するコメントを学習データにして訓練したことで誕生しました。対応プログラミング言語にはPython、JavaScript、TypeScript、Ruby、Go、C#、C++が挙げられます。対応開発環境は、Visual Studio Code、Visual Studio、Neovim、JetBrainsとなっています。
GitHub Copilotはテクニカルレビュー後、2022年6月21日には一般公開されました。同AIを利用するには60日間の無料トライアル後、月額10USドルあるいは年額100USドル課金する必要があります。ただし、学生や人気のあるオープンソースプロジェクトのメンテナは無料で利用できます。さらに2022年9月8日には、GitHub Global Campusの認証を取得した教師向けの無料プランを発表しました。2022年中には、企業向けのプランも発表する予定です。
GitHub Copilotの利用に関して気になるのが、不適切なコードを生成する可能性です。この懸念に関しては、同AI公式ページに掲載されたFAQが答えています。その回答によれば、不適切なコメントをブロックしてコードを生成しないようにするフィルタが実装されているものも、不快な出力が生成される可能性はゼロではない、とのこと。また、生成コードに(電話番号やメールアドレスのような)個人情報が含まれているように見えることがあるが、そうした個人情報は架空のものである、とも回答しています。ただし、「十分に努力すれば」意図的に実在の個人情報を生成することは可能だとも答えています。
なおGitHub Copilot公式ページには、以上のほかにもさまざまなFAQが掲載されています。
GitHub Copilotの心臓部「OpenAI Codex」
GitHub Copilotの発表から1月あまりが経過した2021年8月10日、OpenAIはコード生成AI「OpenAI Codex」を発表しました。同AIはGitHub Copilotにおけるコード生成を司るモデルであり、OpenAIがGitHub社と共同開発したものを一般公開したものです。
OpenAI Codexは文章生成AIのGPT-3をコード生成向けに改造したもので、Pythonのコード生成をもっとも得意としており、そのほかにもJavaScript、Go、Perl、PHP、Ruby、Swift、TypeScript、さらにはShellなどの10以上のプログラミング言語に対応しています。
OpenAI CodexがPythonのコードを生成する場合に使用するメモリは14KBであり、4KBしかメモリを使わないGPT-3より3倍以上の情報を生成時に処理しています。
以上のようなOpenAI CodexとGitHub Copilotの大きな違いは、前者はAPIとしても提供されているところです。提供されたAPIを使えば、Codexを使ったアプリを開発できるのです(OpenAI Codex活用アプリについては後述)。
OpenAI Codexの利用に際しては、トークンと呼ばれる自然言語処理に関する単位とモデル性能に応じた従量制プランに契約することになります。1トークンはアルファベット約4文字、0.75ワードに相当し、契約可能なモデルとしてパラメータが少ない順にエイダ、バベッジ、キュリー、ダヴィンチがあります。こうした契約内容の詳細は、同AIの価格ページを参照してください。
コード生成AIの普及
OpenAI Codexの活用事例は、現在ではGitHub Copilotのほかにも多数あります。また、OpenAIとパートナーシップを締結しているMicrosoftは、独自にコード生成AIを開発・提供しています。さらには最近の大規模言語モデルは、機能のひとつとしてコード生成を実行できるものがあります。以下では、こうしたコード生成AIの普及状況をまとめます。
OpenAI Codexを活用したアプリ
OpenAIが2022年5月24日に公開したブログ記事によると、OpenAI CodexのAPIを使ったアプリはすでに70種類以上あります。
例えばPygmaは、コラボレーションインターフェースデザインツールのFigmaでデザインした画面をコードに変換するアプリです。変換できるコードはHTML、CSS、Reactであり、近日中にオプション機能を追加する予定です。
Pygmaを使えば、コーディング未経験のデザイナーであっても、(複雑であったり特殊なものであったりしなければ)意図したデザインの通りに動作するアプリを開発できるのです。
プログラミングプラットフォームのReplitには、任意のコードを選択すると、そのコードに関する自然言語で書かれた説明を表示する機能「Explain Code」が実装されています。この機能は、コメントを入力するとコードが生成される通常のコード生成AIの処理を逆方向(コードからコメントへの対応)に実行していると言えます。
Replitの利用プランは利用ストレージに制限がある無料プラン、従量制のCycles、個人開発者向けのHackerがあるほか、月額15ドルの企業向けプランもあります。
Machinetは、Javaコードのユニットテストを生成するツールです。テストしたいJavaメソッドを選択してクリックすれば、そのメソッドに関するユニットテストが生成されます。テスト実行時に変数等の入力が必要な場合には、同ツールが適切な値を提案します。
Machinetの利用プランには機能が制限された無料プランのほか、月額15USドルの個人プランと月額150USドルの企業向けビジネスプランがあります。
Microsoftにおけるコード生成AI開発
MicrosoftはOpenAIとパートナーシップ関係を生かして、GPT-3をベースにした独自のコード生成AIを開発しています。
2021年5月26日には、Microsoft開発のローコードアプリ開発プラットフォームMicrosoft Power AppsにGPT-3ベースのコード生成機能を実装しました。この機能を使うと、例えば「名前が “Kids” で始まる商品を探す」と音声入力すると、入力内容に対応したコードが生成されます。なお、生成されるコードはPowerプラットフォームで利用可能なプログラミング言語Microsoft Power Fxです。
2022年5月24日には、Power Apps express designを発表しました。同機能は、紙などに書かれたアプリのデザインをスマホなどで撮影後、その撮影画像を画像認識してアプリデザインに対応したコードを提案するというものです。
express designへの入力方法は紙に手書きされたデザイン図のほか、PowerPoint、PDF、既存アプリのスクリーンショット、さらにはFigmaで作成されたデザイン図にも対応しています。同機能は、前述のPygmaをさらに拡張したものと言えます。
大規模言語モデルのコード生成機能
OpenAI CodexがGPT-3をベースに開発されていることから、GPT-3のような大規模言語モデルをベースにすればコード生成AIを開発できると考えられます。近年ではGPT-3に匹敵する言語モデルが多数存在するので、こうしたアイデアは実行されて当然と言えます。
テック系メディアAnalytics India Magazineは2021年7月12日、GPT-3に匹敵するオープンソースの大規模言語モデルEleutherAIの最新モデルGPT-JとGPT-3の性能を比較した記事を公開しました。比較実験を行った結果、コード生成に限りGPT-JがGPT-3を凌駕したのでした。
Googleが2022年4月に発表したPaLM(※注釈2)は、コメントに対応したコードの生成のほか、任意のプログラミング言語のほかのそれへの移植、コンパイルエラーの修正などコーディングに関する多数のタスクを実行できます。同モデルがこうしたマルチタスクを実行できるのは、マルチタスク言語モデルを実現する設計思想Pathwaysを採用しているからなのです。
コード生成AIは役に立つのか
以上のようにコード生成AIは多様化と普及の一途をたどっていますが、実際のところ、これらのAIは開発者の負担を軽減して支援してくれるのでしょうか。2022年9月7日に公開されたGitHub公式ブログ記事では、こうした疑問に答えるために実施した調査の結果が報告されています。同社はGitHub Copilotリリース後、2,000人以上の開発者を対象として同アプリに関するアンケート調査を実施しました。
アンケート調査では、以下のグラフで示されたようなGitHub Copilotを使用したことで「より生産的に感じた」か、「より早く仕事を完了した」かといった質問に回答してもらいました。その結果、88%の開発者が「より生産的に感じた」と回答し、同じく88%が「より早く仕事を完了した」と答えました。
注目すべきは「反復的な仕事をより速くできた」という回答が96%、「反復的な仕事をするのに要する精神的な努力が減った」と87%が答えたところです。この回答から反復的な仕事をコード生成AIに分担してもらったことで労力を減らす一方で、減らすことで生まれた労力をより難易度の高い仕事の解決に割り当てた結果として、仕事全体の生産性が向上したと推測できます。
GitHubはアンケート調査のほかにも、GitHub Copilotの使用有無に関する比較実験も実施しました。この実験は、Javaスクリプトの開発経験のある開発者95人にJavaスクリプトを作成する業務を実行してもらう、というものでした。95人のうち45人にはGitHub Copilotを使用してもらい、残りの50人には同アプリを使用しないで業務を行ってもらいました。
以上の実験の結果、GitHub Copilotを使用したグループは78%が業務を正しく完了させたのに対して、未使用グループのタスク完了率は70%でした。さらに同アプリ使用グループがタスクを完了させるまでに要した時間は平均して1時間11分、対して未使用グループは2時間41分だったので、同アプリを使用することで業務所要時間を約53%削減できたのでした。
アンケート調査と比較実験の両方から、GitHub Copilotは開発者を支援することで彼らにより大きな達成感と満足感をもたらす、と結論づけられます。
コード生成AIの進化
以上に紹介したコード生成AIの基本機能はコメントからコードを生成するものであり、文章から問題の構造を理解して解決に必要なアルゴリズムを特定するようなことはできません。こうしたなかDeepMindは2022年2月2日、文章問題から解決に必要なコードを生成するAI「AlphaCode」を発表しました。
AlphaCodeは、競技プログラミングCodeforcesで出題される問題を解決できるように開発されました。同競技は文章問題を解決するコードを考案するスキルを競うもので、参加者はそのスキルに応じてレーティングされます。レーティングは過去問の回答を暗記したり、関連するアルゴリズムをしらみつぶしに試したりするような単純なアプローチでは上がらないようになっています。実際に同AIが回答した文章問題には、以下のようなものがありました。
AlphaCodeが取り組んだ文章問題の一例
|
以上のようなCodeforcesの10のコンテストに出場するシミュレーションをAlphaCodeで実行したところ、上位54%のレーティングを獲得しました。トップ競技者には程遠いものも、平均的な人間と同等のレーティングを証明できたわけです。
テック系メディア「TeckTalks」が2022年2月7日に公開した記事では、AlphaCodeの開発過程が解説されています。その記事によると、同AIには2段階の訓練が実施されました。1段階目の訓練は、GitHubから抽出した715ギガバイトのコードを使ったものです。具体的には抽出したコードの一部をマスクしたうえで、マスクされた箇所を予測するように訓練しました。
2段階目の訓練は、DeepMind研究チームが独自に作成した学習データセット「CodeContests」が使われました。このデータセットはCodeforcesで出題された問題文とその解答コード、各種競技プログラミングの過去問を集めたDescription2Code、そしてIBMが2021年5月に発表したCodeNetから構成されています。このデータセットによって、AlphaCodeは文章問題とその問題を解決するコードの対応関係を学習したのです。
2段階の学習を経たAlphaCodeは、ひとつの文章問題につき数千個の解決コード候補を生成できます。これらの候補を問題文から生成したテスト項目にもとづいて絞り込みます。こうしたフィルタリングを行うことで、最終的な正解コードを特定するのです。
まとめ
以上にまとめたようにコード生成AIは、最近1年あまりで急速に進化と普及を遂げました。この記事では主に英語圏における事例を紹介しましたが、2022年10月3日には日本語で仕様を入力すると、その仕様を満たすコードを生成するサービス「AI Programmer(ベータ版)」の提供が始まり、日本語でもコード生成ができる環境が整いつつあります。
もっとも、コード生成AIが進化することで増大するリスクが存在します。AlphaCodeを論じた論文によると、そうしたリスクには「自己増強型AI」の誕生が挙げられます。このAIは、自分自身のソースコードの上書きを繰り返すことでその性能を強化するというものです。こうしたAIには人間の管理を回避するように自己を書き換えて、管理不能に陥る可能性があります。それゆえ、コード生成AIを長期的に研究開発するにあたっては、自己増強型AIを誕生させないような何らかの倫理的制約を設ける必要があります。
長期的なリスクが存在するものも、コード生成AIの研究開発は今後も進むことでしょう。そして、こうしたAIの進化と普及によって、プログラミング言語の知識がなくても高度なアプリが開発できる「高度ノーコードアプリ開発」が可能な未来が実現するのかも知れません。
記事執筆:吉本 幸記(AINOW翻訳記事担当)
編集:おざけん