TECH BLOG
エクスクリエ
エクスクリエ

コードが自動生成される未来

Cover Image for コードが自動生成される未来
目次

    はじめに

    こんにちは、ドゥ・ハウスのTUです。 弊社の自社サービスであるテンタメの保守開発を担当しています。 今回は"コードが自動生成される未来"について興味、関心を抱き学んだ内容を共有できればと思います。

    近年では、人工知能(AI)を使ったコード生成ツールの開発が加速している中、 その中でも鍵を握る技術は機械学習と、高性能な言語生成アルゴリズムとして知られる「GPT-3」。 コードの自動生成やバグの発見などへの活用が期待されていますが、 一体どのようなものなのか。活用事例についても少し触れたいと思います。

    GPT-3とは?

    GPT-3(Generative Pretrained Transformer)はOpenAI(イーロンマスクも出資した研究所)が開発した言語生成モデル。 WEB上のテキストデータ(570GB分)を元に、次に来る文章の予測を事前学習させたモデル。

    例えば 「質問: アメリカの首都は? 答え: 」と入力すると、「ワシントンD.C.」と生成 「日本語: 私の名前はたつやです。 英語: 」と入力すると、「My name is Tatsuya.」

    のようにGPT-3が推測し自動生成してくれます。

    GPT-3の仕組みのイメージ

    gpt3-img1

    gpt3-img2

    出典:https://www.nri.com/jp/knowledge/glossary/lst/alphabet/gpt_3

    GPT-3をコードの生成に利用すると?

    gpt3-img3

    スイカのような見た目のボタン

    gpt3-img3

    gpt3-img4

    出典:https://twitter.com/sharifshameem/status/1282676454690451457?s=20&t=-ICQo5PCx5eoIMkMEIEpoQ

    Githubのソースコード × GPT-3

    =プログラムを自動生成できる?

    Github Copilot

    gpt3-img5

    https://copilot.github.com/

    Github Copilotとは?

    ・Github Copilotとは、オートコンプリートの上位版

    ・関数名やコメントを書く、またはコードを途中まで書くと、Github Copilotが続きのコードが生成してくれる

    ・オートコンプリートのように、複数候補から反映したいコードを選べる

    Github Copilotのコンセプトがわかりやすい動画

    Github Copilotでできること

    コメントをコードに変換

    関数名から中身のコードを推測 コメントにサンプルデータを入れておくと、Github Copilotがデータに合わせて生成されるコードが最適化される

    gpt3-img6

    コメントでコードの中身を具体的に指示することも可能

    gpt3-img7

    繰り返しの多いコードの自動生成

    途中まで例となるコードを書くと、Github Copilotが残りの反復的なコードが生成してくれる

    gpt3-img8

    テストの提案

    実装したコードに合わせたユニットテストの生成

    gpt3-img9

    複数のコードから選択

    Github Copilotでは、サジェストされるコードを複数選ぶことが可能

    gpt3-img10

    不慣れな言語の開発や、新言語の学習にも

    gpt3-img11

    Github Copilotの仕組み

    gpt3-img12

    ・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の進歩を祈りましょう

    私たちは積極的に採用活動をしております。
    https://www.excrie.co.jp/recruit/

    Companies

    エクスクリエ
    クロス・マーケティンググループ
    メタサイト
    クロス・コミュニケーション

    Tags