【VSCode】拡張機能「GitHub Copilot」の導入と使い方

VSCodeの拡張機能「GitHub Copilot」の導入方法と使い方を解説します。

拡張機能「GitHub Copilot」について

VSCodeの拡張機能「GitHub Copilot」は、リアルタイムでコードを書くのを助けてくれるAIツールです。Python、JavaScript、TypeScript、Ruby、Go、C++、HTML、CSSなどの幅広い言語に対応しています。

「GitHub Copilot」の主な機能をまとめると、以下のとおりです。

  1. コード補完
    • 書きかけのコードに対して、次に書くべき内容をAIが提案します。例えば、関数の処理を途中まで書くと、続きのコードが表示されます。
  2. コメントからのコード生成
    • 「○○をする関数を作成」と書くだけで、対応するコードを自動生成します。例えば「CSVファイルを読み込んでフィルター処理をする関数」とコメントを書くと、AIがその内容に基づいたコードを生成してくれます。
  3. テストコードの自動生成
    • 関数に対するユニットテストなどを自動で作成します。
  4. Docstring生成
    • 関数の説明コメントを自動で追加します。
  5. リファクタリング
    • 冗長なコードを簡潔にする改善案を提示します。

IntelliCodeが「既存のコード補完」が得意なのに対して、Copilotは「創造的なコード提案」を行うのが得意です。うまく使い分けると良いでしょう。ただし、提案されたコードは誤りや脆弱性が存在することも多いため、内容をレビューすることが大切です。

解説動画

料金プラン(2025年7月時点)

2025年7月時点では、Copilotには無料プラン「Copilot Free」と個人向け有料プラン「Copilot Pro」「Copilot Pro+」、法人向け有料プラン「Copilot Business」「Copilot Enterprise」があります。それぞれの違いを簡単にまとめると以下のとおりです。

プラン名 月額料金 特徴
Copilot Free 無料 コード補完上限2,000回/月、AIチャット機能50回/月までの利用制限あり
Copilot Pro $10 コード補完無制限高性能モデル利用可能AIチャット機能無制限、プレミアムリクエスト上限300回/月
Copilot Pro+ $30 コード補完無制限、高性能モデル利用可能、AIチャット機能無制限、プレミアムリクエスト上限1500回/月
Copilot Business $19/人 コード補完無制限、高性能モデル利用可能、AIチャット機能無制限、プレミアムリクエスト上限300回/月組織向けの管理・セキュリティ機能
Copilot Enterprise $39/人 コード補完無制限、高性能モデル利用可能、AIチャット機能無制限、プレミアムリクエスト上限1000回/月Businessプランより高度な組織向けの管理・セキュリティ機能

本格導入の前にまずは無料プラン「Copilot Free」を試してみるのが良いでしょう。利用回数に制限はありますが、AIによるコーディング支援を気軽に試すことができます。
プランに関する最新情報は以下ページをご確認ください。

導入方法

Githubの無料アカウントを持っている前提で「GitHub Copilot」の導入方法を解説します。また、今回は無料プラン「Copilot Free」で説明します。

