はじめに

GitHub Copilotは、大規模言語モデル(LLM)を活用したAIペアプログラマーです。コードを書いている最中にリアルタイムで提案を行い、開発者の生産性を大幅に向上させます。2024年12月からは無料プラン(Copilot Free)も提供されており、月間の利用制限付きでコード補完やチャット機能を試すことができます。

本記事では、GitHub Copilotをまだ使ったことがない方に向けて、VSCodeでの基本的な使い方を解説します。この記事を読むことで、以下のことができるようになります:

  • GitHub Copilotの主要機能を理解する
  • VSCodeでコード補完とCopilot Chatを効果的に活用する
  • Copilot Chatの4つのモード(Ask/Edit/Agent/Plan)を使い分ける
  • AIとの協働作業における注意点を把握する

GitHub Copilotでできること

GitHub Copilotは単なる入力補完ツールではありません。以下のような多彩な機能を備えています。

コード補完(インライン提案)

最も基本的な機能が、リアルタイムのコード補完です。関数名や変数名を入力し始めると、Copilotが続きのコードをグレーの文字(ゴーストテキスト)で提案します。

1
2
3
4
5
6
# 例:関数名を入力すると、実装を自動で提案
def calculate_average(numbers):
    # Copilotが以下のようなコードを提案
    if not numbers:
        return 0
    return sum(numbers) / len(numbers)

Next Edit Suggestions(次の編集予測)

2025年に導入された新機能として、Next Edit Suggestions(NES) があります。これは現在のカーソル位置だけでなく、次に編集すべき場所とその内容を予測する機能です。

NESが有効な場合、エディタのガター(行番号の横)に矢印が表示され、Tabキーで次の編集位置にジャンプし、さらにTabで提案を受け入れることができます。以下のような場面で特に便利です:

  • 変数名の一括リネーム
  • タイポ(入力ミス)の自動修正
  • コピー&ペーストしたコードのスタイル調整
  • クラス定義の変更に伴う関連コードの更新

関数・クラスの自動生成

関数のシグネチャや簡単なコメントを書くだけで、実装全体を生成できます。

1
2
3
4
5
6
7
8
9
// ユーザー情報をAPIから取得する関数
async function fetchUserData(userId) {
    // Copilotが実装を提案
    const response = await fetch(`/api/users/${userId}`);
    if (!response.ok) {
        throw new Error('Failed to fetch user data');
    }
    return response.json();
}

コメント駆動のコード生成

自然言語のコメントで「やりたいこと」を記述すると、それに対応するコードを生成します。これはGitHub Copilotの最も強力な機能の一つです。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
# CSVファイルを読み込んで、日付でソートして返す関数
def sort_csv_by_date(filepath):
    import csv
    from datetime import datetime
    
    with open(filepath, 'r') as f:
        reader = csv.DictReader(f)
        data = list(reader)
    
    return sorted(data, key=lambda x: datetime.strptime(x['date'], '%Y-%m-%d'))

テストコードの生成

既存の関数に対して、テストコードを自動生成できます。関数の上でテストを書き始めると、適切なテストケースを提案します。

1
2
3
4
5
# calculate_average関数のテスト
def test_calculate_average():
    assert calculate_average([1, 2, 3, 4, 5]) == 3.0
    assert calculate_average([]) == 0
    assert calculate_average([10]) == 10.0

ドキュメント・コメントの生成

