Copilot を使用してコードをリファクタリングする方法

AI 製品は、現代のソフトウェア開発やコーディングに革命をもたらしました。AI を使用すると、プログラミング コードを自動的に生成し、コード リファクタリングによってそれらを修正して最適化できます。この記事では、リファクタリング プロセスについて説明し、Copilot を使用してコードをリファクタリングする方法について説明します。

コード リファクタリングとは何ですか?

ソフトウェアまたはアプリケーション開発において、コード リファクタリングとは、元の機能を維持しながらプログラム ソース コードを再構築または再編成することを指します。このプロセスは、ソフトウェアの構造と設計を改善し、複雑さを軽減することを目的としています。 AI をコード リファクタリングに統合すると、ソフトウェア パフォーマンスの問題を迅速に特定し、複雑なアルゴリズムを緩和して全体的な効率を向上させることができます。

Copilot はコードのリファクタリングにどのように役立ちますか?

コードの特定のセクションを分析し、複雑さを軽減するためにその構造をよりクリーンでユーザーフレンドリーな形式に改善するための提案を提供できます。提供される推奨事項は、次の内容に基づいています:

  • 既存のコードの問題を特定する:Copilot はコード ファイル全体をスキャンし、重複コード、未使用または不明な変数などを指摘することによってリファクタリングされるセクションまたは領域を強調表示します。
  • 効率的なオプションを提案する:Copilot はコードをリファクタリングするときに、既存のコードを分析し、同じ結果を生み出すことができるが、コードをよりクリーンに見せる効率的な代替案を提案します。これらの推奨事項には、変数、メソッド、およびデータ構造の命名に効率的な言語の使用が含まれます。
  • 保守可能なコードを確保する:リアルタイムのフィードバックにより、バグの挿入を回避できます。提案は一般的に、適切なコード構造の維持に役立つプログラミング原則のベスト プラクティスに基づいており、必要に応じて他の人が同じコードを理解して変更しやすくします。

Copilot を使用してコードをリファクタリングする方法

リファクタリングに Copilot を使用するには、最初に対象の言語 (VS コード、Python など) の GitHub Copilot 拡張機能をインストールできます。たとえば、Python で記述されたソース コードを再構築する場合は、次のようにして Copilot プラグインをインストールできます。

  • 統合開発環境または IDE (JavaScript または Python) で設定オプションを開くをクリックします。
  • 左側のプラグインオプションをクリックします。
  • マーケットプレイスオプションをクリックし、GitHub Copilotプラグインを検索します。
  • 見つけたら、インストールをクリックしてプラグインをインストールします。

  • インストールが完了すると、IDE は再起動を求めます。再起動後、IDE を開き、ツール -> GitHub Copilot -> GitHub にログインをクリックします。

  • ログインに成功すると、Copilot を使用できるようになります。
  • Copilot を使用するには、コードの記述中に以下のショートカットを使用できます
アクションWindows/LinuxMacOS
インライン提案をトリガーするAlt+\Option+\
次の提案を表示するAlt+]Option+]
前の提案を表示するAlt+[Option+[
提案を受け入れるTabTab
インライン提案を削除するEscEsc
新しいタブですべての提案を表示するAlt+EnterAlt+Enter

例 1: 複雑なコードを簡略化する

Copilot のリファクタリング機能を使用して複雑なコードをどのように簡略化できるかを示すために、以下のコード スニペットを考えてみましょう。ここでは、理解しやすくするために、より大きなプログラムの一部のみを考慮しています:

リファクタリング前

    public void processOrder(Order order) {
         // ... further codes
         if (order.isReadyForProcessing()) {
             // process the order
         }
         //... further codes
     }

Copilot によるリファクタリング後

    public void processOrder(Order order) {
         // ...further codes
         processReadyOrder(order);
         // ...further codes
     }
   private void processReadyOrder(Order order) {
         if (order.isReadyForProcessing()) {
             // process the order
         }
     }

上記の例では、最初のコード セット (リファクタリング前) にはprocessOrderという関数またはメソッドが含まれており、特定の注文を処理するための手順を実行します。注文が処理される前に、条件分岐 IF ステートメントは、if (order.isReadyForProcessing())関数を使用して、注文が処理の準備ができているかどうかをチェックします。このコード セットでは、処理ロジックはプライマリ関数の中に含まれているため、モジュール性が低くなります。

次のコード スニペットでは、注文を処理するprocessOrder関数があります。ただし、注文が処理の準備ができているかどうかをチェックし、準備ができた注文を処理するロジックは、processReadyOrderという別の関数に移動されています。これにより、各メソッドを分離してコードの明確さとモジュール性を確保できます。

例 2: 変数の名前変更

リファクタリング前

   def calculate_area(l, w):
return l * w

Copilot によるリファクタリング後

 def calculate_area(length, width):
 return length * width

しかし、リファクタリング後、変数「l」と「w」は length と breadth に置き換えられました。これは、リファクタリングの重要な機能である変数の名前変更によって、コードの明確さが向上しました。

Copilot はコードの再構築に役立ちますが、誤った提案、過度の依存、時代遅れのコードのリファクタリングなど、いくつかの制限があります。提案を受け取ったら、すべてのマニュアル チェックを実施し、適切なプロンプトを使用してください。

GitHub Copilot はどのようなデータでトレーニングされましたか?

GitHub Copilot は、GitHub 上のパブリック リポジトリ内のコードを含む、パブリックに利用可能なソースからの自然言語テキストとソース コードでトレーニングされました。GitHub、OpenAI、および Microsoft が開発した生成 AI モデルによって強化されています。

Copilot と互換性のあるプログラミング言語は何ですか?

Github Copilot はさまざまな言語をサポートしていますが、特に JavaScript、TypeScript、Ruby、Python、Go、C++、および C# でうまく機能します。