プログラミングや開発でのAI活用
AI研究 / 開発の進歩は凄まじいものです。
日進月歩という言葉のとおり、毎日、研究成果が発表され、新しい技術の開発が進んでいます。
AIが囲碁やゲームのプロプレーヤーを破ったことでAIの進歩を実感した人は多いのではないでしょうか。
またタンパク質構造予測や、イメージの生成など様々な分野での驚異的なパフォーマンスから、AIの進歩を感じている人も多いと思います。
そんな研究開発が進んでいるAIからは、プログラミングやWeb開発、ソフトウェア開発などに活用できそうなツールや技術が出てきています。
今日は、そのいくつかを紹介します。
コード補完
プログラミングの際には、様々なエディタや統合開発環境(IDE)が使われます。
これらのツールでは、コード補完を使用できることが多いです。
コード補完機能というのは、文字を途中までタイピングしたときに、続く文字列を予想して入力の提案をしてくれるものです。
コード補完を使うことで、
- プログラミングの効率化
- 繰り返しの文字入力が減ることからタイプミスの削減
が実現できます。
このコード補完機能に、AI技術が活用されています。
ここでは、コード補完機能を持つサービス
- Codota
- IntelliCode
- Kite
- Tabnine
を紹介します。
Codota
Codotaは、AI技術をベースとしたコード補完やその他コードサポートの機能を備えているツールです。
- Eclipse
- Emacs
- IntelliJ IDEA
- PyCharm
- Sublime Text
- Visual Studio Code
- Vim
といった主要なエディタやIDEのプラグインとして導入することができます。
Codotaがサポートしているプログラミング言語は、
- Java
- JavaScript
- TypeScript
- Python
- PHP
- Go
- Ruby
- C / C++
- Rust
などです。
Codotaは、
Write Less.
Code More.
と表現しているように充実したコード補完機能から、人間が直接タイピングする量を減らすことを目指しています。
コード補完機能だけでなく、
JavaとJavaScriptのコードサンプルを参照することもできます。
IntelliCode
IntelliCodeは、Microsoftが提供しているコーディング支援ツールです。
Microsoftは、2019年にAI技術を活用することで、コード補完機能の及ぶ範囲を行全体に拡大したことを発表しました。
IntelliCodeは、同じくMicrosoftが提供しているVisual StudioやVisual Studio Codeへのプラグインとして使用できます。
IntelliSenseのAIサポート補完機能を使用できるプログラミング言語は、
- Visual Studio → C#、C++、XAML、JavaScript、TypeScript、Visual Basic
- Visual Studio Code → Java、JavaScript、TypeScript、Python、SQL
ということです。
Kite
Kiteは、AIによるコード補完機能を備えたコーディング支援ツールです。
- Visual Studio Code
- Vim
などの主要なエディタ、IDEに加えJupyter LabやSpyderといったPythonで使用されることの多いIDEへのプラグインに対応しています。
サポートしているプログラミング言語は、
- JavaScript
- Typescript
- Kotlin
- Python
- Scala
などです。
KotlinやScalaなどをサポートしているのが印象的です。
有料のプランにはなりますが、Pythonについては、単純なコード補完だけでなく、複数行に渡るコード補完機能が備わっています。この機能はディープラーニングにより実現されているということです。
Tabnine
Tabnineはコード補完機能を備えるコーディング支援ツールです。
Tabnineもこれまでのコーディング支援ツールと同様に、Visual Studio Codeといった主要エディタへのプラグインが可能です。
PythonやJavaなどの主要言語に対応しています。
Tabnineには、Deep Tabnineという機能があります。
この機能は、GitHub上の大量のコードをディープラーニングで学習して実装されており、その結果PythonやC++、Haskellなどのコード補完機能をさらに強力にしたということです。
その他の技術
コード補完を始めとするコーディング支援ツールの領域以外でも、プログラミングや開発に役立ちそうなAIの技術は発表されています。
TransCoder
TransCoderは、Facebookが開発したコード変換技術です。
ディープラーニングを用いて、Java、Python、C++の3言語間のトランスコンパイラを作り出したということです。
トランスコンパイラはソース・トゥ・ソースコンパイラとも呼ばれ、あるプログラミング言語から別のプログラミング言語のコードを作り出す仕組みです。トランスコンパイラは、古くから開発されてきました。
- C / C++のトランスコンパイラ → Emscripten
- JavaScriptのトランスコンパイラ → Babel、TypeScript
などが知られてます。
2020年に発表されたTransCoderでは、Java、Python、C++の3言語間のトランスコンパイラとしての性能が、既存のトランスコンパイラを上回るものであったため、今後の活用が期待されています。
GPT-3
GPT-3は、AI研究開発の組織として世界的に知られているOpenAIが2020年に発表した言語モデルです。言語処理の色々な領域で人間に迫る性能を発揮しています。
GPT-3は、ブログ記事作成を始めとする言語生成の領域で大きな衝撃を与えました。
まるで人間が書いたかのような記事を生成する能力、
を読者が理解するにつれ、GPT-3の持つポテンシャルは広く認知されるようになっています。
GPT-3は発表以来、様々な反響があり、一見すると言語生成と関係がないと思われる分野についても同様です。
プログラミングやWeb開発などの場面に、今後活用できる可能性のあるGPT-3の利用方法が提案されています。
- 自然言語(英語) → ToDoリストを作成(Reactのコード生成)
- 自然言語(英語) → Webサイトのプロトタイプを作成(WebサイトデザインツールのFigma経由でサイトを生成)
- 自然言語(英語) → JSXコード生成
- 自然言語(英語) → SQL生成
などの例が報告されています。
OpenAIの提供するAPIについては、2021年1月時点で、ウェイティングリストへの申請は可能です。
GPT-3には、
- デモとして示されている例はチェリーピッキングされている可能性がある
- ジェンダー / 人種差別などへの十分な対策
- 物理的な常識を問う問題を扱うのが苦手
など克服すべき箇所があるとされています。
チェリーピッキングというのは、多くの結果から自分にとって都合の良いものだけを抜き取って、対外的に示すことです。GPT-3のいくつかの実験では、パフォーマンスに優れた結果を選んでいると言っているものもあり、チェリーピッキングに言及されていない他の事例についても、同様にGPT-3の結果のパフォーマンスにばらつきがあることが予想されます。
また、GPT-3モデルは、「チーズを冷蔵庫に入れたら、溶けるか?」というような物理的な常識が試される問題を扱うのが苦手であることが、論文で示されています。
コーディング支援ツールIntelliCodeのAI補助機能は、GPT-3の前身のGPT-2モデルを参考に開発が行われたということです。
また、TabnineのDeep Tabnine機能もGPT-2をベースとしています。
GPT-2からさらに進化したGPT-3は、メリットとデメリットを考慮しながら、今後プログラミングや開発などの場面でも利用が進むかもしれません。
技術やツールをキャッチアップして活用
AI関連の技術は、日々研究開発が続き、公開、活用されています。
2021年1月に、OpenAIから、
という2つの新技術が公表されました。
これらは、GPT-3を応用して、自然言語と写真やイラストなどのイメージを結びつける技術です。
DALL·Eの記事のページでは、
- 自然言語(英語) → 様々な色や質感の家具を生成
- 自然言語(英語) → 色々な角度から見た動物の写真生成
などのサンプルを見ることができます。
言語モデルのGPT-2が、コーディング支援ツールのIntelliCode、TabnineのAI補助機能に貢献したように、GPT-3やCLIP、DALL·Eなどは今後様々なツールに応用されていくかもしれません。
新しい技術やツールは、その強みや限界を理解しつつ、うまくプログラミング学習や開発に活用していきたいですね!
コメント