関数やクラスのdocstringを自動生成する機能もあります。"""/**を入力するだけで、適切なドキュメントを提案します。

VSCodeでの基本的な使い方

インライン補完の操作

GitHub Copilotの基本操作は非常にシンプルです。

操作 Windows/Linux macOS
提案を受け入れる Tab Tab
提案を拒否する Esc Esc
次の提案を表示 Alt + ] Option + ]
前の提案を表示 Alt + [ Option + [
複数の提案を別タブで表示 Ctrl + Enter Ctrl + Enter

提案が表示されたとき、Tabキーを押すとコードが挿入されます。提案が不要な場合はEscキーで消すか、そのまま入力を続けると提案は消えます。

部分的な提案の受け入れ

提案の一部だけを受け入れたい場合は、単語単位で受け入れることができます。

操作 Windows/Linux macOS
次の単語を受け入れ Ctrl + → Cmd + →

長い提案の一部だけが必要な場合に便利です。

Copilot Chatへのアクセス方法

VSCodeでは、複数の方法でCopilot Chatにアクセスできます。

方法 Windows/Linux macOS 用途
チャットビュー Ctrl + Alt + I Cmd + Alt + I 継続的な対話
クイックチャット Ctrl + Shift + Alt + L Shift + Option + Cmd + L 簡単な質問
インラインチャット Ctrl + I Cmd + I エディタ内での編集指示

タイトルバーのCopilotアイコンからもチャットメニューを開くことができます。

コメント駆動の使い方

コメント駆動でコードを生成する際のベストプラクティスを紹介します。

  1. 具体的に書く: 「データを処理する」ではなく「CSVから日付列を抽出してソートする」のように具体的に
  2. 入出力を明示する: 引数と戻り値の型や形式を明記する
  3. 言語を統一する: プロジェクト内でコメントの言語(日本語/英語)を統一する
1
2
3
4
5
# 入力: ユーザーIDのリスト (List[int])
# 出力: 各ユーザーの詳細情報を含む辞書のリスト (List[Dict])
# 処理: APIを並列で呼び出して効率化する
async def fetch_users_parallel(user_ids):
    # Copilotがasyncio.gatherを使った実装を提案

Copilot Chatの4つのモード

VSCodeでは、Copilot Chat機能を使ってAIと対話形式でやり取りできます。コードの説明を求めたり、リファクタリングの提案を受けたりできます。

チャットビューの下部にあるエージェントピッカーから、目的に応じて4つのモードを切り替えられます。

Askモード(質問)

コードやプログラミングに関する質問に回答するモードです。ファイルを直接編集せず、情報収集や学習に適しています。

適したユースケース:

  • コードの動作原理を理解したい
  • 新しい技術やパターンについて学びたい
  • エラーメッセージの意味を知りたい

Editモード(編集)

指定したファイルに対して、コントロールされた編集を行うモードです。編集対象のファイルを「Working Set」として明示的に指定し、1回のやり取りごとに変更を確認・承認できます。

適したユースケース:

  • 特定のファイルに限定した変更を行いたい
  • 変更内容を細かく確認しながら作業したい
  • LLMリクエスト数を管理したい

Agentモード(自律実行)

最も強力なモードです。タスクを与えると、Copilotが自律的にファイルの特定、編集、ターミナルコマンドの実行までを行います。

適したユースケース:

  • 複数ファイルにまたがる変更が必要
  • 新しい機能の実装やリファクタリング
  • 依存関係のインストールやビルドを含む作業
  • MCP(Model Context Protocol)サーバーとの連携が必要

注意点: Agentモードでは、Copilotがターミナルコマンドを提案することがあります。コマンド実行前に必ず内容を確認してください。

Planモード(計画)(プレビュー機能)

実装計画を詳細に立てるためのモードです。コード変更を行う前に、すべての要件を考慮した計画を作成し、レビューと承認を経てから実装に移行できます。

適したユースケース:

  • 大規模な機能追加やリファクタリング
  • チームでの計画レビューが必要
  • 要件の不明点を明確にしたい

Chat参加者とスラッシュコマンド

Copilot Chatでは、特殊なキーワードを使って効率的に作業できます。

Chat参加者(@メンション)

@に続けて参加者名を入力すると、専門的な機能にアクセスできます。

参加者 説明
@workspace ワークスペース全体を考慮した回答
@vscode VSCodeの操作や設定に関する質問
@github GitHub固有のスキル(Web検索、リポジトリ検索など)
@terminal ターミナル関連の質問

スラッシュコマンド

よく使うスラッシュコマンド:

コマンド 説明
/explain 選択したコードの説明を求める
/fix コードの問題を修正する
/tests テストコードを生成する
/doc ドキュメントを生成する
/new 新しい会話を開始する
/clear 会話履歴をクリアする

Chat変数(#メンション)

#に続けて変数名を入力すると、特定のコンテキストを参照できます。

変数 説明
#file 特定のファイルを参照
#codebase コードベース全体を参照
#selection 現在選択中のコード
#terminalSelection ターミナルの選択内容
#web Web検索結果を参照(@githubと併用)

使い方のコツと注意点

提案の品質を高めるコツ

  1. コンテキストを与える: 関連するコードやインポート文を先に書いておく
  2. 命名を工夫する: 意図が伝わる変数名・関数名を使う
  3. サンプルを示す: 期待する形式のサンプルをコメントで書く
  4. 関連ファイルを開いておく: Copilotは開いているファイルをコンテキストとして参照する
1
2
3
4
5
# 良い例: コンテキストが明確
from datetime import datetime, timedelta

def get_next_business_day(date: datetime) -> datetime:
    # Copilotが土日をスキップするロジックを提案しやすい

AIモデルの選択

GitHub Copilotでは、複数のAIモデルから選択できます。チャットビューのモデルピッカーから、タスクに応じて最適なモデルを選択できます。

  • 高速モデル: 素早いコード補完に適している
  • 推論モデル: 複雑な問題解決や計画立案に適している
  • Claude、Gemini等: 代替モデルとして利用可能(設定で有効化が必要)

カスタムインストラクション

プロジェクト固有のコーディング規約やスタイルをCopilotに伝えることができます。リポジトリのルートに.github/copilot-instructions.mdファイルを作成し、プロジェクトの規約を記述すると、すべてのチャットリクエストに自動的に適用されます。

セキュリティに関する注意

GitHub Copilotを使用する際は、以下のセキュリティ上の注意点を意識してください。

  • 機密情報を含めない: APIキー、パスワード、個人情報をコード中に直接書かない
  • 提案を鵜呑みにしない: 生成されたコードにセキュリティ上の脆弱性がないか確認する
  • 入力検証を忘れない: Copilotが生成したコードでも、適切な入力検証が行われているか確認する
  • Agentモードのコマンド確認: ターミナルコマンドが提案された場合、実行前に必ず内容を確認する

プライバシーとデータ利用

GitHub Copilotのデータ利用ポリシーについて、正しく理解しておきましょう:

  • モデル学習への利用: デフォルトでは、ユーザーのコードスニペットやプロンプトはAIモデルの学習には使用されません。この設定は個人設定から確認できます
  • データ収集オプション: 製品改善のためのデータ収集は、個人設定からオプトイン/オプトアウトが可能
  • 企業向けプラン: Copilot Business/Enterpriseでは、組織のポリシーに従ってデータ処理が行われます

著作権とライセンス

GitHub Copilotの提案は、公開されているコードから学習したモデルによって生成されます。

  • パブリックコード一致の検出: GitHub設定で「Suggestions matching public code」を「Block」に設定すると、約150文字の範囲で公開コードと一致または類似する提案がブロックされます
  • 一致コードの確認: 「Allow」に設定している場合、一致するコードがあればその詳細と元リポジトリへのリンクを確認できます
  • 社内ポリシー: 企業で使用する場合は、組織のポリシーを確認する
  • Copilot Business/Enterprise: 企業向けプランでは、管理者がパブリックコード一致をブロックするポリシーを設定できます

AIの限界を理解する

GitHub Copilotは強力なツールですが、万能ではありません。

  • 学習データの制限: 学習データのカットオフ以降の新しいAPIやライブラリには対応できない場合がある。ただし、@github #webを使ったWeb検索で最新情報を補完できる場合もある
  • コンテキストの限界: ファイル全体やプロジェクト構造を完全に理解しているわけではない。#codebaseを活用してコンテキストを補完する
  • ロジックの誤り: 提案されたコードが正しく動作するとは限らない。特にエッジケースやエラーハンドリングは注意が必要
  • ドメイン知識の欠如: 業務固有のロジックやビジネスルールについては、人間による確認が必須

生成されたコードは必ずレビューし、テストを実行してから本番環境に適用してください。

まとめ

GitHub Copilotは、適切に活用すれば開発効率を大幅に向上させる強力なツールです。

本記事のポイントをまとめると:

  • コード補完: Tabで受け入れ、Escで拒否のシンプル操作
  • Next Edit Suggestions: 次の編集位置を予測し、Tabでジャンプ・適用
  • コメント駆動: 具体的なコメントを書くことで精度の高い提案を得られる
  • Copilot Chatの4モード: Ask(質問)、Edit(編集)、Agent(自律実行)、Plan(計画)を目的に応じて使い分ける
  • コンテキスト指定: @参加者、/コマンド、#変数を活用して効率的に作業する
  • 注意点: セキュリティ、著作権、プライバシー設定、AIの限界を意識して使用する

まずは日常のコーディングで小さな機能から試してみてください。AskモードやEditモードから始めて、慣れてきたらAgentモードで複雑なタスクに挑戦するのがおすすめです。Copilotとの協働に慣れることで、より効率的な開発ワークフローを構築できるはずです。