GitHub Copilot-あなたのAIペアプログラマー

2021.08.11

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

GitHub Copilotとは何ですか

GitHub Copilotは、OpenAIが開発したAIシステムであるCodexを搭載したコードオートコンプリートシステムです。他のコードアシスタントとは異なり、GitHub Copilotはコードに関するより多くのコンテキストを理解し、それに基づいて結果を提供します。コードの文脈をよく理解しているので、docstring、コメント、関数名、または自分で書いたコードからコードを合成することができます。GitHubでは、OpenAIの協力を得て、Copilotをより賢くし、開発者がすぐに使えるような、より安全で効率的なコードを生成することを目指しています。現在は、VSCodeでテクニカルプレビューとして使用可能ですが、近い将来、価格モデルで収益化し、他の様々なIDE でも対応を拡大する予定です。

どうやって使うのか

現在、GitHub CopilotはVSCodeのTechnical Previewとしてのみ利用可能であり、世界中の開発者がテストを行い、より良いものにするための提案を行うことができます。テクニカルプレビューに申し込むには、 GitHub Copilotのサイトにアクセスして、選ばれるまで待ちます。

テクニカルプレビューに選ばれると、VSCode の Copilot の拡張機能へのリンクが共有され、インストールするには GitHub プロファイルを使ってログインする必要があります。インストール後は、コメントやdocstring、関数などを入力すると、コードを自動補完してくれるので、すぐに使い始めることができます。最初のオートコンプリートコードに満足できない場合は、複数のオートコンプリートコードのオプションが用意されています。

Source: https://towardsdatascience.com/some-experiments-using-github-copilot-with-python-90f8065fb72e

その仕組みは

GitHub Copilotは、OpenAIが作成したAIシステムであるCodexを搭載しています。Codexは、GPT-3と似ていますが、コード生成に関する幅広い知識を持っています。Codexは、GitHub上の数百万のオープンソースリポジトリでトレーニングを受けており、その結果、トレーニングを受けた数兆行からコードを生成することができるようになりました。

生成されるコードの品質について

現在のCopilotの主な問題の一つは、常に最良の解決策や最適な答えが得られるとは限らないことですが、新しいコードを学習し続けることで時間とともに改善されていきます。また、非効率的なコードスニペットを、データ構造を用いた効率的なコードスニペットと比較して提案してくるケースもあります。

GitHub Copilotは、新しいプロジェクトには良いと思いますが、既存のコードベースを扱うときには、それほど便利ではないと思います。既存のコードベースでは、既存のコーディングスタイルに従わなければなりませんし、すでに書かれたコードを再利用することもできません。しかし、私はまだGitHub Copilotを使ったことがありません。もし将来的に使う機会があれば、Copilotを使うことの利点と欠点について最新情報を含めたフォローアップ記事を書きたいと思います。

ライセンスについての議論

GitHub Copilotの作成と使用に関わる倫理について、様々な議論がなされています。多くの人が、Copilot から生成されたコードによる著作権侵害を懸念しています。GitHub はライセンスに基づいてリポジトリのトレーニングデータを制限していなかったため、GPL や同様のライセンスのコードでもトレーニングされていました。この点に関する主な懸念は、Copilot がトレーニングされたのと同じビジネスロジックを再生成した場合、誰に責任があるのかとと言うことです。一方で、Copilotが行っていることは、人間がコードベースを調べてコードを理解し、自分で再現することに似ていると指摘する人もいます。これについてはどう思いますかGitHubがライセンスされているコードでAIを訓練したことは倫理的に問題があったのでしょうか。

参考リンク:

  • https://copilot.github.com/
  • https://towardsdatascience.com/some-experiments-using-github-copilot-with-python-90f8065fb72e