GitHub Copilot チャット モードを使用してコードをリファクタリングする

完了

GitHub Copilot を使用して、コードベース内のコードをリファクタリングできます。 チャット ビュー モードを使用して、コード リファクタリング タスクを分析、計画、実装できます。 チャット ビュー モードでは、チャットの会話を管理し、GitHub Copilot の機能にアクセスするためのユーザー フレンドリなインターフェイスが提供されます。 チャット ビューには、次のチャット モードが含まれています。

  • 質問モード: 質問モードを使用して、コードベースまたはテクノロジの概念について質問します。 ask モードでコードの説明を使用したり、リビジョンや修正プログラムを提案したり、コードベースに関連する情報を提供したりできます。
  • 編集モード: 編集モードを使用して、コードベース内の複数のファイル間で編集を行います。 編集モードを使用すると、コードのリファクタリング、コメントの追加、コードへのその他の変更を行うことができます。
  • エージェント モード: エージェント モードを使用して、エージェント コーディング ワークフローを開始します。 エージェント モードを使用して、コマンドの実行、コードの実行、ワークスペース内の他のタスクの実行を行うことができます。

Von Bedeutung

エージェント モードを使用する場合、GitHub Copilot は 1 つのタスクを完了するために複数の Premium 要求を行う場合があります。 Premium 要求は、ユーザーが開始したプロンプトと、Copilot がユーザーに代わって実行するフォローアップ アクションで使用できます。 使用される Premium 要求の合計数は、タスクの複雑さ、関連するステップの数、選択したモデルによって異なります。

ask モードを使用してコードをリファクタリングする

ask モードを使用すると、コーディング タスクのヘルプを取得したり、複雑な概念を理解したり、コードを改善したりできます。 Ask モードは、Copilot Chat との対話型の会話用に設計されています。 質問、説明の取得、提案の要求をリアルタイムで行うことができます。

  1. 質問モードでチャットビューを開きます。

  2. チャットにコンテキストを追加します。

    ask モードでは、チャット参加者、スラッシュ コマンド、チャット変数がサポートされます。 @workspaceチャット参加者または#codebaseをチャットに追加して、ファイルやフォルダーと共にコンテキストを提供できます。

  3. リファクタリングするコードと行う変更を理解するのに役立つ質問をします。

    たとえば、OAuth を使用して現在のメソッドを更新する方法を、既存の認証コードを理解できるように GitHub Copilot に依頼できます。

  4. 実装する更新プログラムを説明するプロンプトを作成します。

    プロンプトには、実装するコード機能の説明が含まれている必要があります。 例えば次が挙げられます。

    @workspace I need to refactor the `EnumHelper` class and remove any code that uses reflection. Use static dictionaries to supply enum description attributes. Use a separate dictionary for each enum. The dictionaries should use values from the `LoanExtensionStatus.cs`, `LoanReturnStatus.cs`, and `MembershipRenewalStatus.cs` files. Explain how to update the EnumHelper class using dictionaries and show me the updated code.
    
  5. チャット ビューで推奨されるコードを確認します。

    チャット ビューに表示される応答には、機能の実装に使用できるコード スニペットが含まれます。 更新されたプロンプトを入力して、コードを絞り込んだり、詳細を確認したりできます。

  6. 推奨されるコードを実装するには、コード スニペットの上にマウス ポインターを置き、[ 適用]、[ 挿入]、および [コピー ] オプションを選択します。

    • 適用: エディターの現在のファイルにコード候補を適用します。
    • 挿入: エディターの現在のカーソル位置にコード候補を挿入します。
    • コピー: コード候補をクリップボードにコピーします。
  7. リファクタリングされたコードをテストして、エラーなしで実行され、期待される結果が生成されることを確認します。

編集モードを使用してコードをリファクタリングする

編集モードは、Copilot が提案する編集をより細かく制御する場合に使用できます。 編集モードでは、Copilot が変更できるファイルを選択し、イテレーションごとに Copilot にコンテキストを提供し、推奨される編集内容を受け入れるかどうかを決定します。

ヒント

変更を開始する前に、質問モードを使用してリファクタリングに関心のあるコードを評価し、オプションを評価します。 編集モードを使用して、コードに変更を加えることができます。

  1. 編集モードでチャット ビューを開きます。

  2. チャットにコンテキストを追加します。

    編集モードでは、チャット参加者はサポートされていません。 #codebaseを使用し、チャットにファイルを追加して、ワークスペース コンテキストを指定します。

  3. 実装するコード機能を説明するプロンプトを作成します。

    プロンプトには、実装するコード機能の説明が含まれている必要があります。 例えば次が挙げられます。

    
    #codebase I need to refactor the `EnumHelper` class and remove any code that uses reflection. Use static dictionaries to supply enum description attributes. Use a separate dictionary for each enum. The dictionaries should use values from the `LoanExtensionStatus.cs`, `LoanReturnStatus.cs`, and `MembershipRenewalStatus.cs` files.
    
    
  4. コード エディターで、推奨される編集内容を確認します。

  5. 推奨される編集内容を受け入れるか破棄します。

    上下の矢印を使用して、編集内容間を移動できます。 各編集に表示されるポップアップ メニューを使用して、推奨される編集を個別に保持 (承諾) または元に戻す (破棄) できます。 エディター タブ (またはチャット ビュー) の下部にある [保持 ] ボタンと [元に戻す ] ボタンを使用して、すべての編集を一度に承諾または拒否することもできます。

  6. リファクタリングされたコードをテストして、エラーなしで実行され、期待される結果が生成されることを確認します。

