開発者の素晴らしい助っ人、GitHub Copilot、君は誰?
開発者の素晴らしい助っ人、GitHub Copilot、君は誰?

開発者の素晴らしい助っ人、GitHub Copilot、君は誰?

작성자
ユミンユミン
카테고리
Dev.Log
작성일
2023년 10월 01일
태그
CS
AI
https://github.com/features/copilot
 
最近、セミナーやカンファレンスに参加すると良くキーワードとして出てきたり、エンジニアに一番話題になっているのがCopilotなのではないかなと思います。
 

Github Copilotとは?

GitHubが2021年にリリースしたサービスで、エンジニアが直接開発したコードをAIが理解し、次の作成コードを自動完成して先に提示してくれるとてもスマートな機能です。AIがとてもスマートに私が次に作成するコードをあらかじめ提示してくれるので、エンジニアは「Tab」ボタン一つでコードを完成させることができます。おかげで、手でタイピングする手間が大幅に減ります。
 
GitHub Copilotは、パブリックリポジトリに表示されるすべての言語でトレーニングされています。 各言語の提案の品質は、その言語のトレーニングデータの量と多様性によって異なる場合があります。たとえば、JavaScriptはパブリックリポジトリでよく表れる言語であり、GitHub Copilotで最もよくサポートされている言語の1つです。パブリックリポジトリであまり代表的でない言語は、正確性や堅牢性が低い提案を生成する可能性があります。
 

さて、具体的に何するやつ?

公式サイトにある例を引用してまとめてみます。
JavaライブラリであるMath.isPrime(int)のテストを作りたいのでIsPrimeTestクラスの中に上のようなコメントを書くと?
 
notion image
 
上のようなテストコードを書いてくれます。時間が長くかかるわけでもなく、ほぼすぐに出てくると考えていいほど速いです。
コメントがなくてもメソッド名だけ見て自動的に作ってくれます。
例えば、isPrimeとメソッド名を書くだけで、素数判定ロジックがすぐに作成されます。
私が今まで書いたコードを分析してコードを作成してくれます。とてもいいですね、本当に。
 

どのようなデータを利用して、どうやってこんなことができるんだろう?

GitHubにあるpublic repositioryにあるコードとインターネットで共有されているコードをOpenAIが開発したGPTモデルであるCodexに学習させた結果だそうです。
 

Copilotを使うとどんなメリットがあるのか?

notion image
 
  1. 仕事にもっと集中できる。
  1. 早くコードを書くことができる。
  1. 困難で大きな問題を解決できる。
  1. 途中で流れが途切れない。
  1. 反復作業の効率が上がる。
赤でマーキングした部分は、個人的により共感できた点です。
 

まとめ、個人的な感想

ポストの最初に書いたように最近、GithubとCyberAgentが主催したGitHub Copilotで変わる開発文化の現実でも、他のカンファレンスに参加してもGithub Copilotが話題になっている気がします。問題状況をコードで解決するのが開発者の主な仕事ですが、これに直接関係するAIツールが、しかも良質のコードを書いてくれるので、開発者の立場からすると、これをどう受け止めればいいのかという悩みがあるようです。
極めて個人的な考えですが、Github Copilotによってコードで与えられた問題を解決するという開発者のアイデンティティが変わることはないと思います。Github Copilotが良質のコードを作成してくれるとしても、製品ごとに要件が全部違うし、どのようなアルゴリズム、フレームワーク、ツールを使って実装するかは開発者次第だと思います。 ただ、タイピングで直接ロジックを実装する時間が減り、与えられた問題をどのように解決するか、Github Copilotが作成したコードを見て要件に合わせて再実装できるか、どのようなAIツールが新しく出てきて、どのように動作するかについての理解と、どのように業務で活用するかについての学習が必要になると思います。

댓글

guest