コーディング支援AI AWS CodeWhispererを使ってみた

どうも、VSCodeが大好きになってしまった寺内です。

巷では、GitHub Copilot が2022年6月に公開され、コードの著作権や人間がコードを書くとはどういうことか、など様々な議論がおきております。ここでご紹介するのは、CopilotのAWS版とも言うべきコーディング支援AIサービス AWS CodeWhisperer です。GitHub Copilotの発表の二日後に、AWSよりプレビューとして以下のとおり発表されました。

Now in Preview – Amazon CodeWhisperer- ML-Powered Coding Companion | Amazon Web Services
AsIwasgettingreadytowritethispostIspentsometimethinkingaboutsomeofthecodingtoolsthatIhaveusedoverthecourseofmycareer.Thisincludestheline-orientededitorthatwasan...

プレビューなので使う前には利用申請が必要です。

利用申請

以下のページから利用を申請します。

AWS Support and Customer Service Contact Info | Amazon Web Services
Onthispage,you’llfindinforegardingthedifferentwaystogetintouchwithAWSsupport,includingSales,Technical,Compliance,andLoginsupport.

申請後、数日するとアクセスコードがメールで届きます。

VSCodeの拡張機能

Cloud9でも使えますが、ここではVSCodeで使ってみます。
VSCodeの機能拡張で AWS Toolkit をインストールします。

すると、左のサイドメニューにAWSアイコンメニューができます。

まずAWS Toolkitをインストールしたら、アクセスキーとシークレットキーを使い、AWS APIがコールできるように認証設定を行ってください。
その後、CodeWhispererの設定を行います。

一番下に CodeWhisperer のメニューがあります。
CodeWhispererメニューから「Enter Preview Access Code」を選び、メールで届いたアクセスコードを入力します。
その後、Enable CodeWhispererを押すと、Amazon CodeWhisperer Preview Terms が表示されるので、それをAcceptします。

使い方

使い方は、まず途中までコードを書きます。

import boto3

# create vpc
def

この def まで入力したら、 Alt+c を入れます。

自動で補完できるときは勝手にサジェスチョンされます。自動で出ないが意図的にサジェスチョンして欲しいときには、手動で Alt+c を入力することで候補を表示させることが出来ます。

以下のようになります。

この状態で、カーソルキーの左右で候補を選ぶことが出来ます。
これでいいという候補が見つかったら、 Tab を押すことで確定します。

次にコードを見ていると、ec2 client を作らないといけないことに気づきます。
そこで ec2 client を作るコードも引っ張ってきましょう。
続きのコメントで # create ec2 client と入れて、 def の後で Alt+c を入れます。

こうなりました。

このようにして、コーディングを楽ちんに進めることが出来ます。もちろんサジェスチョンされた意味がわからないとダメですが。

日本語

コメントは日本語でも有効です。
# EC2インスタンスを作成する と入れてみましょう。

コードはよいですが、引用されたコード内にコメントが日本語だと文字化けするようです。

ただ、学習対象のコードは圧倒的に英語のほうが多いはずですので、極力英語のコメント分で検索するようにしましょう。

一般的なコード

AWS関係のコード以外でも試してみましょう。
円の面積を求める関数を書いてみます。

いいですね。でも、3.14 の固定値が気になります。
そこで、mathライブラリを予めインポートしておいた場合にどうなるか試してみます。
同じコメント分でサジェスチョンさせます。

ちゃんと math.pi を使ってくれました。
同じく日本語のコメント分でもやってみます。

できました。

終わりに

text to image や text to movie ができたのとほぼ同時期に、text to code が出来たということですね。2022年は、機械学習の民主化元年といってよいのではないでしょうか。

AWS CodeWhispererが、学習元データを何で行っているかわかりませんが、コメント文をキーとしたコードを学習し、マッチ度の高いものを出力しているように見えます。日本語でも候補が出ることから、日本語を含むオープンなコードで学習していることがわかります。

コードにアクセスキーやシークレットキーはさすがに出てこないと思いますが、稀にARNをハードコーディングしているコードがあります。すると、AWSアカウントIDを含んでサジェスチョンされてしまいます。(実際、出てきました)
AWSアカウントIDも機密にしておくべき情報ですので、くれぐれも公開コードにハードコーディングしないように気をつけましょう。

タイトルとURLをコピーしました