はじめに
2023年6月26日に開催された「VSCode Meetup」にオンライン参加しました。
この記事はその時のログとなります。
アーカイブはこちら
今回の議題
今回の議題は注目拡張機能の「GitHub Copilot」です。
GitHubの中の人(@yuhattor さん)を招かれ、お話をお聞きしました。
GitHub Copilot
基本的な機能について
開発者に大きなアドバンテージを提供してくれます。
- 開発者の生産性向上
- イノベーションの加速
- スキルギャップを埋める
- スキルギャップとはジュニアエンジニアとシニアエンジニアのアウトプットするコードの質のことです。GitHub Copilotを使用すると最初の段階である程度の質を担保したコードを提案してくれるため、コードの質の均質化が図られます。
プロジェクトの文脈に即したコードを提案してくれます。
- コメントをコードに変換
- 繰り返しコードを補完
- 代替手段の提案
内部的な処理について
GitHub CopilotではChatGPTを使用しており、使用している言語モデルについてはLLM Modelを使用しているそうです。
内部でこのモデルから返された応答を処理して適切にコードとして使用できるものを生成するロジックが組まれおり、その際にライセンス汚染などについても考慮されているそうです。
コードの著作権について
GitHub Copilotで生成されたコードの著作権はGitHub Copilotの使用者になります。
GitHub CopilotXについて
GitHubではGitHub Nextと称してGitHub Copilotの進化を取り組んでいます。
https://github.com/features/preview/copilot-x
開発中の機能としては以下の通りです。
- Chat: VSCodeなどのエディタ上でスラッシュコマンドで色々なアクションを呼び出せる。
- Pull Request: PRの作成の際のタイトルや内容を自動で生成する。
- Docs: GitHub Docsなどでドキュメントを作成する際に補助をしてくれる。
- CLI: ターミナル上でコマンドを補完・提案してくれる。
今回のMeetupでの発見
ここからは今回のVSCode Meetupで学んだことについてまとめていきます。
コメントをコードに変換してもらう際のコメントの与え方
コメントを作成し、それに対してGitHub Copilotがコードを作成してくれる機能についてはよく利用していたのですが、コメントの与え方によって生成されるコードの質が変わるというのは新発見となりました。
例があまり良くないとは思いますが、下記のようなイメージです。
// hogeと出力する関数を作成する
function hoge() {
var hoge = 'hoge'
console.log(hoge)
}
// hogeと出力する関数を作成する。
// hogeはこの関数の中でのみ使用できるScopeとする。
function hoge() {
const hoge = 'hoge' // 条件をコメントで設定したので、constを使用している。
console.log(hoge)
}
// より複雑な処理
// より細かな条件1
// より細かな条件2
・
・
・
function fukuzatsu() {
上記で指定された複数の条件を反映した処理
}
コードを生成する際に、参照される箇所について
GitHub CopilotではChatGPTを使用しているため、ChatGPTに対しAPIリクエストを送信します。
その際に、情報としてChatPTに全ての情報を与えているとリクエストが大幅に増加し、費用も莫大なものとなってしまいます。
そのため、開いているタブ(ファイル)の隣接するタブのみ読み込んでいます。
これを利用すると、TypeScriptなどで型定義のファイルを隣接させておくと、生成されるコードの質が向上します。
また、テストを作成する際には、テスト箇所のファイルを横に開いておき、テストコードを書くようにするとテストの質が向上するはずです。
ただし、完璧に書いてくれるわけではないのでシナリオの補完などを人間が行う必要があります。
AI Native Development Guide
今回登壇された@yuhattor さんよりご紹介頂いたガイドになります。
GitHub CopilotやChatGPTのコーディングおける最適な使い方を解説して頂いているガイドとなります。
参加しての感想
普段、業務の中でGitHub Copilotを使用しておりますが、予測変換やコメントでの簡単なコード作成などでしか使えておらず、その恩恵に与れているとはあまり言えない状態でした。
今回のVSCode Meetupに参加し、GitHubの方から効果的な使用方法を伺うことで今後の業務の中でさらに生産性を上げていくことが出来るのではないかと感じております。
機会があれば、また参加したいです!