はじめに
AWSからコード生成サービスのCodeWhispererが一般公開されたので使ってみたいと思います。
CodeWhispererとは
AWSのコード自動生成サービスです。
個人利用向けのIndividualと組織利用向けのProfessionalが用意されています。
生成結果自体は両方で変わらないようですが、Individualは無料で利用できます。
今回はJetBrainsのPHP Stormで、CodeWhisperer Individual(個人利用)を使用します。
導入
はじめに、PHP Storm上のプラグインページからAWS ToolKit を インストール します。
IDE上でAWS ToolKitを開いてDeveloper ToolsからCodeWhispererの利用開始します。詳しくは、公式を参照してみてください。(手順がスクショ付で掲載されています。)
途中、AWS Builder IDを新規作成する様にポップアップが表示されるので指示通り作成します。
AWS Builder IDは、AWSで開発する個人に紐づく新しいプロファイルです。AWSアカウントに紐づくIAMユーザーとは別に、個人に紐づくもののようです。
現在は、他にAmazon CodeCatalyst や AWS re:Postのサービスに利用される様です。
AWS Builder ID作成後にPHP StormでCodeWhispererの使用確認を行なうとポップアップが閉じられコード生成が出来る様になります。
使い方
コメントを書くか関数名を書くだけでコード生成がされます。
1行ずつコード生成され、候補がいくつかある場合は選択出来ます。
Enterで候補から選択して改行されると次のコードが生成される形です。
また、Macの場合なら、option + C のショートカットでもコード生成を行う事が出来ます。
PHP言語で試しにやってみます。
何回か試しましたが、英語で書かれていた方が生成されるコードの精度が高そうですが、生成結果コードは怪しいものも結構あるという印象です。
また、今回はuse文や他コードが一切無い状態で試してますが、この辺の有無でも生成結果が変わるので実際の精度はまた変わりそうです。
データの取り扱い
詳細は公式の通りですが、一部抜粋すると
・Amazon CodeWhisperer Individual は、コードスニペット、コメント、カーソルの位置、IDE で開いているファイルの内容などのコンテンツを入力として使用して、コードの提案を提供します。
・IDE 内で AWS Toolkit の [Share CodeWhisperer Content with AWS] (CodeWhisperer コンテンツを AWS と共有) 設定を調整することで、AWS がサービス改善のためにお客様のコンテンツを保存および使用することをオプトアウトできます。
・クライアント側のテレメトリや使用状況のメトリクスを収集して使用する場合があります。IDE 内で AWS Toolkit の [Telemetry] (テレメトリ) 設定を調整することで、このデータ収集をオプトアウトできます。
とあります。
コード生成処理に既存のコード内容が利用されるようですが、設定する事でこれらのデータをAWSに保存しない事になっているようです。
また、生成コードの選択結果や利用の有無などのメトリクスデータの共有するしないも設定出来るようです。
さいごに
CodeWhispererを使ってみました。
1行ずつコード生成するのは結構もっさりする印象があり、また日本語コメントのみから生成するとあまり精度も高くなさそうですが、コード書いてる途中でも生成出来るのでオートコンプリート的な使い方も出来そうです。
これからクオリティは上がっていくと思うので期待して待っていたいと思います。