Duet AI アシスタントを使用して IntelliJ で Java Spring Boot アプリを構築
Google Cloud Japan Team
※この投稿は米国時間 2023 年 11 月 11 日に、Google Cloud blog に投稿されたものの抄訳です。
Google Cloud の Duet AI は、デベロッパー、オペレーター、セキュリティ専門家、データ専門家などに有用な AI アシスタントです。IDE 統合を備えており、Visual Studio Code や、IntelliJ IDEA を含む JetBrains IDE での利用が可能です。
この記事では、JetBrains IntelliJ IDEA 内で Duet AI を使用し、シンプルな Java Spring Boot ウェブ アプリケーションをゼロから作成する方法を説明します。
Spring Initializr で作成した空のプロジェクトから始め、Duet AI 支援のコード生成を使ってアプリケーションを作成して、単体テストを追加する方法を実験します。
以下に紹介する手順に加えて、こちらの解説動画も参考にしてただけたら幸いです。
必要なもの
- Duet AI を有効にした、次の条件を満たす Google Cloud プロジェクト。
a. Duet AI へのアクセス権が自身に付与されている
b. Duet AI API が有効になっている
c. 課金が有効になっている - IntelliJ IDEA Community エディションまたは Ultimate エディションがインストールされたパソコン。
- Cloud Code for IntelliJ プラグインがインストールされていること。
IDE から Google Cloud にログインしていること。IntelliJ に [Tools] メニューが表示されない場合は、Ctrl+Shift+A(Windows)または Cmd+Shift+A(Mac)で操作メニューを開き、検索バーに「main menu」と入力して、[Main Menu] を選択します。そこから、[Tools] > [Google Cloud Code] > [Sign in to Google Cloud Platform] を選択します。
最初の Spring Boot プロジェクトを構築する
アプリケーションの作成は、Spring Initializr で作成したサンプル Spring Boot プロジェクトから始める必要があります。IntelliJ IDEA Ultimate エディションをお持ちの場合は、IDE の [New] > [Project] フローから、同じオプションを選択して Spring Boot プロジェクトを直接作成できます。
- https://start.spring.io/ にアクセスします。
- Spring Initializer ページの [Project] で、[Maven] を選択します。
- [Project Metadata] で以下を行います。
a.[Artifact] と [Name] を「greeting-app」に変更します。
b. [Description] を「Greeting App made with Duet AI assistance」(Duet AI のアシスト機能を使用して作成されたグリーティング アプリ)に変更します。 - 他のオプションはそのままにします。
5. ページの右上隅にある [ADD DEPENDENCIES] をクリックします。
6. リストから [Spring Web] を選択します。
7. ページの下部にある [GENERATE] をクリックすると、greeting-app.zip ファイルをダウンロードできます。
8. ファイルを最適な場所(終了後にプロジェクトを削除する場合は一時的な場所)に保存し、ファイルを解凍します。
Duet AI のコード生成アシスト機能を使用してコードを構築する
- IntelliJ で [File] > [Open] に移動します(またはウェルカム画面で [Open] をクリックします)。
- ファイルを解凍したフォルダを選択し、[Open] をクリックします。
- IntelliJ でプロジェクト フォルダを開いたら、GreetingAppApplication クラスをダブルクリックしてコンテンツを表示します。
- src/main/java/com.example.greetingapp の下に HomeController.java という名前の新しいファイルを作成します。
5. HomeController.java ファイルの先頭に、次のコメントを入力します。
6. Enter を押し、Alt+\(Windows / Linux)または Option+\(macOS)を押してコードを生成します。または、魔法の杖をクリックします。
7. ゴースト テキスト形式でコードが生成されます。コードの機能は次のようになります。@GetMapping("/hello")
アノテーションと hello()
メソッドにより、リクエスト内の name 変数の値に基づいてユーザーへの挨拶が生成されます。変数に値がない場合は値「World」が使用されます。
8. 上記と同じコードが生成された場合は、Tab キーを押して提案を受け入れます。異なるコードが生成された場合は、意図したとおりに動作するかどうかを評価し、変更を加えるか、上記のコード例を使用するかを決定します。
9. おそらくここで、提案されたコードの一部がハイライトされ、IntelliJ に警告([problems] ペインで確認可能)が表示されます。生成されたコードはトレーニング データ内のサンプルの一つから取得されたものであるため、ライセンスの対象になる可能性があることが、Duet AI のライセンス チェックによって警告されます。警告メッセージにはトレーニング データのソースが含まれ、ユーザーが確認できるようになっています。
10. それでは、生成されたコードが機能するかどうかを確認してみましょう。IntelliJ ターミナルで次のように入力します。
11. ターミナルに Spring ログ メッセージの出力が表示されます。
12. デフォルトでは、組み込みの Apache Tomcat サーバーはポート 8080 でリッスンしています。ウェブブラウザを開き、http://localhost:8080/hello
に移動します。Duet AI が生成したコードが機能すれば、アプリケーションが「Hello World!」と応答することを確認できます。
13. ウェブ リクエストに名前を指定することでも、挨拶に含める名前をアプリケーションに伝えることができます。たとえば、次のように指定します。http://localhost:8080/hello?name=John
14. IntelliJ に戻り、ターミナルで Ctrl+C を押してアプリケーションを停止します。
15. 次に、このアプリを少し改良してみましょう。resources/static フォルダ内に index.html ファイルを作成します。
16. ファイルの先頭に次のコメントを入力します。
17. Enter を押し、Alt+\(Windows / Linux)または Option+\(macOS)を押してコードを生成します。または、魔法の杖をクリックします。
18. 下の例と同等の機能を持つコードがゴースト テキスト形式で生成されます。
19. 上記と同じコードが生成された場合は、Tab キーを押して提案を受け入れます。異なるコードが生成された場合は、意図したとおりに動作するかどうかを評価し、変更を加えるか、上記のコード例を使用するかを決定します。
20. 以下のコマンドで、アプリケーションを再度実行します。
21. ここで、index.html ファイルを追加したので、ブラウザからルートにあるアプリケーションにアクセスします(http://localhost:8080/
)。Greetings Form が表示されます。
22. 名前を入力して [Greet me] をクリックすると、挨拶が表示されます。
23. IntelliJ に戻り、ターミナルで Ctrl+C を押してアプリケーションを停止します。
アプリケーションに単体テストを追加する
- src/test/java/com.example.greetingapp の下に HomeControllerTest.java という新しいファイルを作成します。
2. ファイルの先頭に次のコメントを入力します。
3. Enter を押し、Alt+\(Windows / Linux)または Option+\(macOS)を押してコードを生成します。または、魔法の杖をクリックします。
4. 下の例と同等の機能を持つコードがゴースト テキスト形式で生成されます。このコードで、デフォルトの「Hello World!」文字列と name 変数のカスタム値の両方をテストできます。
5. 上記と同じコードが生成された場合は、Tab キーを押して提案を受け入れます。異なるコードが生成された場合は、想定したテストケースに適用できるかどうかを評価し、変更を加えるか、上記のコード例を使用するかを決定します。
6. ターミナルで次のコマンドを実行します。
- テストが正常に実行されるはずです。
- ここで、HomeController.java ファイルの 13 行目にある単語「Hello」を「Hi」に置き換えてテストを再度実行すると、想定している文字列でアプリケーションが応答しないため、テストは失敗します。
まとめ
この記事では、IntelliJ で Duet AI を使用して、Java コード、HTML、単体テストを生成する方法を紹介しました。また、空の Spring Boot アプリケーションから始めて「Greeting App」を作成し、正常に動作することを確認できました。
デベロッパー向けの Duet AI 機能について詳しくは、以下をご覧ください。
- Duet AI のアシスト機能を活用してアプリを開発する
- Google Cloud の Duet AI の概要 - Next ‘23 のセッションの録画
- Duet AI でデベロッパーの生産性と可能性を高める - Next ‘23 のセッションの録画
ー カスタマー エンジニア、Giovanni Galloro