Code Whispererしらべる

いろいろ調べて触ってみよう
料金
Individual(個人)とProfessional(企業向け)がある。
個人は無料。企業向けは $19
かかる。(特に性能に差はない)
※GitHub Copilotより1ドル安いところに作為を感じる。
Copilotは個人向け10ドル、企業向け19ドルでした。一緒でした。
「1ユーザー1ヶ月$19」が料金単位。月の途中から使うと按分される。
機能に若干の差がある。
機能概要
- コード生成
- 推論リクエスト制限なし。すご!
- 言語:Python、Java、JavaScript、TypeScript、C#、Rust、Go、Ruby、Scala、Kotlin、PHP、C、C++、Shell Scripting、SQL
- script, sqlおもろい。
- リファレンストラッキング
- なにこれ
- 認証
- コードセキュリティスキャン
- 個人向け: 50 times / month, user
- 企業向け: 500 times / month, user
- ライセンス管理
- 企業向けのみ
- 誰にCode Whispererへのアクセスを許可するか
- ポリシー管理
- 企業向けのみ
- 特定のトレーニングデータに類似する可能性のあるコードの提案を受けることを許可するか、など

Benefits and Featuresを読む
※↑ us-east-1しか対応していません。
主要な言語サポート
まぁこれはいいか。さっきある程度書いた
AWS APIへの第一級のサポート
S3, EC2, LambdaといったAWSサービスたちのAPI使用を簡単にする。
→ copilotにはできないのか??もしくは苦手なのか??
セキュリティスキャン
Java, JavaScript, Pythonの脆弱性スキャンができる。
identifies hard-to-find bugs with high accuracy, and provides intelligent suggestions on how to remediate them.
…見せてもらおうか。見つけにくいバグの提案とインテリジェントな修正案とやらを。
コードリファレンス
生成されたコードが特定のトレーニングデータ、ようはオリジナルコードに似ているかどうかを検出。
そのデータへの参照を提供。これによって、コードがどんなコンテキストで使われているかを確認可能。
よくわからんから後で使うときに見てみよう。

使える場所
- Lambdaコンソール
- JetBrains
- VSCode
- Cloud9

後で読む(ドキュメント)

使ってみよう
VSCodeで使うぜ
AWS ToolKitを使うだけど、まずはAWSアカウントと連携しないとだめ。
で、やりがちな「IAM Credential」でつなぐとCode Whispererは対応していない。
つまり、アクセスキーとシークレットキーのやつではだめと。
使える方法が、
- AWS Builder IDでのサインアップ
- AWS IAM Identity Centerでのサインアップ
の2通り。
AWS Builder IDとは
割と最近出てきた概念。
メアドが必要だが、別にルートユーザのメアドと同じでもいい。
- AWS BuilderIDが必要なサービス(WhispererとCodeCatalystくらい?)にアクセスするために特化したIDのこと
- マネジメントコンソールやCLI、SDKなどにアクセスする認証情報ではない
- まじでIAMとかの影響とは無関係な存在だと思ったほうがいい
ここで発行できる。AWSアカウント持っていなくてもいい!
とりあえず、builderIDを発行して設定してみた。

VSCodeのAWSマークをクリックし、CodeWhispererの設定画面を開いてみた。
後で調べて書く。なんか嫌だったら最後のやつだけ外しておけば問題なさそうにも見える。

使ってみる
書いているうちに提案
超簡単な例。関数を定義していると勝手に提案をくれたり、もしくはAlt + C(Option + C)
を押すと提案をくれる。
TABで受け入れることができる。
コメントで提案

/**
* @param objectKey an object key of S3 bucket
* @param base64Image base64 encoded image
* @return boolean: success or fail
*/
base64化された画像をデコードしてS3にアップロードするメソッドほしいな
お?(期待)
は?(失望)
きっと、自分の情報の与え方が下手なのだろう。。プロンプトエンジニアの修行をしないといけないのか??

じゃ、じゃあ記事に乗っているコメントと全く同じコメントをしてみよう。
/** create a lambda function that stores the body of the SQS message into a has key of a DynamoDB table */

Security Scan機能
自分が適当に書いているSpringBootバックエンドに使ってみた。
XSS対策ないよ
確かに、サニタイジングはしていません(このアプリは公開していないので大丈夫です。念のため補足。)
S3バケットの所有者が設定されていないよ
おぉ。そういうのがあるんだ。
…どうやって直せばいいの?そのドキュメントはどこをみたらいいの? までくれたら最高なんだけどな。
(見つけた)
ページネーションがないよ
確かに、今はそれはありえないようなデータ数なので適当に書いていますが、今後ページネーションが必要になってきますね。
コードスキャンは割といい感じかもしれないですね。
せっかく生成AIなんだからそのまま問題を直してくれてもいいのですが、それは求め過ぎということでしょう。
ただ、Whispererのスキャンを使うか…?という疑問はある。
基本的にどこかのプロジェクトに参加していると、静的解析ツールなどを導入していると思うので、ここであえてWhispererを使うメリットは有るのか、は難しそう。

CodeReference機能
提案されたコードの参照を教えてくれるらしいのだが、、そのログが出る気配はない。
調べても情報が少ないので、今は諦めかも。。

その他適当にメモ
クォータはないのでずっと使える。
対応IDEは
- VSCode
- JetBrains
- Cloud9
- Lambda Console
- Sagemaker Studio
- JupyterLab