コーディング支援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
As I was getting ready to write this post I spent some time thinking about some of the coding tools that I have used over the course of my career. This includes...

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

利用申請

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

Amazon Web Services, Inc.
Amazon CodeWhisperer - Sign up for preview

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

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をコピーしました