NRIネットコム Blog

NRIネットコム社員が様々な視点で、日々の気づきやナレッジを発信するメディアです

Amazon QをVSCodeでつかってみた

はじめに

こんにちは、高橋です。
先日AWS re:Invent2023に行ってきました。
Keynoteで発表されたAmazon Qについて、VSCodeで使ってみた感想を簡単にまとめようと思います。

Amazon Qとは

Amazon QはAmazonによって開発された生成型AIアシスタントです。このツールは、特にAWS(Amazon Web Services)のエコシステム内で開発者やIT専門家を支援するよう設計されています。Amazon Qは自然言語処理を用いて、ユーザーが提出する質問や要求に応じて迅速かつ効果的な解決策を提供します。
Amazon Qには以下の種類がありますが、今回はAmazon Q in IDEsをピックアップしていきます。

  • Amazon Q in the console
  • Amazon Q in IDEs ←今回紹介するのはコレ
  • Amazon Q (For Business Use)
  • Amazon Q in AWS Chatbot
  • Amazon Q in Amazon CodeCatalyst
  • Amazon Q in Amazon Connect
  • Amazon Q in Amazon QuickSight
  • Amazon Q in Reachability Analyzer

なお、本記事執筆時点(2023年12月5日)ではin previewのためプレビュー版しか公開されていません。
(対応言語は英語のみです)

GAされる日が楽しみですね。

VSCodeでAmazon QにChatする

以降、VSCodeでAmazon Qを使う方法を紹介します。

セットアップ

VSCodeでAmazon Qを使うためには、AWS Toolkitという拡張機能をインストールする必要があります。

インストール後、以下いずれかの方法で認証が必要です。

  1. Use for free with AWS Builder ID
  2. Sign in with IAM Identity Center(SSO)

私は1のAWS Builder IDを使って認証しました。
認証に成功すると以下のようなタブが表示されます。

質問してみる

「JavaでHello World書いてみて」と伝えた結果。

public class HelloWorld {
  public static void main(String[] args) {
    System.out.println("Hello World!");
  }
}

いけてそうですね。

次に、少しひねったことを求めてみます。
「Java 21ではmainメソッドにstaticが不要になったため、それがわかるようなコードを書いてくれ」と聞いてみます。

public class Main {

  public void greet() {
    System.out.println("Hello World!");
  }

  public static void main(String[] args) {
    new Main().greet(); 
  }

}

mainメソッドにstaticが残ったままの結果が出てしまいました。

次に、最初から「Java21でHelloWowldを書いてみて」と頼んでみます。
今度はstatic無しで出力されましたね。
最初からJava21で書いてと言えばJava21の仕様に沿って出力してくれますが、会話の中でアップデートするようなプロンプトだと逆に混乱させてしまった感じでしょうか。

ちなみに同じことをChatGPTに聞いた結果が以下です。

public class HelloWorld {
    public void main(String[] args) {
        System.out.println("Hello World");
    }
}

他にも、エディタでコードを選択して右クリックするとExplain, Refactor, Fix, Optimize, Send to Promptoといった項目が表示され、Qにコードの説明・リファクタなどを依頼することが可能です。

余談:Chatでエラー発生

記事執筆のために色々Chatに質問していると、以下エラーに遭遇することがありました。

An error occurred while processing your request. This error is reported to the team automatically. We will attempt to fix it as soon as possible.

Details: Improperly formed request.

Request ID: 5ba279

別タブでChatを開くことでエラーが再現しなくなりました。
プレビュー版なのでまだ不安定なところがあるのかもしれません。

Javaコードのバージョンアップ(未検証)

ぶっちゃけ、ここまではGitHub Copilotでも同じことができます。
Copilotより後発であるAmazon QがCopilotと差別化できる点は何でしょうか?

Keynoteの発表内でいくつか述べられてたと思いますが、個人的に熱いと思ったのはJavaコードのバージョンアップをQが行ってくれる点です。

Amazon Q Code Transformationを利用することで、Java 8, 11のコードをJava 17にバージョンアップすることが可能です。
残念ながらAmazon Q Code TransformationはCode Whispererの有償ライセンス(20USD/月)が必要なため私はまだ検証できてませんが、公式のチュートリアルを見た限りかなり強力な機能だと感じています。

Javaは日本のエンタープライズ系のシステムに多く使われています。
中にはJava 8, 11など古いバージョンのJavaを使い続けており、バージョンアップしたいけどヒトとお金が足りない!という現場も多いと思います。
システム規模が大きいとJavaバージョンアップだけで数十人月のちょっとしたプロジェクトになり、それだけで多くのお金が動きエンジニアの時間が奪われます。

Amazon Q Code Transformationは、2日で1000個のJavaアプリケーションをバージョンアップすることに成功したとKeynoteで言及されています。

引用元:https://www.youtube.com/watch?v=PMfn9_nTDbM
恐ろしいですね。
人間の仕事がAIに奪われる時代がすぐそこまで来てそうです。
(バージョンアップ対応は正直面倒な部類の作業なので、AIがやってくれるほうが個人的にはありがたいですが)

まとめ

Amazon QをVSCodeで使う方法と使ってみた結果について記載しました。
まだプレビュー版のため不安定なところや発展途上な部分も見受けられますが、今後GAに向けて改善されると思います。
ぜひ皆さんも使ってみてはいかがでしょうか。

執筆者 髙橋透/Toru Takahashi

AWS Community Builder(2024/03~)

好きなAWSサービスはAWS Amplifyです。

Java(SpringBoot)が主戦場です。


過去執筆記事一覧↓
https://tech.nri-net.com/archive/author/t5-takahashi