Amazon CodeWhispererプレビュー公開
Amazon Web Services(AWS)は「Amazon re:MARS 2022」において、機械学習(ML)を利用してプログラミングを支援し、開発の生産性を向上させるAmazon CodeWhispererのプレビュー公開を発表しました。
この記事では、Amazon CodeWhispererを使ってみたいと考えている方に向けて、Amazon CodeWhispererを使うと何ができるのかを解説し、プレビュー期間中の使用方法などを紹介していきます。
Amazon CodeWhispererとは
Amazon CodeWhispererは、プログラマーが統合開発環境(IDE)で記述した自然言語によるコメントと、作成しているコードに基づいて、その先のコードを提案してくれます。
提案されるコードは関数全体や論理ブロックといった形になっており、多くの場合、10〜15行を超えるコードで構成されます。
プログラマーは提案されたコードを受け入れてそのまま利用することもできますし、さらに推奨コードを表示することもできます。また、提案を受け入れず自分で続きのコードの記述を行うこともできます。
【参考】:ML-Powered Coding Companion for Developers – Amazon CodeWhisperer Features – AWS
Amazon CodeWhispererが参照するデータソース
提案されるコードは、オープンソースリポジトリ・Amazon内部リポジトリ・APIドキュメント・フォーラムなどのデータソースから収集した、数十億行にものぼるコードによりトレーニングされた機械学習モデルに基づいています。
【参考】:AWS が Amazon CodeWhisperer を発表 (プレビュー)
想定されるユースケースとは
Amazon CodeWhispererは、様々なユースケースでプログラマーの負担を軽減することができます。
CodeWhispererを使ってコードを生成することで機械学習モデルを構築し、トレーニングを重ねることで、プログラマーの時間や労力を節約することができます。
また、AWSのサービスであるAmazon EC2・AWS Lambda・Amazon S3におけるAWS API のコードを推奨することで、さらに開発スピードを向上させることが可能なため、AWS関連のコードを書くプログラマにもおすすめです。
さらに、自然言語によるコメントをもとに、実装するコードに適した単体テストの自動生成を行うことも可能で、プログラマーがコードを記述する負担を削減することに貢献します。
【参考】:ML-powered coding companion – Amazon CodeWhisperer – AWS
Amazon CodeWhispererが持つ機能
Amazon CodeWhispererが持つ特徴的な機能として、以下の3点が挙げられます。
脆弱性を検出するセキュリティスキャン
CodeWhispererは、プログラマーが責任を持ってアプリケーションを構築するのを支援するため、Java,JavaScriptおよびPythonプロジェクトの脆弱性を検出するセキュリティスキャンを提供します。
リファレンストラッカー
CodeWhispererが推奨したコードが、CodeWhispererの学習データの中の特定のトレーニングデータに類似している可能性があるかを検出して、参照することができます。これにより、推奨されるコードが別のプロジェクトでどのように使用されているかを検索して確認することが可能です。
コーディングのバイアス回避
CodeWhispererでは、推奨されるコードのうち、バイアスがかかっていて公平でないと思われるコードを除外することで、プログラマーがコーディングのバイアスを回避できるようになっています。
【参考】:ML-Powered Coding Companion for Developers – Amazon CodeWhisperer Features – AWS
プレビュー期間中にAmazon CodeWhispererを使うための事前準備
ここでは、プレビュー期間にAmazon CodeWhispererを使用するには何をすればよいかを解説します。
プレビュー期間中はCodeWhisperer を無料で使用できる
Amazon CodeWhispererは、プレビュー期間中ウェイトリストに登録することで順番がくれば、無料で利用することができます。また、地域にかかわらず世界中で利用することができます。
ウェイトリストに参加するには、Amazon CodeWhispererのサインアップページにアクセスし、必要事項を記入して送信してください。
【参考】:Amazon CodeWhisperer - Sign up for preview
【参考】:ML-Powered Coding Companion for Developers – Amazon CodeWhisperer FAQs – AWS
Amazon CodeWhispererの対応言語と開発環境
現時点で、Amazon CodeWhispererはPython・Java・JavaScriptのプログラミング言語に対応しています。
利用できる開発環境(IDE)は、Visual Studio Code・IntelliJ IDEA・PyCharm・WebStorm・Cloud9となっています。
Amazon CodeWhispererの使用方法
Amazon CodeWhispererを使用するには、まずIDEにAWS IDE Toolkit拡張機能をインストールする必要があります。
Visual Studio Codeを例に挙げると、アクティビティバーから「拡張機能」アイコンを選択して表示される「拡張機能」ビューからVS Code マーケットプレースにアクセスし、検索ボックスで、AWS Toolkitを検索すれば見つかります。インストール後、AWSの認証情報を設定します。
【参考】:Installing the AWS Toolkit for Visual Studio Code - AWS Toolkit for VS Code
AWS Toolkit拡張機能をインストールしたら、ウェイトリスト登録時に発行されるアクセスコードを使ってCodeWhispererを有効化できるようになります。
CodeWhispererを有効にすると、IDEのコードエディターでコメントやコードを記述することで推奨コードが表示されるようになります。
プレビュー期間中はコードの推奨への反応がフィードバックされる
Amazon CodeWhispererは膨大なデータソースによりトレーニングされた機械学習からコードを推奨しますが、プレビュー期間はプログラマが作成したコードを使って機械学習モデルがトレーニングされることはありません。
しかし、コードの推奨に対してプログラマが推奨を承認したか、拒否したかなどのユーザーアクティビティは蓄積されます。このフィードバックによって機械学習モデルを一層正確にし、CodeWhispererが今後、推奨コードを改善できるようにしています。
【参考】:ML-Powered Coding Companion for Developers – Amazon CodeWhisperer FAQs – AWS
Amazon CodeWhispererの使用例
AWSのブログ「Now in Preview – Amazon CodeWhisperer- ML-Powered Coding Companion」には、実際にAmazon CodeWhispererがどのようにコードを推奨するのかが紹介されているため、以下にまとめました。
Amazon CodeWhispererがPythonの推奨コードを自動的に提案
ブログでは、プレビュー版CodeWhispererを、IDEがPyCharm、言語がPythonで使用する例が紹介されています。
ある数が素数かどうかを調べる関数を作成するため、IDEのエディター内でコメントとして「素数(prime number)のリストを作成したい」と入力するため、「# See if a number is pr」と「prime」という単語の途中まで入力すると、残りの「ime」が提案されます。
そして、次の行では、このコメントに対応する関数本体が推奨されるため、これを選択して採用しています。
また、forステートメントを書くと、ループの全体を推奨するなど、開発のスピードアップに役に立ちます。
【参考】:Now in Preview – Amazon CodeWhisperer- ML-Powered Coding Companion | AWS News Blog
Amazon CodeWhispererを使って開発をスピードアップしよう
ここまで、Amazon CodeWhispererを使ってどのようなことができるのか、プレビュー期間中にどのように使用するかなどについて解説しました。
膨大なデータソースからトレーニングされたコードを推奨してくれるCodeWhispererは、開発スピードのアップだけでなく、コーディングのミスを減らし、可読性の高いコードを書く上でも役に立つでしょう。開発の効率向上の大きな助けとなるのは間違いありません。
ぜひプレビュー公開にウェイトリスト登録して体験してみてください。
編集部オススメコンテンツ
アンドエンジニアへの取材依頼、情報提供などはこちらから