created: 2023-06-02T10:22:31.638Z
GitHub Copilot のセミナー
こちらに出席してきた。
使う上で参考になりそうな話をまとめておく。
参照する情報
GitHub Copilot はコードを提案するために以下の優先順位で情報を集める。
- 開いてるファイルのパス
- カーソルの前後
- エディタで開いているタブ
同じ言語の内容を読んで提案してくる
GitHub Copilot は、コードを生成するうえで参照する情報として、ファイルパスを一番最初に参照しにくる。
パスから拡張子などのプログラミング言語を判断して、なるべく同じ言語から提案するコードの内容を生成する。なのでマークダウンでキレイにドキュメントを書くとそれをjsの実装で勘案してくれるということはいまのところないらしい。
カーソルの前後をみてくる
参考にする内容は同じファイルの中でもカーソルの前後が優先順位が高くなっているとのこと。 「前後」というのがポイントで、ChatGPT のように文章の続きの情報を推測から出すのではなく、前後の文脈から真ん中に何が入るかを提案してくれる。
勘案させたいタブを開く
たとえば TypeScript を書いているのなら d.ts ファイルを vscode にピン留めしておくのがよいマナーということらしい。
実際に GitHub の社員の人はこういったコードを開いて作業するようになっているらしい。
- 型ヒント付けされた python コード
- JsDoc が書いてある js コード
この記事では Neighboring tabs
が紹介されていた。
処理性能の限界から、すべてのタブの情報を参考にするわけではなく、またタブの中身の情報をすべて使うわけではないそうだ。
説明的な名前をつけるのが効果的
これは逆にいうと xxx_list
といった命名を dict にしたりすると期待した精度が得られないということ。他にも xxx_dict.append
といった型がマッチしないメソッド名もよくない。
「(AIとはいえ)ペアプログラミングをしている」という状況で相応しい命名をきちんとするのは当然だけれども GitHub Copilot を使っているならこれまでよりもコードを書くのにも有利なマナーになるそうだ。
コメントが大事
とにかくプロジェクトにコメントをたくさん書いて「何をしているか」を読ませるのが賢い使い方らしい。たとえばプロジェクトで使っているフレームワークのバージョンを明言して、それにそぐう書き方を促したりできるそうだ。
その他
翻訳機ではない
繰り返し言っていたのは「翻訳機ではない」ということ。 おそらく ChatGPT が翻訳機的に使われていることが多いから、少し違うよ、という意味かな。
最新の技術は苦手かも
他に質問している人や、たくさんつかっていそうな人の話をきいていると「提案される内容はフレームワークの古いバージョンのコードだったりする」という言葉が何回か聞かれた。 Rails とか言語仕様やフレームワークで書き方が変わるようなプログラミングだと真価が発揮できないのかもしれない。
検索しても出てこない話が多いように思った
改めて調べながら書いていると、Webで調べてもなかなか出てこないだろうな、ということもたくさん話してくれていてわざわざ足を運んでよかったと思う。
vim は未対応の予定
弊社だとガッカリな人たくさんいそうですね。