本記事は 夏休みクラウド自由研究 8/20付の記事です。 |
こんにちは、SCSK池宮です。
今年7月から、Visual Studioでも利用ができるようになったAmazon Q Developerはどんな機能があるのか…今回は色々な機能を試してみました。
Amazon Q Developerとは?
AWSの生成AIアシスタントサービスの総称であるAmazon Qですが、中でもQ Developerは開発者向けに特化したサービスです。
開発者がコーディングをする際のアシスタントを担ってくれるため、生産性の向上が期待できます。
今回は、コード提案をしてくれる前身サービス「Amazon CodeWhisperer」 から追加された機能を中心に見ていきたいと思います。
チャット機能を使ってみる
Amazon Q Developerでは、統合開発環境(IDE)上でのチャット機能が追加されています。
(今回はVisual Studio Code(VSCode)上で試していきます!)
VS Codeを立ち上げ、左側にある「Amazon Q」アイコンをクリックします。
右側にチャット画面が出てきました。ここでAmazon Qとやり取りができるようになります。
コード生成してもらおう!
このチャット欄に「変数Aと変数Bの合計を計算するコードを生成してください」と送ります。(現在チャット機能は英語のみ対応しています)
回答が返ってきました。
Pythonのコードとアウトプット、そしてどのようなコードなのかという説明を返してくれました。
Python以外の場合として、JavaScriptのコードも回答してくれています。(赤線部分)
コードの説明をしてもらおう!
次に、Q DeveloperのExplainの機能を試してみます。
以下のような「Redshiftテーブルを作成し、S3 バケットから CSV データをテーブルにコピーする」コードを用意して、読み取ってもらいます。
#Connect to the cluster and create a Cursor >>> import redshift_connector >>> with redshift_connector.connect(...) as conn: >>> with conn.cursor() as cursor: #Create an empty table >>> cursor.execute("create table category (catid int, cargroup varchar, catname varchar, catdesc varchar)") #Use COPY to copy the contents of the S3 bucket into the empty table >>> cursor.execute("copy category from 's3://testing/category_csv.txt' iam_role 'arn:aws:iam::123:role/RedshiftCopyUnload' csv;")
※以下ページを参考にしています。
コード全体を選択し、右クリックで「Explain」を選択します。
すると、コードの説明が返ってきました。
内容も「このコードは Amazon Redshift クラスターに接続し、新しいテーブルを作成し、Amazon S3 バケットに保存されている CSV ファイルからそのテーブルにデータを入力します。」と、きちんと中身を読み取って回答を生成していることが分かります。
コードを改善してもらおう!
最後に、コードをリファクタリングしてくれる機能を試してみます。
別の生成AIに「変数Aと変数Bの合計を計算するコード」を複雑に変換してもらいました。(本当に無駄が多い!)
# 変数Aと変数Bを定義 A = 5 B = 10 # 無駄な変数を大量に使って中間処理を行う temp1 = A temp2 = B temp3 = temp1 temp4 = temp2 # 足し算をする前にさらに無駄な代入を行う step1 = temp3 + 0 step2 = temp4 + 0 # 不要な計算を追加 dummy_calculation1 = step1 * 1 dummy_calculation2 = step2 * 1 # 何度も再代入を行う intermediate_result = dummy_calculation1 intermediate_result2 = dummy_calculation2 # 無駄なリストを作成して値を追加 useless_list = [] useless_list.append(intermediate_result) useless_list.append(intermediate_result2) # 和の代わりにリストから値を取り出して計算 useless_var1 = useless_list[0] useless_var2 = useless_list[1] final_result = useless_var1 + useless_var2 # 再度無駄に別の変数に代入 output_result = final_result # 結果を出力 print("変数Aと変数Bの和は:", output_result)
このコードを選択し、Amazon Q機能の「Refactor」をクリックします。
こちらも返答が返ってきました。
コードを簡潔に直したものが載っています。さらに、「元のコードには不要な変数の割り当て、冗長な計算、不要なリストの作成が多数あったため削除した」というような補足まで返してくれました。
このように、Amazon Q Developer では様々な「開発者にとって痒い所に手が届く機能」が追加されていることが分かりました。
現時点、チャットは英語対応のみですが、日本語利用もできるようになる日が待ち遠しいですね!
最後までお読みいただきありがとうございました。