IntelliJ IDEA

IntelliJ IDEA での AI リファクタリング

Read this post in other languages:

整然とした効率の良いコードは紛れもなくソフトウェア開発の成功を導く礎となります。 しかし、コードを迅速に改良する能力もますます重要となっています。

幸い、最近導入された JetBrains の AI Assistant を使えば、どちらの要求にも応えることができます。 この記事では、いくつかの簡単な AI アクションとチャットプロンプトを通じて冗長なコードや複雑すぎるコード、または不正確なコードを洗練された正確なコードに改善する方法を紹介します。

始める前に、リファクタリングを適用する際は必ずコードをテストするようにしてください。 すべてが期待通りに動作することを確認するには、実際にテストするのが一番だからです。

コードの説明

この記事では、あるアルゴリズムをサンプルコードとして使用します。 一見すると、デモプロジェクトでは計算とフィルタリングが行われていると判断できますが、このアルゴリズムの実際の目的はすぐに明確ではありません。 AI Assistant を使用して、このプロジェクトに関する情報をもっと引き出してみましょう。 こうすることで、動作の全体像をより明確に把握し、後でコードの可読性を向上させるための決定を下す準備ができます。

まずは AI Assistant のショートカットをセットアップしましょう。 Preferences(環境設定)/Settings(設定)| Keymap(キーマップ)に移動し、検索フィールドに「AI Assistant」と入力します。 いいですね! 右クリックして、Add Keyboard Shortcut(キーボードショートカットの追加)を選択します。 このデモでは、macOS の ⌃⇧A を使用しましょう。

ここからが面白いところです。 プロジェクトの一番最初のクラスにキャレットを置いて割り当てたばかりのショートカットを押し、AI アイコンを選択して Explain Code(コードの説明)をクリックします。 すると、AI Assistant がこのプロジェクトの作成目的を説明し、意味のあるコードの箇所ごとにコメントし、さらには改善のヒントを示します。

この情報により、この記事の目的を達成するために Convex Hull アルゴリズムが実装されたプロジェクトを調査することになることが理解できました。

このコードの段階的な説明が必要ない場合は、チャットで AI Assistant に説明を単純化するように依頼できます。 プロジェクトのロジックが簡単に説明されるようになります。

最初のリファクタリング

コードをよく理解したので、AI Assistant が整然とした可読性に優れたコードを実現するために提供できる機能を見てみましょう。

TheAlgorithm クラスにキャレットを置き、⌃⇧A を押して Suggest Refactoring(リファクタリングの提案)を選択します。 以下では、AI Assistant がいくつかの改善点を発見しているのがわかります。

また、提案された変更が実装された場合のコードの見た目も示しています。 このコードを含むブロックには、See Diff and Apply(diff を確認して適用)ボタンが表示されています。 それをクリックすると、変更が適用された新しいタブがエディターで開きます。 このタブでは提案されたコードを確認し、その変更がすべて適切であると判断した場合には受け入れることができます。

第 2 段階のリファクタリング

この例では、AI Assistant が提案したクラスとメソッドの名前の変更をすぐに受け入れることに慎重になっています。プロジェクト内の別の場所でこれらの参照が更新されない可能性があるためです。 そこで、まずはクラスとメソッドの名前を変更しないままにするように依頼します。

生成された結果をさらに改善する方法が浮かんだ場合は、新しいプロンプトを作成する代わりに既存のプロンプトを編集することをお勧めします。すると、すでに存在するものより一貫性のある結果が生成されるようになります。 これを行うには、ケバブメニュー(プロンプトの右隅にある縦三点リーダー)を押して Edit(編集)を選択します。

コードを修正したら、これらの変更を適用しましょう。

では、名前の変更はどうしましょうか。  この時点ではすぐに AI Assistant の提案を実装しないことにしましたが、それでも名前を変更するのが賢明だと思っています。 AI が従来の Rename(名前の変更)リファクタリングにどのように関わっているのかを見てみましょう。 名前を変更したいクラスにキャレットを置き、macOS の ⇧F6 を押します(Windows の場合は Shift+F6)。 IDE は提案を示すだけでなく、より有意義なオプションには AI Assistant アイコンも表示しているのがわかります。 いずれか 1 つを選択し、IDE がプロジェクト全体のクラス名をシームレスに更新するのを確認しましょう。

素晴らしいですね。リファクタリングによってコードがさらに改善されました! ただし、必ずテストを実施してすべてが正しく動作することを確認してください!

全体像の把握

AI Assistant には、単なるコードリファクタリングのヒント以上のものを提供する Find Problems(問題の検出)という便利なアクションも備わっています。 コードの動作に対する変更など、さまざまな改善アイデアを提案してくれます。

その機能をこのコードでテストし、どのような提案が行われるかを見てみましょう。

このツールはコードの可読性や構成だけでなく、コードの全体的な品質を向上させることを目指す場合に特に役立ちます。

Find Problems(問題の検出)アクションの動作は Suggest Refactoring(リファクタリングの提案)とは若干異なっており、See Diff and Apply(diff を確認して適用)ボタンでは無加工のままコードに直接適用できるような変更は提供しません。 推奨されたコードが要件を満たす場合には、それを手動でコピーしてエディターに貼り付ける必要があります。

今回はこれで以上です。 AI 機能を使用したリファクタリングの簡単なデモにご満足いただけたでしょうか。紹介したようなリファクタリングをご自身でも使用し、絵に描いたような完璧なコードに仕上げていただければ幸いです!

オリジナル(英語)ブログ投稿記事の作者:

Ryuji Owan

Irina Mariasova

image description

Discover more