GitHub社の調査によると、適切にGithub Copilotを活用できると、開発者の生産性が最大55%向上するという結果も出ている
本記事では、Github Copilotのメリットを最大限活かす際に押さえておくべきポイントをいくつか紹介する
- コンテキスト(文脈)の提供
- コードベース全体に統一感を持たせる
コンテキスト(文脈)の提供
大抵の場合、コードの予測候補が複数存在するので、期待する候補が提示されるように、GitHub Copilotにコンテキストを適切に与えることが重要。
例えば、以下のような観点がある
タブ
関連ファイルをタブで開いたままにしておく(=関連の薄い、不要なファイルは閉じておく
テストを書いている場合のテスト対象のファイル、依存関係(参照している関数やクラス)などが関連ファイルに該当する。関連ファイルのインターフェースやシグネチャを理解して、適切な引数で呼び出してくれやすくなる
コメント
抽象的なコメントは避けて、具体的なコメントを記載することが効果的。
コードの目的や制約。詳細なアルゴリズム、引数の内容と型、返り値の値と型など。また、プログラミング言語ごとに決められたコードコメントの残し方をした方がいいということも押さえておく。
なお、粒度の大きい関数やクラスを作成する指示を出すよりも、小さめの粒度で責務を分解して指示するとより精度が上がることが期待できる
Import文
依存している関数やライブラリがあるなら、import文をできるだけファイルの先頭で記述すること。例えば、Pythonでスクレイピングする場合、コードの先頭にBeautifulSoupなどをimportしてあげるだけで、最適なコードを生成してくれやすくなる
説明的な名称
関数、クラス、メソッド、変数、定数など全ての名称付与可能なものについては、より説明的、具体的な内容にした方がコード補完の精度が向上することが期待できる
型定義
Pythonなど、動的型付け言語でコーディングする場合でも、引数や返り値に型をした方がコード補完の精度が向上することが期待できる
カスタム指示
.github/copilot-instructions.mdをプロジェクトに用意しその中にカスタム指示を定義できる。
テストを作成する際に全体的に適用できる指示はこのファイルに書いておくとコレらを踏まえた上で作成してくれるのでより効率的
例えば、
- 使用するテストツール
- テストケース名は日本語で書いてください
- 正常系の後に異常系のテストを書くようにしてください
- どのテストケースからも参照される変数はsetup処理に書いてください
- API通信が発生する実装をテスト対象とするテストはモックを活用してとか
あとは
- コーディング規約、使用している主要フレームワーク、ライブラリのバージョン(バージョンによって書き方異なる
- プロジェクトのサービスが扱うドメイン知識とか業務知識
書き方としては、Markdown形式で自然言語の指示をファイルに書き込む
.github/copilot-instructions.md
```
# 技術スタック
# ディレクトリ構成
# ドメイン知識
# コーディング規則
```
※GitHub Copilot Chat 使用時のみ(コード補完には適用されない)
コードベース全体に統一感を持たせる
コードベースの設計がパターン化、規則化されているとCopilotがその内容に沿ってコード生成してくれやすくなる
変数の命名規則
言語やフレームワークの定める慣例(ケース、インデント、タブ、命名規則、コメントのフォーマット)等に従いつつも、プロジェクト内で(特にそのプロジェクト固有の)定義する関数名、変数名など統一することが重要
構造化されたソフトウェアアーキテクチャ
Copilotは無秩序な設計(ディレクトリ構成や依存関係の方向などがバラバラ)やスパゲッティコードをうまく処理できない特性がある。
この辺りはある程度モダンなフレームワークを使っていれば、そのフレームワークが定める配置構成に従えば良い。Copilotがそれらを解釈して最適なコード候補を補完してくれやすくなる
まとめ
本記事では、GitHub Copilotを使いこなすための実践的なポイントを紹介します。適切な文脈提供やコードベースの統一感を意識することで、GitHub社の調査が示す最大55%の生産性向上を実現できます。Web開発をより効率的に進めるための具体的なテクニックについて紹介しました。