Amazon Web Services ブログ
Amazon CodeWhisperer でソフトウェア開発を最適化する方法
企業は新しい機能を、より早く顧客に提供することで差別化を図ります。自動化を活用してコード品質を最適化し、パフォーマンスを向上させ、ソフトウェアがセキュリティ/コンプライアンス要件を満たしていることを確認することで、ソフトウェア開発を加速する必要があります。 Amazon CodeWhisperer は何十億行にも及ぶ Amazon とオープンソースのコードでトレーニングを受けた AI コーディングのパートナーであり、開発者は 統合開発環境 (以下、IDE) 内で全行コードおよび全機能コードの候補をリアルタイムで生成してコードを書くのに役立ちます。Amazon CodeWhisperer には 2 つの Tier があります。 Individual Tier は無料で、 Professional Tier は開発者に Code Whisperer へのアクセスを許可したい組織に管理機能を提供します。このブログでは、開発者が CodeWhisperer を使用する方法について概要を説明します。
はじめに
CodeWhisperer を使い始めるのは簡単で Amazon CodeWhisperer のリソースに文書化されています。セットアップが完了すると、CodeWhisperer は IDE と統合され、IDE に記述されたコメントに基づいてコード候補が表示されます。提案を受け入れるには Tab を使用し、提案を拒否するには Esc を使用し、提案を強制するには ALT + C (Windows) / Option + C (MAC) を使用し、提案を切り替えるには左矢印キーと右矢印キーを使用します。
CodeWhisperer は 15 種類のプログラミング言語のコード生成をサポートしています。 CodeWhisperer は Amazon Sagemaker Studio、Visual Studio Code、AWS Cloud9、 AWS Lambda や多くの JetBrains IDE など、さまざまな IDE で使用できます。サポートされている言語と IDE の最新情報については、Amazon CodeWhisperer documentation を参照してください。
コンテキストコードの提案
CodeWhisperer は、コンテキストに応じたコード候補がないか、コードとコメントを継続的に調べます。このコンテキスト情報とカーソルの位置を使用してコードスニペットを生成します。下の図は、Visual Studio Code のインラインコメントからのコード候補の例です。これは、CodeWhisperer が、ユーザーが変数やパラメーターを手動で置換しなくても、コンテキスト固有のコード候補を提供する方法を示しています。コメントでは、ファイルと Amazon Simple Storage Service (Amazon S3) バケットが指定されており、CodeWhisperer はこのコンテキストを使用して関連するコードを提案しています。
CodeWhisperer は、シェルスクリプトやクエリ言語などの宣言型コードや手続き型コードの記述もサポートしています。次の例は、CodeWhisperer がシェルスクリプト内のコードブロックをサーバー間でループ処理して “hostname” コマンドを実行し、その応答を出力ファイルに保存することを推奨する方法を示しています。
次の例ではコメントに基づいて、CodeWhisperer が共通のテーブル式を使用するための構造化クエリ言語 (SQL) コードを提案しています。
CodeWhisperer は一般的な IDE で動作します。サポートされている IDE の詳細については、CodeWhisperer のドキュメントを参照してください。下の図は、CodeWhisperer が AWS Lambda コンソールと統合されているところです。
CodeWhisperer は、AWS 関連のタスクや API 統合、外部 (AWS 以外) の API 統合など、さまざまなタスクを支援できる汎用性の高い AI コーディングアシスタントです。たとえば、下の図は、CodeWhisperer が Twilio の API のコードを提案しているところです。
CodeWhisperer がコードをより速く記述するのにどのように役立つかを確認したので、次のセクションでは、責任を持って AI を活用する方法を探ります。
責任を持って AI を活用する方法
開発者はしばしばオープンソースコードを利用しますが、著作者の帰属やライセンステキストの管理など、ライセンスの帰属に関する課題に直面します。課題は、プロジェクト内で使用されている関連するオープンソースコンポーネントを適切に特定して帰属させることにあります。オープンソースのライブラリーやフレームワークは豊富にあるため、各コードを正確に追跡して属性を付けるのは時間がかかり、複雑になりがちです。ライセンスの帰属要件を満たさないと、法的な問題、知的財産権の侵害、開発者の評判の低下につながる可能性があります。CodeWhisperer のリファレンストラッキングでは、提案されたコードが既知のオープンソースコードとの類似点がないか継続的に監視されるため、開発者はそれをプロジェクトに組み込んで適切な帰属を確保することについて、情報に基づいた決定を下すことができます。
Shift left アプリケーションセキュリティ
CodeWhisperer はコードをスキャンして、オープンウェブアプリケーションセキュリティプロジェクト (OWASP) のトップ 10 に含まれる脆弱性や、暗号化ライブラリのベストプラクティスや AWS 内部セキュリティのベストプラクティスなどを満たさない脆弱性など、見つけにくい脆弱性がないか調べることができます。2023年5月30日時点では、CodeWhispererは Python 、Java 、JavaScript の各言語でのセキュリティスキャンをサポートしています。下の図は、最もよく知られている CWEs (共通脆弱性タイプ一覧) を識別する方法と、ボタンをクリックするだけで問題のあるコード行を詳しく調べる機能を示しています。
下の例では、CodeWhisperer が CWE のファイルごとの分析を行い、サニタイズされていない入力がコードとして実行、クロスサイトスクリプティング、リソースリーク、ハードコーディングされた認証情報、SQL インジェクション、OS コマンドインジェクション、安全でないハッシュなど、OWASP CWEs の上位 10 件を強調しています。
テストケースの生成
優れた開発者は常にテストを書きます。CodeWhisperer はテストケースの提案やコードの機能の検証に役立ちます。CodeWhisperer は、境界値、エッジケース、その他テストが必要な可能性のある問題を考慮します。以下の例では、fact_demo 関数の使用に関するコメントがあると、CodeWhisperer はコンテキストの詳細を活用しながら fact_demo のユニットテストを提案します。
また、CodeWhisperer を使用すると、ユニットテスト用の繰り返しコードを簡単に作成できます。たとえば、INSERT ステートメントを使用してサンプルデータを作成する必要がある場合、CodeWhisperer はパターンに基づいて必要な insert を生成できます。
Amazon SageMaker Studio と Jupyter Lab の CodeWhisperer
CodeWhisperer は SageMaker Studio や Jupyter Lab と連携して、コードセル内の Python のコード補完機能を提供します。CodeWhisperer を利用するには、Amazon SageMaker Studio と Jupyter Lab のセットアップ手順に従ってアクティベートしてください。コーディングを始めるには、User actions を参照してください。
下の図は、SageMaker Studio で CodeWhisperer が推奨するコードを示しています。データセットを読み込んで分析するためのコメントに基づいた推奨コードを示しています。
おわりに
このブログでは、開発者がCodeWhispererを活用して生産性を高め、ワークフローを合理化し、安全なコードを確実に開発するためのさまざまな方法を紹介しました。Code Whisperer の AI 搭載機能を採用することで、開発者は生産性の向上、学習の促進、大幅な時間節約を実現できます。
CodeWhisperer を活用してコーディングプロセスを最適化するための次のステップは次のとおりです。
1. CodeWhisperer のメリットについて詳しくは、特集ページをご覧ください。
2. サインアップして CodeWhisperer を開始してください
3. CodeWhisperer のサクセスストーリーについて読んでください
著者について
この記事は Optimize software development with Amazon CodeWhisperer (記事公開日: 2023 年 5 月 30 日) の翻訳記事です。翻訳はソリューションアーキテクトの江口が担当しました。