エージェント モードを使用してコードをリファクタリングする

コードのリファクタリング プロセスを自動化する場合は、エージェント モードを使用できます。 エージェント モードでは、Copilot は、ユーザーに代わってアクションを実行できる自律エージェントとして機能します。 Copilot に特定のタスクの実行を依頼すると、要求に基づいてコードが生成されます。

エージェント モードでは、自然言語を使用して高度なタスクを指定し、Copilot が要求について自律的に推論し、必要な作業を計画し、変更をコードベースに適用することができます。 エージェント モードでは、コード編集とツール呼び出しの組み合わせを使用して、指定したタスクを実行します。 要求を処理する際に、編集の結果とツールによる処理が監視され、発生した問題が解決されるよう繰り返し調整が行われます。

Von Bedeutung

エージェント モードを使用する場合、GitHub Copilot は 1 つのタスクを完了するために複数の Premium 要求を行う場合があります。 Premium 要求は、ユーザーが開始したプロンプトと、Copilot がユーザーに代わって実行するフォローアップ アクションで使用できます。 使用される Premium 要求の合計数は、タスクの複雑さ、関連するステップの数、選択したモデルによって異なります。

  1. エージェント モードでチャット ビューを開きます。

  2. GitHub Copilot で実行するタスクを説明するプロンプトを作成します。

    2 つ以上のプロセス/手法を使用して同じタスクを実行するコード プロジェクトがあるとします。 一貫性、保守容易性、パフォーマンスを向上させるために、1 つのアプローチを使用してコードをリファクタリングするように GitHub Copilot に依頼できます。

    例えば次が挙げられます。

    
    Review the LINQ code used in the JsonData and JsonLoanRepository classes. Refactor the methods in the JsonPatronRepository class using LINQ queries. Ensure that existing code functionality is maintained.
    
    
  3. エージェント モードでは、複数のツールを呼び出してさまざまなタスクを実行できます。 必要に応じて、[ツール] アイコンを選択して、要求への応答に使用できるツールを構成します。

  4. ツールの呼び出しとターミナル コマンドを確認します。

    Copilot は、ターミナル コマンドまたは組み込まれていないツールを実行する前に、続行の確認を要求します。 ツールはコンピューター上でローカルに実行され、ファイルまたはデータを変更するアクションを実行する可能性があるため、確認が必要です。

  5. Copilot は、コード編集とターミナル コマンドの問題と問題を検出し、それらを解決するためのアクションを繰り返し実行します。

    Von Bedeutung

    Copilot は自己修復が可能ですが、問題を単独で解決できるとは限りません。 プロセスを一時停止し、さらに多くのコンテキストを提供して、Copilot が問題を理解できるようにすることができます。 プロセスを取り消して、新しいプロンプトからやり直すこともできます。

  6. 推奨される編集内容を確認し、提案された編集内容を承諾または破棄します。

  7. リファクタリングされたコードをテストして、期待される結果が生成されることを確認します。

    エージェント モードでは問題をそれ自体で解決する必要がありますが、コードをテストして期待どおりに動作することを確認する必要があります。

    チャット ビューの [元に戻す ] ボタンを使用して、エージェント モードで行った編集を元に戻すことができます。 エディターの [元に戻す ] オプションを使用して、エージェント モードによって行われた変更を元に戻すこともできます。

編集モードよりもエージェント モードを選択するタイミング

編集モードとエージェント モードのどちらかを選択するには、次の条件を検討してください。

  • 編集範囲: エージェント モードは、編集する関連コンテキストとファイルを自律的に決定します。 編集モードでは、コンテキストを自分で指定する必要があります。
  • タスクの複雑さ: エージェント モードは、コードの編集とツールまたはターミナル コマンドの呼び出しの両方を必要とする複雑なタスクに適しています。
  • 期間: エージェント モードでは複数のステップを使用して要求を処理するため、応答の生成に時間がかかる場合があります。 たとえば、編集する関連するコンテキストとファイルを決定するには、アクションの計画などを決定します。
  • 自己復旧: エージェント モードでは、生成された編集の結果が評価され、中間の問題を解決するために複数回反復処理される場合があります。
  • 要求クォータ: エージェント モードでは、タスクの複雑さに応じて、1 つのプロンプトでバックエンドへの要求が多数発生する可能性があります。

概要

GitHub Copilot を使用して、コードベース内のコードをリファクタリングできます。 チャット ビュー モードを使用して、コード リファクタリング タスクを分析、計画、実装できます。 チャット ビューには、Ask モード、編集モード、エージェント モードの 3 つのチャット モードが含まれています。 ask モードを使用して、コードベースまたはテクノロジの概念について質問できます。 編集モードを使用して、コードベース内の複数のファイル間で編集を行うことができます。 エージェント モードを使用して、エージェント コーディング ワークフローを開始できます。