はじめに
前回に引き続き、AWS re:Invent 2023で発表されたサービスアップデートの中から、NTTデータのITスペシャリスト達が個人的にこれだけは押さえておくべきと感じた内容を紹介していきます。
本記事では、アプリケーション開発者向けのAmazon CodeWhisperer、Amazon CodeCatalyst、Amazon CloudWatch Logsのアップデートを紹介します。
脆弱性の修正が容易に! CodeWhispererのアップデート
はじめにCodeWhispererのアップデートを紹介します。
CodeWhispererとは機械学習を活用したコードジェネレータで、コードとコメントに基づいてリアルタイムでコードを提案してくれるサービスです。
CodeWhispererの始め方
CodeWhispererは以下3ステップで始めることができます。
1. AWS Builder IDを作成
まずAWS Builder ID profileにアクセスして、AWS Builder IDを作成します。すでにAWS Builder IDをお持ちの方は本手順はスキップしてください。
2. AWS Toolkit for Visual Studio Codeをインストール
次にVS Codeを起動して「拡張機能」から「AWS Toolkit - Amazon Q, CodeWhisperer, and more」をインストールしてください。
インストールが完了すると、サイドバーに「aws」のアイコンが追加されます。
3. Amazon CodeWhispererでサインイン
2で追加された「aws」のアイコンをクリックし、CodeWhispererの「Sign in to get started」(赤枠①)をクリックします。
すると以下図の画面が表示されるので、「Amazon Q + CodeWhisperer」の「Use for free with AWS Builder ID」(赤枠②)をクリックし、1で作成したAWS Builder IDを使ってサインすればCodeWhispererが利用できるようになります。
CodeWhispererの3つの機能強化
さて、re:Invent 2023では以下3つのCodeWhispererの機能強化が発表されました。
脆弱性修正のためのコード提案
1つ目は、セキュリティ脆弱性修正のためのコード提案です。
これまでCodeWhispererでは、組み込みのセキュリティスキャンを使ってセキュリティ脆弱性を特定することが出来ましたが、今回のアップデートでさらに特定された脆弱性を修正するためのコード提案が表示されるようになりました。
セキュリティスキャン機能自体は、AWS Toolkit for Visual Studio CodeとAWS Toolkit for JetBJetBrainsで利用可能で、Python、JavaScript、TypeScript、C#、AWS CloudFormation、AWS CDK、Terraformに対応していますが、コードの修正提案機能はJava、Python、JavaScriptにのみ対応しています。
Pythonで脆弱性のあるコードを作成して検証してみました。
コードを作成し、「AWS Toolkit > CODEWHISPERER > Run Security Scan」をクリックします。
すると、脆弱性のあるコード部分に波線がひかれ、その上にカーソルを当てるとコードの修正提案が表示されます。
IaCのサポート強化
2つ目は、IaCのサポート強化です。CodeWhispererがAWS CloudFormation(YAML、JSON)、AWS CDK(TypeScript、Python)、Terraform(HCL)のコード提案に対応しました。
試しに、Lambda関数を作成するCloudFormationを作成してみました。
まず、「AWS Toolkit > CODEWHISPERER」から「Pause Auto-Suggestions」が開始されていることを確認します(下記図の赤枠参照)。
AWSTemplateFormatVersion: 2010-09-09 Description: Create Lambda by CloudFormation
その状態でYAMLファイルに上記コードを記載すると以下のようにその後のコードが提案され、Tabキーをクリックするとコードに追加されました。また、コードの一部分を書くだけでコードが提案されるので、コードの作成にかかる工数をかなり削減できそうだと感じました。
Vusual Studioサポート
3つ目はVisual Studioサポートです。こちらはまだプレビュー版ですが、Visual Studio 2022に対応しており、C#のコードに対してリアルタイムのコード提案を利用することができます。
Github Copilotとの比較
CodeWhisperer自体が2023年の4月にGAされたサービスなのでまだ利用したことがない方も多いと思いますが、セキュリティスキャンや脆弱性の修正コードの提案などは品質を高めるためにも嬉しい機能だと思うので、ぜひご活用ください。
また、AIコード生成機能を提供するサービスとしてGithub Copilotもありますが、こちらのサービスとの違いは以下の通りです。
対応言語数
CodeWhispererは18種類の言語(Python、Java、JavaScript、TypeScript、C#、Go、Rust、PHP、Ruby、Kotlin、C、C++、シェルスクリプト、SQL、Scala、JSON、YAML、HCL)に対応しています。
Github Copilotはパブリックレポジトリに表示されるすべての言語で利用可能ですが、特に Python、JavaScript、TypeScript、Ruby、Go、C#、C++での利用に適しています。
課金モデル
それぞれの課金モデルは以下表の通りです。
サービス | プラン | 料金 | 備考 |
---|---|---|---|
CodeWhisperer | 個人 | 無料 | AWS Builder IDで認証する。また、1か月あたり最大50回まで無料でセキュリティ脆弱性スキャンを実行可能。 |
CodeWhisperer | プロフェッショナル | 1ユーザあたり19USD/月 | AWS IAM Identity Centerで認証する。また、1か月あたり最大500回まで無料でセキュリティ脆弱性スキャンを実行可能。 |
GitHub Copilot | Individuals | 10USD/月、100USD/年 | 個人アカウントで利用可能 |
GitHub Copilot | Bussiness | 1ユーザあたり19USD/月 | Organizationアカウントまたは Enterpriseアカウントで利用可能 |
CodeWhispererは無料で利用できるので試しに使ってみたい人におすすめです。しかし、CodeWhispererは対応言語の種類に制限があるため、非対応の言語で利用したい場合はGitHub Copilotでの利用を検討いただければと思います。ただし、あまりパブリックリポジトリに存在してない言語では、提案されるコード数が少なかったりコードの信頼性が低い可能性があるのでご注意ください。