Githubの無料アカウントを持っていない場合は、サインアップページ(https://github.com/signup)にアクセスし、必要事項を入力して作成しましょう。

拡張機能のインストール

① Visual Studio Code を起動します。

② 左側の 拡張機能アイコン(四角が4つ) をクリックします。

③ 検索バーに「GitHub Copilot」と入力します。

④ 「GitHub Copilot」を選択して [インストール] をクリックします。

GitHub Copilotの有効化

今回は、「GitHub Copilot」の無料プランを使います。

① ブラウザでGitHub(https://github.co.jp/)にサインイン(ログイン)しておきます。

② Copilotの公式ページ(https://github.com/features/copilot)にアクセスします。

③「無料で始める」等のボタンがあればクリックし、案内に従って進めます。すると、GitHubの設定ページ上でCopilot Freeプランを有効化できます。

GitHubのCopilot設定ページ(https://github.com/settings/copilot/featuresに「You are using Copilot for free」と書いてあればOKです。

VSCodeでGitHubにログイン

① VSCodeの右下にある「サインアウト済み」をクリックします。

② 「サインインしてCopilotを使用する」をクリックします。

③ 「Githubで続行する」をクリックします。

④ ブラウザが開きます。「continue」をクリックします。

⑤ ポップアップ画面の「Visual studio codeを開く」をクリックします。

⑥ VSCodeの右下にCopilotアイコンが表示されていれば GitHub Copilot が使えるようになっています。
これでコメントや関数名を書くだけで、AIが先回りして提案を出してくれます。

コード補完・提案

例えば以下のようにコメントを書くだけで、Copilotが関数を提案してくれます。

# リストの平均値を計算する関数

TABキーで受け入れ、ESCキーで拒否できます。
コメントは具体的に書くと、より正確な提案が得られます。
また、コードを書き始めると、Copilotが次の行を予測して提案してくれます。

Copilot Chatでバグの修正

Copilot Chatのチャット欄で「この関数のバグを直して」などと指示すると、AIが修正案を提示してくれます。

例えば、以下のコードを普通に実行すると、「ZeroDivisionError: division by zero」というエラーになります。これは、0で割り算すると生じるゼロ除算エラー(ZeroDivisionError)です。

def divide(a, b):
    result = a / b  # ← この行にブレークポイントを設定
    return result

x = 10
y = 0  # ← エラーの原因になる値
print(divide(x, y))

「ZeroDivisionError: division by zeroというエラーが出たので、エラーが出ないように修正して」などと指示すれば、以下のように条件分岐でbの値が0のときは割り算を行わないようコードを修正してくれます。

def divide(a, b):
    if b == 0:
        return None  # 0除算時はNoneを返す
    result = a / b  # ← この行にブレークポイントを設定
    return result

x = 10
y = 0  # ← エラーの原因になる値
print(divide(x, y))

Copilot ChatでDocstring生成

Copilot Chatのチャット欄で「関数のdocstringを追加して」などと指示すると、以下のようにAIがDocstringを追加してくれます。

def divide(a, b):
    """
    2つの数値a, bを割り算して結果を返す関数。
    bが0の場合はNoneを返す。
    
    Args:
        a (float or int): 割られる数
        b (float or int): 割る数
    Returns:
        float or None: 割り算の結果。bが0の場合はNone。
    """
    if b == 0:
        return None  # 0除算時はNoneを返す
    result = a / b  # ← この行にブレークポイントを設定
    return result

x = 10
y = 0  # ← エラーの原因になる値
print(divide(x, y))

Copilot Chatでテストコードの自動生成

Copilot Chatのチャット欄で「関数のユニットテストを作成して」などと指示すると、以下のようなテストコードをAIが生成してくれます。

import unittest
from test import divide

class TestDivide(unittest.TestCase):
    def test_divide_normal(self):
        self.assertEqual(divide(10, 2), 5)
        self.assertEqual(divide(-6, 3), -2)
        self.assertAlmostEqual(divide(7, 3), 7/3)

    def test_divide_by_zero(self):
        self.assertIsNone(divide(10, 0))
        self.assertIsNone(divide(0, 0))

    def test_divide_zero_numerator(self):
        self.assertEqual(divide(0, 5), 0)

if __name__ == "__main__":
    unittest.main()

関連ページ

【VSCode超入門】基本的な使い方から応用例まで解説
VSCode(Visual Studio Code)の基本的な使い方から応用例まで入門者向けに解説します。
【Windows11】PythonとVSCodeで環境構築する方法を丁寧に解説
Windows11上でPythonとVscodeを導入し、環境構築する方法について詳しく解説します。
Python超入門速報
【Windows超入門】初心者から上級者までテクニックを解説
Windowsの基本操作と設定基本操作Windowsの基本操作便利なショートカット大全集画面のカスタマイズカスタマイズWindows 11の右クリックメニューを昔のスタイル(Windows 10)に戻す方法Windowsを高速化・軽量化する...

コメント