Tips - コード提案からコードの出処参照管理まで
GitHub Copilotを日々の開発に組み込むことで、コーディングの効率が大きく変わります。本記事では、IDEでのコード提案の受け取り方、公開コードとの一致確認、そしてプルリクエスト作成時の支援機能について、実践的な観点から解説します。
1. 開発環境での準備
GitHub CopilotをVisual Studio Codeで利用するには、以下の準備が必要です。
- Copilotへのアクセス権: Copilot Free(限定的なアクセス)、または有料プランによる完全なアクセス
- Visual Studio Code: 最新版のインストール
- GitHubへのサインイン: VS Code内でGitHubアカウントに接続
- Copilot拡張機能: 初回セットアップ時に自動インストールされます
セットアップが完了すれば、すぐにコード提案を受け取れる状態になります。
2. コード提案の基本的な使い方
2.1 インライン提案の受け取り
コードを入力すると、Copilotが自動的に提案を表示します。例えば、JavaScriptで次のような関数ヘッダーを書いたとします。
function calculateDaysBetweenDates(begin, end) {
この時点で、Copilotは関数本体全体を灰色のテキストで提案します。提案を受け入れる場合はTabキーを押すだけです。
2.2 自然言語からのコード生成
コメントで実現したい内容を自然言語で書くと、Copilotがそれを実装するコードを提案します。
// 代替テキストのないすべての画像を見つけて
// 赤い境界線を付ける関数を書く
このようなコメントを書くと、対応する実装コードが自動的に提案されます。これにより、アルゴリズムの詳細を思い出す前に、まず「何をしたいか」を書くことができます。
2.3 複数の提案から選択する
Copilotは常に複数の実装案を持っています。提案の上にマウスカーソルを置くと、コントロールパネルが表示されます。
キーボードショートカット:
| OS | 次の提案 | 前の提案 |
|---|---|---|
| macOS | Option+] | Option+[ |
| Windows/Linux | Alt+] | Alt+[ |
提案を受け入れる場合はTab、すべて拒否する場合はEscを押します。
さらに多くの選択肢を見たい場合は、Ctrl+Enterを押すと新しいタブが開き、複数の代替案が一覧表示されます。その中から適切な提案を選んで受け入れることができます。
2.4 部分的な提案の受け入れ
提案全体ではなく、次の単語だけ、または次の行だけを受け入れたい場合があります。
次の単語を受け入れるショートカット:
| OS | ショートカット |
|---|---|
| macOS | Command+→ |
| Windows/Linux | Control+→ |
次の行を受け入れる機能は、editor.action.inlineSuggest.acceptNextLineコマンドにカスタムキーボードショートカットを設定することで利用できます。
3. Next Edit Suggestions - 次の編集箇所の予測
この機能は、進行中の変更に基づいて、次に編集が必要な箇所を予測します。
エディタのガター(行番号の横)に矢印が表示されている場合、そこに編集提案があります。Tabキーで次の提案箇所に移動し、もう一度Tabを押すと提案を受け入れます。
矢印にマウスカーソルを合わせると、編集提案メニューが表示され、キーボードショートカットや設定オプションにアクセスできます。提案が現在のビューの外にある場合、矢印は上下を指して次の提案の位置を示します。
4. AIモデルの変更
インライン提案に使用される大規模言語モデルを変更することができます。プロジェクトの特性や求める提案の傾向に応じて、適切なモデルを選択できます。
5. 公開コードとの一致確認
Copilotの提案が公開されているコードと一致する場合、その参照情報を確認できます。これはライセンスの遵守やコードの出所を把握する上で重要な機能です。
5.1 前提条件
この機能を利用するには、個人設定または組織設定で「公開コードと一致する提案を許可する」設定が有効になっている必要があります。
5.2 インライン提案の参照確認
Visual Studio Codeのログで参照情報を確認できます。
ログに記録される情報:
- 提案を受け入れた日時
- ファイル名
- コード内の位置(行番号、列番号)
- 追加されたコードの抜粋
- 一致するコードのライセンスタイプ(不明な場合は"unknown")
- GitHub.com上の該当ファイルのURL
ログエントリの例:
2025-03-27 12:17:54.759 [info] file:///Users/田中/fizzbuzz.js Similar code at [Ln 2, Col 8] let i = 1; i <= 100; i++) { let output = ''; if (i % 3 === 0) { output += 'Fizz';...
2025-03-27 12:17:54.759 [info] License: unknown, URL: https://github.com/sample-org/sample-repo/blob/8563f3b1d4f33952b22212b86e745539d1567ed1/examples/fizzBuzz.js
2025-03-27 12:17:54.759 [info] License: MIT, URL: https://github.com/another-org/yamada/blob/7e974691f4c8e6bc55f9b50688f05d746d1bc52b/exercises/2/fizz-buzz.js
5.3 機能の動作確認
コード参照機能が正しく動作しているか確認するには、よく知られたアルゴリズムを試してみます。
-
fizz-buzz.jsファイルを作成してエディタで開く - 上記の手順でログを表示する
- エディタで次のように入力:
(閉じ括弧の後にスペースを入力)
function fizzBuzz() - Copilotが関数の完成形を提案します(通常、FizzBuzzアルゴリズムの一般的な実装が提案されます)
-
Tabキーで提案を受け入れる - ログに類似コードのエントリが追加されるか確認
5.4 Copilot Chatでの参照確認
Copilot Chatの応答に一致するコードが含まれる場合、応答の末尾に次のように表示されます。
Similar code found with n license types - View matches
「View matches」をクリックすると、新しいエディタタブに詳細が表示されます。
表示される情報:
- ライセンスタイプ(判明している場合)
- GitHub.com上のファイルURL
- 一致するコードのスニペット
URLをCtrl+クリック(Windows/Linux)またはCommand+クリック(Mac)すると、GitHub.com上で完全なファイルを表示できます。
6. プルリクエスト説明文の作成支援
GitHub Copilot Enterprise(パブリックプレビュー)では、プルリクエストの説明文作成も支援します。
6.1 前提条件
この機能を利用するには、エンタープライズ管理者がCopilot機能のプレビュー使用をオプトインする必要があります。
6.2 使い方
提案は灰色で表示され、Tabキーで受け入れ、Escキーまたは入力の継続で無視できます。入力を続けると、追加のコンテキストに基づいて新しい提案が表示されます。
6.3 機能の有効化・無効化
説明欄の上部にある設定から「Autocomplete (Public preview)」を選択し、「Enabled」または「Disabled」をクリックすることで切り替えられます。この設定は将来のプルリクエストにも保存されます。
7. 重複検出の設定
Copilotから限定的な提案しか得られない、またはまったく提案が表示されない場合、重複検出が有効になっている可能性があります。この設定は個人のサブスクライバー設定で管理できます。
8. まとめ
GitHub Copilotは、適切に設定し理解して使うことで、日常的なコーディング作業の質と速度を向上させるツールです。提案の選択肢、公開コードとの一致確認、プルリクエスト作成の支援など、各機能は実際の開発ワークフローに組み込むことを想定して設計されています。
特に、コード参照機能はライセンスコンプライアンスの観点から重要であり、Next Edit Suggestionsは大規模なリファクタリング作業で効果を発揮します。これらの機能を組み合わせることで、より確実で効率的な開発が可能になります。