GitHubは「GitHub Copilot」を使ったコードリファクタリングについて紹介するブログエントリを公開した。
この記事は会員限定です。会員登録(無料)すると全てご覧いただけます。
GitHubは2025年2月11日(米国時間)、「GitHub Copilot」を使ったコードリファクタリングについて紹介するブログエントリを公開した。同社は以下のように説明している。
リファクタリングとは、プロジェクトにデジタル版の大掃除を施すようなものだ。関数、クラス、モジュールをブラッシュアップし、単なる整理整頓ではなく、外部の動作を変更することなくコードをより効率的で保守しやすく、読みやすくする作業のことをいう。
標準的なリファクタリングの手法として、以下のようなものがある。
リファクタリングは単なる整理ではない。コードベースをより堅牢(けんろう)でスケーラブルにし、作業しやすくすることも重要である。GitHub Copilot を使用すると、これをより速く、より少ない手間で実施できる。
コードをリファクタリングする前に、そのコードがどのように機能するかを理解しておく必要がある。コードの動作を知らなければ、「改善」のつもりで行った変更が、意図しない動作を引き起こす可能性がある。
以下のメソッドを例に挙げる。
public String getSound(String animal) { if (animal == null) { System.out.println("Oops! A null animal?"); } else if (animal.equalsIgnoreCase("Dog")) { return "Bark"; } else if ( animal.equalsIgnoreCase("Cat")) { return "Meow"; } else if ( animal.equalsIgnoreCase("Bird")) { return "Tweet"; } return "Unknown"; }
このコードを見て、「switch文を使うべきだ」と考える人もいるだろう。それはリファクタリングの一例といえる。しかし、そう判断するためには、「if」文と「switch」文の動作を理解している必要がある。このコードは、条件に一致するものが見つかるまで「if」文を順番に評価し続け、最終的に該当するものがなければ“Unknown”を返す。この動作を理解して初めて、そのような提案が可能となる。
コードベースが複雑になり、複数のファイルをまたいで関数が呼び出されるようになると、さらに複雑になってしまう。そこでCopilotが役に立つ。
Copilot Chatにコードの動作の説明を求めるには、平易な言葉で質問するか、「/explain」コマンドを使用する。Copilotが調べる範囲を限定するには、問い合わせの前に統合開発環境(IDE)でコードを選択するか、「#file」を使用して特定のファイルを指定する。Copilotにコードのコメントを追加するように依頼することもできる。
例えば、以下のようなプロンプトを利用できる。
リファクタリングするコードを完全に理解するまで、Copilot Chatを使用してコードベースを分析、説明する必要がある。
何事もそうだが、最初は小さく始める方がよい。コードのリファクタリングを始める場合は、シンプルなアプローチを取るべきだ。プロジェクト内でCopilot Chatを開き、「このコードをどのように改善すればよいか?」と尋ねる。もしくは、GitHub Copilotにコードの説明を依頼する場合と同様に、特定のコードをハイライトするか、「#file」を使って対象ファイルを指定すると、より正確な提案を得られる。
例えば、以下のようなプロンプトが考えられる。
Copilotは指定された内容に基づいてコードの改善点を提案する。これはリファクタリングの第一歩として有効だが、Copilotに何らかのガイダンスを与えると、さらに多くのことが可能になる。
生成AI(人工知能)を搭載した開発ツールを活用する際は、プロンプトにコンテキストを追加すると、求める結果を得られる可能性が高くなる。ツールに実行させたいことを具体的に指定することで、より適切な提案を得ることができる。
これは、何かをコーディングするように言われたとき、アイデアや疑問が多過ぎてどこから始めればいいのかよく分からない場合と似ている。そうではなく、具体的に「リストをソートするクラスをコーディングしてほしい」と言われた場合は、目の前のタスクに集中できる。
上記のプロンプトは、あまり具体的な内容やコンテキストを提供していないため、Copilotはコードを改善する可能性のあるあらゆる方法を探ることになる。その利点として、考えもしなかった選択肢が表示される可能性がある。その半面で、提案された解決策の中には、特定の懸念に対処できないものもあるかもしれない。
GitHub Copilotのようなツールは、コードの提案やコードのリファクタリングの方法を見つけるのに非常に優れている。しかし、他の生成AIと同様に、Copilotが提示する提案を受け入れる前に、必ず慎重に確認する必要がある。GitHub Copilot を「アシスタント」と呼ぶのには理由がある。それは スキルの代わりではなく、能力を増強するためのものだからだ。
Copyright © ITmedia, Inc. All Rights Reserved.