AI技術で進化するコーディングツール
2022-05-27
azblob://2022/11/11/eyecatch/2022-05-26-msbuild-sessions-codex-000.jpg

AI 開発ツールの未来 (日本) (https://mybuild.microsoft.com/en-US/sessions/36c4c2a2-75bd-43da-ad86-61f1f45ae876) Microsoft Buildセッションの要約と紹介された技術について、主観多めでまとめます。

要約

開発者のコーディングツールはAI技術(自然言語処理)の発展によって劇的に進化しています。
コーディングの自動化、自然言語→コードへの変換、チャットボットによるアシスタント機能などが実現し、コーディングにかかる時間が短縮されますよ。

Codexとは

Codexとは 、自然言語をプログラミングコードに変換する言語モデルです。OpenAIが開発しています。 (https://openai.com/blog/openai-codex/)

Githubで公開されているプログラミングコード数十億行を訓練データとしてGPT-3言語モデルをチューニングしており、プログラミングコード⇔自然言語の変換に特化したモデルとなっています。

このCodexの登場によって、私たちのコーディング事情は大きく変化していくそうです。

- 自然言語:日本語、英語のような人が日常で扱う言語
- GPT-3:まるで人間が書いたかのような文章を自動生成できる言語モデル(自然言語処理の最先端技術!すごい!)

CodexはPythonの処理を最も得意としていますが、JavaScript、Go、Perl、PHP、Ruby、Swift、TypeScriptなどを含む12以上の言語に対応しているようです。

それでは、Codexが私たちに与えてくれる恩恵を紹介していきます。

GitHub Copilotによるコーディングの自動化

「AIが勝手にコードを書いてくれる!」と巷で話題のGitHub CopilotはこのCodexをベースに開発されています。
関数名やコメントを入力するだけで、それに続くコードを自動生成してくれるというものです。

OpenAI公式サイトから引用:https://copilot.github.com/

公式サイト (https://copilot.github.com/) の使用例では、関数を宣言しただけで中身のコードが自動生成されています。

生成されるコードは常に最良のものが得られるとは限りませんが、高速なコーディングを実現するための頼れる相棒となってくれることでしょう。

自然言語からコードへの変換

セッションでは、自然言語を入力としてモデリングソフトを操作するコードを生成し、
オブジェクトを生成したり、マテリアルやモーションを付与したりする例を実演していました。

さらに、ゲーム(マインクラフト)のCPUキャラクターをチャットのみを用いて指示を出すといった応用例なども紹介されていました。

オブジェクトの追加処理を自然言語で入力
引用:https://mybuild.microsoft.com/en-US/sessions/36c4c2a2-75bd-43da-ad86-61…
コードが生成されオブジェクトが追加される
引用:https://mybuild.microsoft.com/en-US/sessions/36c4c2a2-75bd-43da-ad86-61…

チャットボットによるWeb上のコードサンプルの検索

セッションでは、チャットボットと対話し、実装したい処理のコードサンプルをネット上から検索してもらう例を実演していました。

引用:https://mybuild.microsoft.com/en-US/sessions/36c4c2a2-75bd-43da-ad86-61…

また、コードの検索のほかに、用語の検索や楽曲の検索などにも対応しているようです。

引用:https://mybuild.microsoft.com/en-US/sessions/36c4c2a2-75bd-43da-ad86-61…

GitHub Copilot、Codexの使用方法

現在GitHub CopilotとCodex(Azure OpenAI)は一部のユーザーのみが使用できる状態であり、全体には公開されていません。
使用するためには、
GitHub Copilotは公式サイト (https://copilot.github.com/)
CodexはAzure OpenAI Service (https://docs.microsoft.com/ja-jp/azure/cognitive-services/openai/overview)
から申請する必要があります。

おまけ

それでは、超絶強力なGPT-3の世界を体感するためにOpenAIのチャットボットで遊んでみましょう。(唐突)

最先端の自然言語処理技術に触れてみてください。

OpenAI Examplesのこちら (https://beta.openai.com/examples/default-chat) からチャットボットにアクセスできます。

早速話しかけてみると、物腰柔らかに返事をしてくれました。

好きなプログラミング言語について聞いてみると、「Pythonでのプログラミングは、とても簡潔で読みやすいので大好きです。」と理由まで添えて応えてくれます。まるで本物の人間と対話しているかのような錯覚に陥りますね。

翻訳: Pythonでのプログラミングは、とても簡潔で読みやすいので大好きです。

次は筆者である私 Rento Yoshihara をご存じか聞いてみます。

翻訳:はい、吉原蓮人を知っています。 彼は、いくつかの■人に関与したことで終身刑を宣告された日本の犯罪者です。

わァ……なかなか詳しくご存じのようですね。。ユーモアなのか…?学習したデータに似た名前の人物が居たのでしょうか…

最後にFIXERについて聞いてみると正解に近い回答が得られました。モデルの訓練に使われたデータだけでなく、Web上から情報を獲得してくる機能も備わっているように見えますね。

翻訳:はい、私はFIXERを知っています。 彼らはコンピュータセキュリティを専門とする日本の会社です。

おまけ2

さらに、Create study notes (https://beta.openai.com/examples/default-study-notes) では、公開されている論文に基づいた回答が得られます。(多分)

対話の例をいくつか紹介します。

翻訳:人々は異なる意見を持っているので、この質問に対する答えは1つではありません。
猫は自立しているのでかわいいと思う人もいれば、遊び心のある性格でかわいいと思う人もいます。
さらに、猫の外見が魅力的だと感じる人もいます。
翻訳: 鳥を抑止する最も効果的な方法は、鳥の種類や特定の状況によって異なるため、
この質問に対する万能の答えはありません。 ただし、鳥を抑止する一般的な方法には、
視覚的抑止力(かかしや反射テープなど)、聴覚的抑止力(大きな音や超音波装置など)、
物理的障壁(網や柵など)の使用があります。
翻訳:この文脈で「より良い」とは何を意味するのか明確な定義がないため、
これは答えるのが難しい質問です。人工知能は、人間よりも迅速かつ効率的に大量のデータを処理できるため、
人間よりも優れていると考える人もいるかもしれません。しかし、他の人は、人工知能は創造的に考えたり、
人間に共感したりする能力を欠いているため、まだ人間よりも優れているとは思わないかもしれません。
翻訳:AIと人間のどちらが優れているかについて明確な答えはありません。手元のタスクによって異なります。
たとえば、数値を追加するなどの単純なタスクを実行する必要がある場合、電卓は人間よりも優れています。
ただし、紙を書いたり問題を解決したりするなど、より複雑なことをする必要がある場合は、機械よりも人間の方が優れています。
  
翻訳:この場合、機械は人間よりも速く正確に計算できるため、AIは人間よりも優れています。

凄い通り越して怖…

いつかGPT-3がオープンソースで公開されたら私も遊んでみたいです。そのためにも強いPC買わないと…

まとめ

Microsoft Buildセッションの要約と、紹介されていた技術についてまとめました。

これらの技術が一般に普及すればコーディングへの意識も変わっていきそうです。夢が膨らみますね。