はじめに
VSCodeでGitHub Copilotが使えるようになってから,かなりの時間がたちます.
Copilotにコーディングを補助してもらう中で,Copilotの "筋がよくなる" 自分なりのちょっとした小技が溜まってきたので記事にしようと思います.
関数名・変数名をちゃんと書く
任意のCopilotユーザが口を揃えて言っているので今更かもしれません.
競プロや個人開発ばかりしている人は忘れがちですが,大事なことです.
具体的な実装をする前に,したいことについてコメントをちゃんと書く
その関数が何をするのか,そのfor文while文はどういうループなのか,その変数は何を意味するのか……
コメントをちゃんと書けばCopilotも意図を汲んでくれますし,人に見せられるコードにもなります.
リファレンス全文をコード内の邪魔にならない場所に,直接置く
VSCodeのCopilotは現在開いているファイルをすべて参照してそこからも情報を取ってくることができる……らしいです.
しかし本当に見てほしい部分,例えば別ファイルにある特定の関数の詳細な実装など,細かいところはあまり見てくれないように感じます.
特に変数・関数の名づけが適当だったり,広い意味を持つ単語を使用していたりする場合,変数名に引っ張られて変な提案をすることがあります.
その点,現在編集中のファイルは詳細までよく見てくれているように感じます.
実際に見てほしい関数などをコピペ・コメントアウトして,現在編集中のファイルの一番下など邪魔にならない場所に置いておくことで,copilotにちゃんとコードを読ませて,いい感じに文脈を掴ませることができます.
ファイルをちゃんと分ける
特に個人開発や少人数開発では,ファイルを分けるのを面倒くさがってすべてのコードを1つのファイルで書くことがあります.
CopilotはVSCodeで使用する上でいい感じにコードを見てくれているように思いますが,生成AIの宿命として,あまり長い文章では細かい部分を忘れることがあります.
ファイルを細かく機能ごとにちゃんと分けておくことで,Copilotフレンドリーなコードを書くことができます.
適度にファイルを分けたコードは人間にとっても読みやすいですね.
Pythonのrequirements.txtや,それに相当するものを用意する
たとえrequirements.txtが必要ないような場合でも,です.
特に古いバージョンのライブラリを使用している場合,Copilotくんが書いてくるコードはバージョンが合わないことがあります.
ある程度コーディングが進めばそんなことも減りますが,新しくプロジェクトを始めるときはライブラリのバージョンを明確にしましょう.
ChatGPTとCopilotを使い分ける
両方契約しているユーザにとって,ChatGPT (執筆時点で4o) とCopilotは一見役割が被っています.
Copilotのいい点は,VSCode上で勝手に予測してくれることです.
ではChatGPTのいい点は?メモリ機能です.
ChatGPTは (設定でオフにしていなければ) ユーザのことを覚えるメモリを持っています.
ChatGPTに「私の情報について教えて」とでも投げれば,普段の会話を覚えていることが分かります.
普段扱っているような分野で,プログラムの大まかなプロトタイプを作りたい!といった目的で生成AIを使う場合は,CopilotよりChatGPTの方が普段の会話を基によしなに生成してくれることが多いです.