Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save haru01/a7fe5be14c9981a047ca469c80471d5a to your computer and use it in GitHub Desktop.
Save haru01/a7fe5be14c9981a047ca469c80471d5a to your computer and use it in GitHub Desktop.

GitHub Copilot 解説チュートリアル

目次

  1. GitHub Copilotとは
  2. セットアップと導入
  3. 基本的な使い方
  4. 効果的なプロンプトの書き方
  5. 実践的な活用例
  6. トラブルシューティング
  7. 料金とプラン
  8. セキュリティとプライバシー
  9. 応用テクニック
  10. まとめとベストプラクティス

1. GitHub Copilotとは

GitHub Copilotは、OpenAIと共同開発されたAI搭載のコーディングアシスタントです。機械学習を使用して、コードの自動補完、関数の生成、ドキュメントの作成などを支援します。

主な特徴

  • リアルタイムコード補完: 入力中にコードを予測・提案
  • 多言語対応: Python、JavaScript、TypeScript、Ruby、Go、PHP、C++など60以上の言語
  • コンテキスト理解: プロジェクト全体の文脈を理解した提案
  • 自然言語からのコード生成: コメントから実装コードを自動生成

利用可能なエディタ

  • Visual Studio Code
  • Visual Studio
  • Neovim
  • JetBrains IDEs(IntelliJ IDEA、PyCharm、WebStormなど)

2. セットアップと導入

2.1 アカウント設定

  1. GitHubアカウントの準備

    • GitHub.comにログイン
    • GitHub Copilotサブスクリプションを購入(個人用またはビジネス用)
  2. サブスクリプションの有効化

    Settings → Billing and plans → GitHub Copilot
    

2.2 Visual Studio Codeでのセットアップ

  1. 拡張機能のインストール

    • VS Code Extensions画面で「GitHub Copilot」を検索
    • 「GitHub Copilot」拡張機能をインストール
    • 「GitHub Copilot Chat」拡張機能もインストール(推奨)
  2. 認証

    • コマンドパレット(Ctrl+Shift+P)を開く
    • 「GitHub Copilot: Sign In」を実行
    • ブラウザでGitHubアカウントにログイン
  3. 設定確認

    // settings.json
    {
      "github.copilot.enable": {
        "*": true,
        "yaml": false,
        "plaintext": false
      }
    }

2.3 JetBrains IDEでのセットアップ

  1. プラグインのインストール

    • File → Settings → Plugins
    • 「GitHub Copilot」を検索してインストール
  2. 認証

    • Tools → GitHub Copilot → Login to GitHub

3. 基本的な使い方

3.1 自動補完機能

GitHub Copilotは入力中に自動的にコードを提案します。

例:JavaScript関数の作成

