コードが自動生成される未来
はじめに
こんにちは、ドゥ・ハウスのTUです。 弊社の自社サービスであるテンタメの保守開発を担当しています。 今回は"コードが自動生成される未来"について興味、関心を抱き学んだ内容を共有できればと思います。
近年では、人工知能(AI)を使ったコード生成ツールの開発が加速している中、 その中でも鍵を握る技術は機械学習と、高性能な言語生成アルゴリズムとして知られる「GPT-3」。 コードの自動生成やバグの発見などへの活用が期待されていますが、 一体どのようなものなのか。活用事例についても少し触れたいと思います。
GPT-3とは?
GPT-3(Generative Pretrained Transformer)はOpenAI(イーロンマスクも出資した研究所)が開発した言語生成モデル。 WEB上のテキストデータ(570GB分)を元に、次に来る文章の予測を事前学習させたモデル。
例えば 「質問: アメリカの首都は? 答え: 」と入力すると、「ワシントンD.C.」と生成 「日本語: 私の名前はたつやです。 英語: 」と入力すると、「My name is Tatsuya.」
のようにGPT-3が推測し自動生成してくれます。
GPT-3の仕組みのイメージ
出典:https://www.nri.com/jp/knowledge/glossary/lst/alphabet/gpt_3
GPT-3をコードの生成に利用すると?
スイカのような見た目のボタン
↓
出典:https://twitter.com/sharifshameem/status/1282676454690451457?s=20&t=-ICQo5PCx5eoIMkMEIEpoQ
Githubのソースコード × GPT-3
=プログラムを自動生成できる?
Github Copilot
Github Copilotとは?
・Github Copilotとは、オートコンプリートの上位版
・関数名やコメントを書く、またはコードを途中まで書くと、Github Copilotが続きのコードが生成してくれる
・オートコンプリートのように、複数候補から反映したいコードを選べる
Github Copilotでできること
コメントをコードに変換
関数名から中身のコードを推測 コメントにサンプルデータを入れておくと、Github Copilotがデータに合わせて生成されるコードが最適化される
コメントでコードの中身を具体的に指示することも可能
繰り返しの多いコードの自動生成
途中まで例となるコードを書くと、Github Copilotが残りの反復的なコードが生成してくれる
テストの提案
実装したコードに合わせたユニットテストの生成
複数のコードから選択
Github Copilotでは、サジェストされるコードを複数選ぶことが可能
不慣れな言語の開発や、新言語の学習にも
Github Copilotの仕組み
・VSCode上でのみ使用可能(拡張機能)
・GPT-3をベースにしたOpenAI Codexに、公開されたコードやテキストを加えて学習
・Python、JavaScript、TypeScript、Ruby、Go言語に最適化されているが、PHPなどの他のあらゆる言語でも使える
Github Copilotを使う上での注意点
・Github Copilotで生成されるコードは間違っていたり、バグを生む可能性は十分ある(初期バージョンでは43%の確率で不正解) →コードが正しいかどうかの判断は本人が行う必要がある。あくまで Copilot(副操縦士)としての役割
・Copilotを実行したファイルの一部が、 Copilotのサービスに送られる。 送られたデータはモデルのインプットとしては使われず、用途も限定的だが、外部に漏れると困るファイル上での実行(パスワードや APIキーが含まれているなど)は 避けるべき。
・AIで生成されたコードの知的財産権はどうなるのか? 使用にあたりクレジットの表記は必要なく、 Github Copilot上で生成されたコードは実行した開発者に帰属するものと公式HP上では記載されている。 しかし、学習データにはライセンス付きのコードも含まれており、現状では0.1%程 度の確率で学習データのテキストが一字一句そのまま生成されることがある。 Github Copilotが発表されてから、Github上から自身のソースコードを撤去する開発者が現れたり、Github Copilotを使って製品を開発すると訴訟されるリスクがあると主張する声もある。
参考:https://ainow.ai/2021/09/03/257207/
まとめ
・GIthub Copilotのようなコードの自動生成ツールは、今後、システム開発の生産性を爆発的にあげる可能性がある
・Github Copilotで生成されたコードには、生成を実行した開発者本人が責任を持つ
・AIで生成されたコードの知的財産権の取り扱いには注意
・今後のAIの進歩を祈りましょう