Open12

Code Whispererしらべる

takamin55takamin55

いろいろ調べて触ってみよう

料金

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へのアクセスを許可するか
  • ポリシー管理
    • 企業向けのみ
    • 特定のトレーニングデータに類似する可能性のあるコードの提案を受けることを許可するか、など
takamin55takamin55

Benefits and Featuresを読む

https://us-east-1.console.aws.amazon.com/codewhisperer/home?region=us-east-1

※↑ 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.

…見せてもらおうか。見つけにくいバグの提案とインテリジェントな修正案とやらを。

コードリファレンス

生成されたコードが特定のトレーニングデータ、ようはオリジナルコードに似ているかどうかを検出。
そのデータへの参照を提供。これによって、コードがどんなコンテキストで使われているかを確認可能。

よくわからんから後で使うときに見てみよう。

takamin55takamin55

使える場所

  • Lambdaコンソール
  • JetBrains
  • VSCode
  • Cloud9
takamin55takamin55

使ってみよう

VSCodeで使うぜ
https://docs.aws.amazon.com/ja_jp/codewhisperer/latest/userguide/whisper-setup-indv-devs.html

AWS ToolKitを使うだけど、まずはAWSアカウントと連携しないとだめ。
で、やりがちな「IAM Credential」でつなぐとCode Whispererは対応していない。

つまり、アクセスキーとシークレットキーのやつではだめと。

使える方法が、

  • AWS Builder IDでのサインアップ
  • AWS IAM Identity Centerでのサインアップ
    の2通り。

AWS Builder IDとは

割と最近出てきた概念。
https://docs.aws.amazon.com/ja_jp/signin/latest/userguide/differences-aws_builder_id.html
AWSアカウントやサインインのクレデンシャルとは全く別のもの。
メアドが必要だが、別にルートユーザのメアドと同じでもいい。

  • AWS BuilderIDが必要なサービス(WhispererとCodeCatalystくらい?)にアクセスするために特化したIDのこと
  • マネジメントコンソールやCLI、SDKなどにアクセスする認証情報ではない
  • まじでIAMとかの影響とは無関係な存在だと思ったほうがいい

https://profile.aws.amazon.com/

ここで発行できる。AWSアカウント持っていなくてもいい!
とりあえず、builderIDを発行して設定してみた。

takamin55takamin55

VSCodeのAWSマークをクリックし、CodeWhispererの設定画面を開いてみた。

後で調べて書く。なんか嫌だったら最後のやつだけ外しておけば問題なさそうにも見える。

takamin55takamin55

使ってみる

書いているうちに提案

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

コメントで提案

takamin55takamin55
/**
 * @param objectKey	an object key of S3 bucket
 * @param base64Image	base64 encoded image
 * @return boolean: success or fail
 */

base64化された画像をデコードしてS3にアップロードするメソッドほしいな

お?(期待)

は?(失望)
きっと、自分の情報の与え方が下手なのだろう。。プロンプトエンジニアの修行をしないといけないのか??

takamin55takamin55

Security Scan機能

自分が適当に書いているSpringBootバックエンドに使ってみた。

XSS対策ないよ

確かに、サニタイジングはしていません(このアプリは公開していないので大丈夫です。念のため補足。)

S3バケットの所有者が設定されていないよ


おぉ。そういうのがあるんだ。
…どうやって直せばいいの?そのドキュメントはどこをみたらいいの? までくれたら最高なんだけどな。

(見つけた)
https://docs.aws.amazon.com/ja_jp/AmazonS3/latest/userguide/bucket-owner-condition.html

ページネーションがないよ

確かに、今はそれはありえないようなデータ数なので適当に書いていますが、今後ページネーションが必要になってきますね。

コードスキャンは割といい感じかもしれないですね。
せっかく生成AIなんだからそのまま問題を直してくれてもいいのですが、それは求め過ぎということでしょう。

ただ、Whispererのスキャンを使うか…?という疑問はある。
基本的にどこかのプロジェクトに参加していると、静的解析ツールなどを導入していると思うので、ここであえてWhispererを使うメリットは有るのか、は難しそう。

takamin55takamin55

CodeReference機能

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

takamin55takamin55

その他適当にメモ

クォータはないのでずっと使える。

対応IDEは

  • VSCode
  • JetBrains
  • Cloud9
  • Lambda Console
  • Sagemaker Studio
  • JupyterLab