はじめに
某SI会社2Gのこんどうです。
前回の記事 で、Amazon Q Developerをコマンドラインから使用してみましたが、
今回はVSCodeに拡張機能として導入して使ってみようと思います。
VSCodeの拡張機能をインストール
手順は至って簡単で、VSCodeのサイドバーの拡張機能から「Amazon Q」を検索し、インストールするだけです。

インストールが完了すると、サイドバーにAmazon Qのアイコンが表示されます。
そこからAWSのアカウント認証を行ったら準備完了です。
実際に使ってみる
今回はリファクタリングを試してみようと思い、こんなコードを用意しました。
def process_items(items):
result = []
for i in range(0, len(items)):
if items[i] % 2 == 0:
result.append(items[i] * 2)
else:
result.append(items[i])
return result
右クリックメニューからいろいろできそうだったので、順番に試してみます。

Explain(説明)
自動でプロンプトが入力され、回答が得られました。
プロンプトが英語だったので英語で回答されたようです。

日本語でお願いすると日本語で回答してくれました。
この後リファクタリングしてもらおうと思っていましたが、この時点でリファクタリングの提案もしてくれました。
毎回日本語でお願いと言うのは面倒なので、試しにこうお願いしてみます。

Refactor(リファクタリング)
日本語で回答してくれました。
修正方針は提示してくれましたが、実際にどう書き換えられるのかは提示されていません。
修正内容を確認してから書き換えてもらいました。
def process_items(items):
return [item * 2 if item % 2 == 0 else item for item in items]
Optimize(最適化)
先ほどのコードで十分かと思っていましたが、より最適化した案を提示してくれました。
def process_items(items):
return [item * (2 - item % 2) for item in items]
Generate Tests(テストコード生成)
def process_items(items):
return [item * (2 - item % 2) for item in items]
def test_process_items():
assert process_items([1, 2, 3, 4]) == [1, 4, 3, 8]
assert process_items([]) == []
assert process_items([2, 4, 6]) == [4, 8, 12]
assert process_items([1, 3, 5]) == [1, 3, 5]
assert process_items([0]) == [0]
if __name__ == "__main__":
test_process_items()
print("全てのテストが成功しました")
実行してみると、無事にテストが通りました。
残念ながら...
「常に日本語で」というお願いは、セッション中しか保持されませんでした。
チャットを一度閉じるとまた英語で回答されるようになってしまいました。
チャットで「説明して」「リファクタリングして」と打った方が良さそうです。
おわりに
今回はシンプルなコードで試してみましたが、
もっと複雑なコードだとどうなるのか、今後試してみたいと思います。




