Back

試すべき高度なGitHub Copilot機能

試すべき高度なGitHub Copilot機能

すでにGitHub Copilotをコード補完に使用していると思いますが、最も強力な機能を活用できているでしょうか?多くの開発者は基本的な自動補完で止まってしまいますが、Copilotの高度な機能は、コードの記述、デバッグ、保守の方法を変革することができます。

この記事では、毎週数時間を節約できる高度なGitHub Copilot機能について探求します:マルチファイル編集、コンテキストエージェント、音声コマンド、そして単純なコード提案をはるかに超えた自動化ワークフローです。

重要なポイント

  • Copilot Editsは自然言語による説明を通じて複数ファイルの同時変更を可能にします
  • コンテキストエージェント(@workspace、@terminal、@vscode)はドメイン固有のサポートを提供します
  • スラッシュコマンド(/tests、/docs、/fix、/explain)は一般的な開発タスクを高速化します
  • 音声入力と自動化されたGitワークフローは反復的な作業を効率化します

Copilot Editsによるマルチファイル編集

最も活用されていない高度なGitHub Copilot機能の一つがCopilot Edits—複数のファイルを同時に変更する機能です。リファクタリングや新機能の実装時に各ファイルを手動で更新する代わりに、変更内容を一度説明するだけでCopilotに残りの作業を任せることができます。

VS CodeでCopilot Editsを使用するには:

  1. Copilot Chatパネルを開く
  2. 「Open Copilot Edits」を選択
  3. 変更内容を自然言語で説明

例えば、ExpressからFastifyに移行する際、「すべてのルートハンドラーをFastify構文に更新し、app.jsのサーバー初期化を更新してください」とプロンプトできます。Copilotは影響を受けるすべてのファイルを特定し、変更のプレビューを表示し、修正を個別に承認または拒否できるようにします。

この機能が特に威力を発揮するのは:

  • Reactアプリケーション全体でのコンポーネント名変更
  • コードベース全体でのAPIエンドポイント更新
  • 新しいデザインパターンの一貫した実装

対象を絞ったサポートのためのコンテキストエージェント

GitHub Copilotのコンテキストエージェント(@workspace@terminal@vscode)は、AIの範囲を特定のドメインに絞ることで、焦点を絞ったサポートを提供します。これらのエージェントはコンテキストに基づいて応答をフィルタリングし、より正確で関連性の高い提案を提供します。

@workspaceエージェント

@workspaceエージェントはプロジェクト構造全体を分析します。以下の用途に使用できます:

  • 新しい関数やモジュールの最適な配置場所を見つける
  • ファイル間の依存関係を理解する
  • プロジェクト固有のアーキテクチャ推奨事項を取得する

例:@workspace 認証ミドルウェアはどこに実装すべきですか?

@terminalエージェント

@terminalエージェントは、エディターを離れることなくコマンドライン操作を支援します:

  • 複雑なgitコマンドを生成
  • デプロイメントスクリプトを作成
  • シェルエラーをデバッグ

例:@terminal 先週のコミットをcherry-pickするにはどうすればよいですか?

@vscodeエージェント

@vscodeエージェントはVS Code固有のガイダンスを提供します:

  • 設定と拡張機能を構成
  • カスタムキーバインディングを作成
  • 開発環境を最適化

迅速な開発のためのスラッシュコマンド

スラッシュコマンドは一般的な開発タスクを高速化します。これらの事前定義されたアクションは反復的なプロンプトを排除します:

  • /tests - 選択したコードの包括的な単体テストを生成
  • /docs - JSDocやインラインドキュメントを自動作成
  • /fix - 問題のあるコードセクションをデバッグして修復
  • /explain - 複雑なロジックの詳細な説明を取得

/testsによる高度なテスト

/testsコマンドは基本的なテスト生成を超えます。テストフレームワークとパターンを指定できます:

/tests use Jest with React Testing Library for this component

これにより、見落としがちなエッジケースやエラーシナリオを含む、チームの規約に従ったテストが生成されます。

音声入力と自然言語処理

GitHub Copilotのインラインチャットは音声入力をサポートしており、以下の場面で理想的です:

  • コードをレビューしながら複雑なリファクタリングを説明
  • 会議や議論中にコードを生成
  • 反復性ストレス障害を持つ開発者のアクセシビリティ

インラインチャット(MacではCmd+I、WindowsではCtrl+I)でマイクアイコンをクリックし、リクエストを話します。AIは技術用語を含む自然言語を効果的に処理します。

自動化されたコミットメッセージとGitワークフロー

ソースコントロールパネルのスパークル(✨)アイコンを探してください。これをクリックすると、実際の変更に基づいてコンテキストに応じたコミットメッセージが生成され、従来のコミット標準に従います。

コミットメッセージを超えて、Copilotは以下のことができます:

  • 包括的なプルリクエストの説明を生成
  • プロジェクトに合わせた.gitignoreファイルを作成
  • ブランチ命名規約を提案

実際のワークフロー例

本番環境の問題のデバッグ

デバッグ時は、複数の機能を組み合わせます:

  1. /explainを使用して問題のあるコードを理解
  2. @workspaceを適用してファイル間のデータフローを追跡
  3. /fixを使用してソリューションを実装
  4. /testsでテストを生成してリグレッションを防止

フレームワークのアップグレード

React 17から18へのアップグレード:

  1. Copilotにコードベースの破壊的変更を特定してもらう
  2. Copilot Editsを使用して複数のコンポーネントファイルを更新
  3. 互換性を確保するための移行テストを生成

API開発

新しいREST APIの構築:

  1. #fileコンテキストを使用してOpenAPI仕様を参照
  2. 適切な検証を含むルートハンドラーを生成
  3. /docsで包括的なドキュメントを作成
  4. /testsを使用して統合テストを構築

コンテキストによる生産性の最大化

#file変数は、会話全体でコンテキストを維持するために特に強力です。特定のファイルを参照して:

  • 一貫したコードパターンを生成
  • 関連機能を作成
  • アーキテクチャ決定を維持

例:#file:api/schema.js これらのスキーマに一致するTypeScriptインターフェースを作成

まとめ

これらの高度なGitHub Copilot機能は、基本的なコード補完を大幅に超えた飛躍を表しています。マルチファイル編集、コンテキストエージェント、自動化ワークフローをマスターすることで、反復的なタスクを削減し、複雑な問題の解決に集中できます。まず一つの機能—おそらく次のリファクタリングタスクでのCopilot Edits—から始めて、徐々に他の機能を日常のワークフローに組み込んでいきましょう。

よくある質問

はい、Copilot EditsはPython、Java、C++、TypeScript、Goを含むGitHub Copilotがサポートするすべての言語で動作します。マルチファイル編集機能は、プロジェクトの言語とフレームワークの規約に自動的に適応します。

現在、コンテキストエージェントは主にVS Codeで利用可能です。JetBrains IDEやVisual Studioでは一部のエージェントに限定的なサポートがあります。特定のエージェントの利用可能性については、IDEのCopilotドキュメントを確認してください。

Copilotは実際のコード変更を分析して、従来のコミット標準に従った関連性のあるコミットメッセージを生成します。一般的に正確ですが、チームの特定の規約に合わせて確認・調整し、不足しているコンテキストを追加する必要があります。

Understand every bug

Uncover frustrations, understand bugs and fix slowdowns like never before with OpenReplay — the open-source session replay tool for developers. Self-host it in minutes, and have complete control over your customer data. Check our GitHub repo and join the thousands of developers in our community.

OpenReplay