// 関数名を入力すると、実装が自動提案される
function calculateTax(

提案されたコードは:

function calculateTax(price, taxRate) {
    return price * (1 + taxRate);
}

3.2 キーボードショートカット

VS Code

  • Tab: 提案を受け入れ
  • Esc: 提案をキャンセル
  • Alt + ]: 次の提案を表示
  • Alt + [: 前の提案を表示
  • Ctrl + Enter: 提案パネルを開く

JetBrains

  • Tab: 提案を受け入れ
  • Esc: 提案をキャンセル
  • Alt + \: 手動で提案を要求

3.3 GitHub Copilot Chat

チャット機能を使用してAIと対話しながらコーディングできます。

使用方法

  1. サイドバーのChatアイコンをクリック
  2. 質問やリクエストを入力
  3. /help でコマンド一覧を表示

便利なコマンド

  • /explain: コードの説明
  • /fix: エラーの修正
  • /tests: テストコードの生成
  • /doc: ドキュメントの生成

4. 効果的なプロンプトの書き方

4.1 明確なコメントを書く

悪い例

# 計算する
def calc():

良い例

# 消費税込み価格を計算する関数
# price: 税抜き価格
# tax_rate: 消費税率(例:0.1 = 10%)
# return: 税込み価格
def calculate_price_with_tax():

4.2 具体的な要件を記述

悪い例

// APIを呼び出す

良い例

// REST APIからユーザー情報を取得し、エラーハンドリングとローディング状態を含む
// エンドポイント: GET /api/users/{id}
// レスポンス: { id, name, email, createdAt }
async function fetchUserById(userId) {

4.3 関数名から実装を推測させる

def validate_email_format(email):
    # Copilotが自動的にメール形式の検証ロジックを提案
def send_notification_email(recipient, subject, body):
    # メール送信ロジックが自動生成される

5. 実践的な活用例

5.1 Webアプリケーション開発

React コンポーネント

// ユーザープロフィール表示コンポーネント
// props: user { id, name, email, avatar, bio }
// 編集ボタンと削除ボタンを含む
function UserProfile({ user, onEdit, onDelete }) {

提案される実装:

function UserProfile({ user, onEdit, onDelete }) {
  return (
    <div className="user-profile">
      <div className="avatar">
        <img src={user.avatar} alt={user.name} />
      </div>
      <div className="info">
        <h2>{user.name}</h2>
        <p>{user.email}</p>
        <p>{user.bio}</p>
      </div>
      <div className="actions">
        <button onClick={() => onEdit(user.id)}>編集</button>
        <button onClick={() => onDelete(user.id)}>削除</button>
      </div>
    </div>
  );
}

5.2 データ処理

Python データ分析

import pandas as pd

# CSVファイルからデータを読み込み、欠損値を処理し、基本統計を出力
def analyze_sales_data(csv_path):

5.3 テストコード生成

# calculate_tax関数のユニットテストを作成
# 正常ケース、境界値、異常値をテスト
import unittest

class TestCalculateTax(unittest.TestCase):

5.4 API開発

Express.js API

// ユーザー認証ミドルウェア
// JWTトークンを検証し、リクエストオブジェクトにユーザー情報を追加
const authenticateToken = (req, res, next) => {

6. トラブルシューティング

6.1 よくある問題と解決方法

問題1: 提案が表示されない

  • 解決方法:
    • インターネット接続を確認
    • GitHubアカウントの認証状態を確認
    • 拡張機能の再起動

問題2: 提案の質が低い

  • 解決方法:
    • より具体的なコメントを書く
    • 変数名や関数名を分かりやすくする
    • プロジェクトの文脈を明確にする

問題3: 動作が重い

  • 解決方法:
    • 大きなファイルでの使用を控える
    • 不要な拡張機能を無効化
    • エディタを再起動

6.2 設定のカスタマイズ

// VS Code settings.json
{
  "github.copilot.enable": {
    "*": true,
    "markdown": false,
    "plaintext": false
  },
  "github.copilot.inlineSuggest.enable": true,
  "github.copilot.advanced": {
    "secret_key": "github_copilot_key",
    "length": 500,
    "temperature": "",
    "top_p": "",
    "stop": {
      "*": ["\n\n\n"]
    }
  }
}

7. 料金とプラン

7.1 個人プラン

  • GitHub Copilot Individual: $10/月 または $100/年
  • 個人開発者向け
  • 全機能利用可能

7.2 ビジネスプラン

  • GitHub Copilot Business: $19/ユーザー/月
  • 組織向け
  • 管理機能、セキュリティ機能付き

7.3 学生・教育者向け

  • GitHub Student Developer Packに含まれる
  • 認証済み学生は無料利用可能

7.4 オープンソース貢献者

  • 人気オープンソースプロジェクトのメンテナー向け無料プラン

8. セキュリティとプライバシー

8.1 データの取り扱い

送信されるデータ

  • 現在編集中のファイル内容
  • 関連ファイルの一部
  • カーソル位置とコンテキスト

送信されないデータ

  • プライベートリポジトリの全内容
  • 個人情報(適切に設定した場合)

8.2 セキュリティ設定

// セキュリティを重視した設定
{
  "github.copilot.enable": {
    "*": true,
    "secrets": false,
    "credentials": false
  }
}

8.3 企業利用時の注意点

  • ソースコードの機密性確認
  • ライセンス条項の遵守
  • 社内ガイドラインの策定
  • 監査ログの確認

9. 応用テクニック

9.1 プロンプトエンジニアリング

テクニック1: 段階的な指示

# Step 1: データベースに接続
# Step 2: ユーザーテーブルからデータを取得
# Step 3: パスワードをハッシュ化
# Step 4: 新しいユーザーをinsert
def create_user(username, email, password):

テクニック2: 例示による学習

// 例: convertToSlug("Hello World") → "hello-world"
// 例: convertToSlug("GitHub Copilot Tutorial") → "github-copilot-tutorial"
function convertToSlug(text) {

9.2 コード生成パターン

パターン1: CRUD操作

class UserRepository:
    # Create: 新しいユーザーを作成
    def create_user(self, user_data):
    
    # Read: IDでユーザーを取得
    def get_user_by_id(self, user_id):
    
    # Update: ユーザー情報を更新
    def update_user(self, user_id, user_data):
    
    # Delete: ユーザーを削除
    def delete_user(self, user_id):

パターン2: デザインパターン実装

# Singletonパターンの実装
# インスタンスが1つだけ作成されることを保証
class DatabaseConnection:

9.3 リファクタリング支援

既存コードの改善

# 以下のコードをより読みやすく、保守性の高いコードにリファクタリング
def process_data(data):
    result = []
    for item in data:
        if item['status'] == 'active' and item['score'] > 50:
            result.append(item['name'].upper())
    return result

10. まとめとベストプラクティス

10.1 効果的な活用のコツ

1. 明確なコメントを書く

  • 関数の目的、引数、戻り値を明記
  • 処理の流れを段階的に記述
  • 具体例を含める

2. 適切な命名規則を使用

  • 関数名・変数名から意図が分かるように
  • 一般的な命名規則に従う
  • 省略語は避ける

3. 小さな単位で開発

  • 大きな関数は分割して実装
  • 一度に1つの機能に集中
  • 段階的に機能を追加

10.2 注意すべきポイント

1. 生成コードの検証

  • 必ず生成されたコードを確認
  • テストを実行して動作確認
  • セキュリティホールがないかチェック

2. ライセンスの確認

  • オープンソースコードの使用時は注意
  • 著作権に関する問題を避ける
  • 企業利用時は法務部門と相談

3. 依存関係の管理

  • 不要なライブラリの追加を避ける
  • セキュリティアップデートの確認
  • バージョン互換性の検証

10.3 学習の継続

1. 新機能の追跡

  • GitHub Copilotの更新情報をフォロー
  • 新しいエディタサポートの確認
  • ベータ機能のテスト参加

2. コミュニティ参加

  • GitHub Discussions での情報交換
  • Stack Overflow での質問・回答
  • ブログやYouTubeでの学習

3. 実践的な練習

  • 様々なプログラミング言語での使用
  • 異なるプロジェクトタイプでの活用
  • チーム開発での協調利用

最後に

GitHub Copilotは強力な開発支援ツールですが、あくまで補助ツールであることを忘れずに使用しましょう。プログラミングの基礎知識、コードレビューのスキル、そして問題解決能力は依然として重要です。

Copilotを効果的に活用することで、より創造的で価値の高い開発作業に集中できるようになります。継続的な学習と実践を通じて、AI時代の開発者としてスキルを磨いていきましょう。

Happy Coding with GitHub Copilot! 🚀

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment