生成AIアシスタントは
プログラマーの仕事を
どう変えているか
生成AIによるコーディング・アシスタント機能が高機能化し、実際に利用するプログラマーが増えている。AIアシスタントはソフトウエア開発にどれほどの違いをもたらし、業界にどのような影響を与えるのだろうか。 by Will Douglas Heaven2023.12.21
この春、ノースカロライナ州のデューク大学で自身が担当しているコーディングの授業が始まって2週間が経った頃、ノア・ギフト講師は以前渡していた教材を処分するよう生徒たちに告げた。最もポピュラーな入門レベルのプログラミング言語の1つである「Python(パイソン)」を使う代わりに、生徒たちはこれから「Rust(ラスト)」を使うことになる。Rustはより新しく、より強力で、学ぶのがずっと難しいプログラミング言語だ。
25年の経験を持つソフトウェア開発者であるギフト講師は、自身もRustを学んだばかりだった。だが、生徒たちが学習するプログラミング言語を土壇場で変更しても問題はないという自信があった。というのも、生徒たちにはそれぞれ特別な新しい相棒が付くからだ。それは「コパイロット(Copilot)」と呼ばれる人工知能(AI)ツールだった。コパイロットは、オープンAI(OpenAI)の最新の大規模言語モデル、GPT-3.5とGPT-4上に構築されたコンピューター・コード用の最新鋭のオートコンプリート(自動補完)機能である。
コパイロットは、1億人以上のプログラマーが利用するオンライン・ソフトウェア開発プラットフォームを運営する企業、ギットハブ(GitHub)によって作られている。このツールは、ユーザーのすべてのキー入力をモニタリングし、ユーザーがその場でしようとしていることを予測し、そのために使用できるコードスニペット(コードの断片)を次々と提供する。ギットハブの親会社であるマイクロソフトの知人からコパイロットのことを聞いていたギフト講師は、すぐにその可能性を見い出した。
「コパイロットがなければ、私はこれほど早くRustを習得できなかったでしょう」。ギフト講師は言う。「私がレベルアップを図っている間、質問に答えてくれるとても賢いアシスタントが隣にいるという感じです。授業で使い始めるべきなのは明らかでした」。
こう考えているのはギフト講師だけではない。コンピューター科学を学ぶ学生やプログラマーにコパイロットを使っているか尋ねると、今では多くの人が手を挙げる。この記事の執筆のためにインタビューした人たちは全員、このツールの問題点を指摘した人たちでさえも、コパイロットを使っていると答えた。
教育における「チャットGPT(ChatGPT)」と同じように、コパイロットは人々に従来の仕事をこなすための新しい方法を提供することで、職業全体を根底から覆そうとしている。マイクロソフトのアプリケーション開発ソフトウェアである「ビジュアルスタジオ(Visual Studio:コードを書き、デバッグし、デプロイするための業界標準の統合プログラミング・ツールの一つ)」の有料プラグインとしてパッケージ化されたコパイロットは、この技術の最も洗練されたバージョンと言える。
コードを書く人が活用できるツールはほかにもある。メタは8月に、GPT-4のライバルとなる「ラマ2(Llama 2)」をベースにした「コード・ラマ(Code Llama)」という無料のコード生成モデルをリリースした。画像生成モデルである「ステーブル・ディフュージョン(Stable Diffusion)」の開発元であるスタビリティAI(Stability AI)は同じ月に、「ステーブル・コード(StableCode)」を発表した。そしてもちろん、チャットGPTもそうだ。オープンAIは当初から、コードの記述やデバッグを支援するチャットボットとしてチャットGPTを売り込んできた。
メタでコード・ラマの開発チームを率いるガブリエル・シンネーヴは、「機械学習モデルが多くの人々にとって本当に役に立つのはこれが初めてのことです」と話す。「単に特別な関心を惹くものではなく、実際に役立つのものなのです」。
マイクロソフトとグーグルが、世界中で数十億人が使うオフィスソフトウェアに同様の生成モデルを導入しようとしている中(マイクロソフトは、「オフィス365(Office 365)」全体でコパイロットをブランド名として使い始めた)、このようなツールがプログラマーのために厳密に何をするのか、知る価値はある。何十年も続いてきた仕事の基本をどのように変えようとしているのか。プログラマーが、より良いソフトウェアをより多く作る助けになるのだろうか。それとも、知財や著作権をめぐる法廷闘争で行き詰まっていくのだろうか。
コードを量産する
コードを書くということは、表面的には、何らかのプログラミング言語で記述された文や命令をテキストファイルに入力することだ。これは、バイナリの0や1からレベルアップして、コンピューターが実行できるマシン語に翻訳される。実際、プログラマーは検索したり、よくある問題の回避策を調べたり、アルゴリズムをより速く書く方法を探して、オンライン・フォーラムに目を通したりするのに多くの時間を費やしている。そして、事前に書かれた既存のスニペットが再利用され、しばしば、それらがコラージュのように組み合わされた新しいソフトウェアが出来上がる。
しかし、こうした調べ物には時間がかかるため、プログラマーは考えたことをコードに変換するフローから逸脱してしまう、とギットハブのトーマス・ドムケ最高経営責任者(CEO)は言う。「たくさんのタブを開いた状態だと、休暇のことを考えたり、ニュースを読んだりするかもしれません。ようやく必要なテキストをコピーして自分が書いていたコードに戻る頃には20分も経っていて、仕事の流れが失われてしまうのです」。
コパイロットや、コード・アシスタントと呼ばれるこうしたプログラムの背景にある主なアイデアは、プログラマーが必要とする情報を、彼らが書いているコードのすぐそばに配置しようというものだ。このツールは、プログラマーが作業しているファイルのコードとコメント(自然言語で書かれた説明やメモ)、および、リンクされている他のファイルや同じプロジェクト内で編集された他のファイルを追跡して、すべてのテキストをコパイロットの背後にある大規模言語モデルにプロンプトとして送信する(ギットハブは「コーデックス(Codex)」と呼ばれるコパイロットのモデルをオープンAIと共同開発した。コーデックスはプログラム・コード向けに微調整された大規模言語モデルである)。するとコパイロットは、プログラマーが何をしようとしているのかを予測し、それを実行するためのコードを提案する。
コードとコーデックスのやり取りは1秒間に何度も実施され、プログラマーが入力するたびにプロンプトが更新される。プログラマーはいつでも、タブキーを押してコパイロットの提案を受け入れることもできれば、提案を無視して入力を続けることもできる。
コパイロットの提案は受け入れられることが多いようだ。コパイロットの一般公開から1年後となる6月、ギットハブとコンサルティング企業であるキーストーン・ストラテジー(Keystone Strategy)は、約100万人のユーザーを対象とした調査の結果を発表した。ギットハブのユーザーのデータによると、プログラマーは平均して、コパイロットの提案の約30%を受け入れたことがわかった。
「この1年でコパイロットは10億行以上のコードを提案し、開発者たちからOKをもらいました」とドムケCEOは言う。「コンピューターの中で作動しているのは、確率的なオウム返しによって生成されたコードです」。
コパイロットはコーディングの基本スキルに変化をもたらした。チャットGPTやステー …
- 人気の記事ランキング