Amazon Web Services ブログ
Eclipse での Amazon Q Developer によるインラインチャットの発表
本記事は 2025 年 4 月 10 日に公開された “Announcing inline chat in Eclipse with Amazon Q Developer” を翻訳したものです。
本日 (原文公開日 : 2025/4/10)、 Amazon Q Developer は Eclipse IDE でのインラインチャット機能(プレビュー版)をリリースしました。この記事では、既存コードのリファクタリングからパフォーマンスが重要なメソッドの最適化まで、この強力な新機能を使って Java 開発作業を効率化する方法をご紹介します。Eclipse のベテランユーザーでも、これから始める方でも、 Amazon Q Developer の高度な AI を活用したツールがソフトウェア開発ライフサイクル全体を通じて生産性を向上させる方法をご覧いただけます。
背景
長年の Java 開発者として、昨年 Amazon Q Developer が Eclipse に統合されたときにとても興奮しました。私は Amazon Q Developer をしばらく使用していますが、これによって開発方法が完全に変わりました。 Amazon Q Developer が 2022 年にインライン提案機能を最初にリリースしたとき、コーディング作業がどれだけ加速できるかに驚きました。しかし、2023 年に完全なチャットインターフェイスが追加されたことで、さらに次のレベルへと進化しました。そして 2024 年には、新しいインラインチャット機能によってコードをその場で編集・リファクタリングできるようになりました。しかし、今日(原文公開日 : 2025/4/10)までインラインチャットは Eclipse では利用できませんでした!
Amazon Q Developer のチャットインターフェイスは、特定のタスクをどう進めればいいのかわからないときに頼りになります。解決しようとしている問題や理解しようとしている概念を説明すると、正しい方向へ導くための、詳細なコンテキストに基づいた回答が得られることが、とても気に入っています。AI が生成するコードスニペットと説明は、新しいことを学んだり複雑な課題に取り組んだりするときに、とても価値があります。しかし、タスクの実行方法がわかっているときは、説明は要らず、コードだけが欲しいのです。
一方で、よく理解しているタスクに取り組んでいるときは、 Amazon Q Developer のインライン提案を使いたいと感じます。既存のコードやコメントを分析して関連性の高いカスタマイズされた補完を提供してくれるので、本当に素晴らしいです。コンテキストを切り替えたり、正しい構文を探したりすることなく、新しい機能をより速く開発できます。ただし、インライン提案は新しいコードの生成には優れていますが、既存のコードの編集には使用できません。
今回、 Eclipse での新しいインラインチャット機能(プレビュー版)により、 Amazon Q Developer を使用してコードをその場で簡単に編集できるようになりました。別のチャットウィンドウからコードをコピー&ペーストする必要はありません。エディター内で直接変更したい内容を説明するだけで、 Amazon Q Developer が Amazon Q Developer によって提案された更新がコードベースに差分としてシームレスに統合されます。この機能はリファクタリング、バグ修正、ドキュメントの整備、そしてコードの可読性の維持にといった作業にとても役立ちます。それでは、Eclipse でインラインチャットがどのように機能するか、いくつかの例を見てみましょう。
リファクタリング
開発チームの新メンバーとして、 OrderProcessor
クラスにユニットテストを追加するタスクを任されたと想像してみましょう。しかし、コードベースを調べていくと、 OrderProcessor
が OrderRepository
の実装に密結合していることに気づきました。以下の画像の 2 行目で OrderRepository
を直接インスタンス化しているのが確認できます。これにより、モックリポジトリを簡単に差し替えることができず、ユニットテストの作成が困難でした。依存性注入を使用するようにコードをリファクタリングする必要があることはわかっていましたが、その変更をすべて手動で行うことはとても大変でした。
幸いなことに、 Eclipse IDE の Amazon Q Developer のインラインチャットのおかげで、このリファクタリングに一人で立ち向かう必要はありませんでした。 OrderProcessor
クラスを選択し、キーボードショートカット(macOS では CMD + SHIFT + I、Windows では CTRL + SHIFT + I)を使用してインラインチャットを呼び出しました。そして、「このクラスに依存性注入(Dependency Injection : DI)を使うようリファクタリングして。OrderRepository
をモック化してユニットテストしたい。」と変更内容を説明しました。特定の DI フレームワーク(Hibernate など)を活用するよう Amazon Q Developer に指示することもできましたが、このブログ記事ではシンプルに進めることにします。
Amazon Q Developer はコードをすばやく分析し、以下の画像のように変更を提案しました。変更は差分として表示され、 Amazon Q Developer が削除する部分(赤色)と追加する部分(緑色)を一目で確認できます。変更をレビューすると、 Amazon Q Developer が IOrderRepository
インターフェイスを受け取るコンストラクタを導入し、具体的な実装またはテストダブルのいずれかを渡せるようにしていることがわかりました。これにより、 OrderProcessor
の包括的なユニットテストを簡単に作成できるようになります。「Accept」をクリックするだけで、 Amazon Q Developer がコードを更新し、時間を大幅に節約し、かつ堅牢でテスト可能な設計の上に新しい機能が構築できるのです。。
今回の例では、クラス全体を選択しました。しかし、コードの特定の部分に対して Q Developer に作業を依頼することもできます。
最適化
Order
クラスに取り組んでいるとき、containsItem
メソッドの実行が遅いことに気づきました。とくに多数の明細項目を持つ注文に対してその事象が発生していました。コードをプロファイリングしたところ、そのメソッドがホットスポットとなり、過剰な量の CPU サイクルを消費していることがわかりました。そこで、containsItem
メソッドを選択し、インラインチャットを表示して、 Amazon Q Developer に「このコードの実行が遅いので、最適化してください」と依頼しました。
Amazon Q Developer は、すぐに既存のコードを分析しました。このコードはリスト内の項目を反復処理するために、単純な for ループを使用しており、そこ対して改良された実装を提供しました。差分に示されているように、 Amazon Q Developer は for ループをより効率的なストリームベースのアプローチに置き換え、 anyMatch
メソッドを使用して注文内に項目が存在するかどうかを判断する実装を提案しました。この変更により、とくに多数の明細項目を持つ注文のパフォーマンスが向上しました。私は変更を確認し、 Amazon Q Developer の提案を受け入れました。(※訳者注 : あくまで分かりやすい例としての記載であり、実際にパフォーマンスが上がるかどうかはデータの量などによって変わります。)
Amazon Q Developer の最適化により、 containsItem
メソッドのパフォーマンスが向上しただけでなく、コードの可読性と保守性も向上しました。
まとめ
Amazon Q Developer の Eclipse IDE への統合(プレビュー版)により、私の Java 開発の作業が効率化し、改善されました。新しい概念の学習、ボイラープレートコードの生成、パフォーマンスのボトルネックの最適化など、 Amazon Q Developer の AI を活用したツール群は、私の開発プロセスに欠かせない存在となっています。とくにインラインチャットの追加により、アシスタントと直接やりとりし、集中力を途切れさせることなくコードベースを直接更新できるようになったのは大きな変化です。もし、あなたが Eclipse ユーザーで、生産性をさらに向上させたいと考えているなら、Amazon Q Developer プラグインを今すぐインストールすることを強くオススメします。
翻訳はApp Dev Consultantの宇賀神が担当しました。