OPS

【AWS re:Invent 2023】Amazon CodeWhispererのベストプラクティス

2023.12.08

本記事のポイント

Amazon CodeWhispererのベストプラクティスと最新情報についてのセッション内容をご紹介します。
生成系AIによってコードの提案をするこのサービスは開発者にとって必見の内容となるでしょう。


セッション情報


セッション名 Best practices for Amazon CodeWhisperer
セッション概要(原文) Generative AI can create new content and ideas, including conversations, stories, images, videos, and music. Learning how to interact with generative AI effectively and proficiently is a skill worth developing. Join this session to learn about best practices for engaging with Amazon CodeWhisperer, which uses an underlying foundation model to radically improve developer productivity by generating code suggestions in real time.
セッション概要(翻訳) 生成系AIは、会話、ストーリー、画像、動画、音楽など、新しいコンテンツやアイデアを生み出すことができます。生成系AIと効果的かつ上手に対話する方法を学ぶことは、開発する価値のあるスキルです。このセッションに参加し、Amazon CodeWhispererと関わるためのベストプラクティスについて学びましょう。Amazon CodeWhispererは、基礎となるモデルを使用して、リアルタイムでコード提案を生成することにより、開発者の生産性を根本的に改善します。
登壇者 役職 会社名
Doug Seven GM, Amazon CodeWhisperer Amazon Web Services
Rory Richardson Director, Next Generation Developer Experience Amazon Web Services

Amazon CodeWhisperer

Amazon CodeWhisperer(以下、CodeWhisperer)はIDEとコマンドラインのためのAI搭載生産性向上ツールです。 AIコーディングを使用してアプリをより速く、より安全に構築する「仲間」という説明がされました。

具体的にできることは、以下になります。

  • リアルタイムでコード提案を生成
  • コードをスキャンして見つけにくい脆弱性を見つける(コードスキャン)
  • オープンソースのトレーニングデータに類似したコードにフラグをつけるかデフォルトでフィルターする(リファレンストラッカー)

  • CodeWhispererはあなたの親友という表現がされていました。 ユーザーがIDEでコードを記述すると自動的にCodeWhispererに送信され、CodeWhispererからコードの提案を受け取ることができます。

    ここでVS Codeのデモを見ることができました。 コメントで作りたい関数の指示を出すことでCodeWhispererが適切な関数を生成してくれていました。 関数名も生成してくれ、さらに各行にはどういう意図かコメントで説明も生成されています。 ユーザーが入力したのは1行目の「トポロジカルソートする関数」というコメントのみです。

    またこんな表現もされていました。
    「これは一種の魔法です。」

    大規模なデータの増加があり、スケーラブルなコンピューティングの可用性といった歴史を経て、機械学習の革命が今起きているところだそうです。

    次は基盤モデルの仕組みについての説明でした。
    基盤モデルの仕組みは、大量のラベルなしのデータを事前にトレーニングすることで1つの基盤モデルで幅広い一般業務に対応できるようになっています。

    例えばチャットなどの顧客体験の向上、検索、コーディングなどの従業員の生産性の向上、デザインやモデリングなどの創造性、文書処理などの業務運営の改善など多くの業務に応用できます。

    Amazon CodeWhispererのベストプラクティス

    1つ目のベストプラクティスは、言語モデルを導くために入力コンテキストを使用することです。

    これはプロンプトエンジニアリングと呼ばれる少々クレイジーなものです。 望ましい出力を得るために詳細に指示を出す技術となります。 入力コンテキストはCodeWhisperer言語モデルが意図を推測するために使用するものです。 言語モデルは入力コンテキストからパターンを複製します。

    例では歌を作る関数を生成するという題でした。 関数の入力と出力を明示して、歌を作るために必要なパラメータ名とその説明をコメントします。 これが入力コンテキストです。するとCodeWhispererが入力コンテキストに適した関数を生成します。

    2つ目のベストプラクティスは、関連するファイルを複数開いて、より関連性の高い入力コンテキストを提供することです。
    入力コンテキストは開いているファイルにまたがることができます。

    3つ目のベストプラクティスは、要件を使用して複雑なコードを生成することです。
    CodeWhispererは複雑なコメントの意図を理解できます。 コメントを使用して関数やテストの生成ができます。

    これらを意識して、CodeWhispererを使用するとより自分の欲しいコードが生成され、生産性も上がりそうです。

    最新情報

    セッションの紹介順とは前後しますが、今回発表された最新情報をまとめて紹介します。

    CodeWhispererはPython、Javaをはじめとした様々なプログラミング言語に対応していましたが、今回、AWS CloudFormationに対応したと発表がありました。

    また、IDEについてもVS Code, AWS Cloud9, AWS Lambda ConsoleなどのIDEに加え、今回、Visual Studio 2022に対応したと発表がありました。

    CodeWhispererはセキュリティスキャンを内蔵しており、見つけにくいセキュリティの脆弱性を特定する機能が備わっています。 このAIを活用したコード修復機能は現在、Java, Python, Javascriptをサポートしていました。 今回新たにTypescript、C#, CloudFormation, Terraformをサポートすると発表がありました。

    コマンドライン用のCodeWhispererがプレビュー版として使用することができます。
    コンテキストに応じたCLI補完と自然言語からbashへ翻訳することができます。 例えばこのディレクトリ内のすべてのファイルをS3にコピーして、とテキストで入力すると、 CodeWhispererはそれに対応したawsコマンドを提示してくれます。

    CodeWhispererを自分用にカスタマイズできる機能がプレビュー版として使用することができます。
    内部ライブラリ、API,パッケージ、クラス、メソッドを考慮した、リアルタイムの推奨事項を生成する機能です。 内部コードリポジトリに安全に接続して、他の顧客やCodeWhispererを駆動するLLMから隔離されたカスタマイズを作成します。 またどの開発者がカスタマイズにアクセスできるかを完全に制御します。 CodeWhispererを使うにあたって自社の情報漏洩やセキュリティ面が心配な場合にも安心して使うことができるようになりそうです。

    まとめ

    CodeWhispererのベストプラクティスと最新情報についてのセッションでした。 CodeWhispererは自然言語とコードを橋渡ししてくれるようなサービスだと思います。 セッション中であなたの親友だという表現があったように、今後はなくてはならないツールになるかもしれません。 ぜひ使ってみてはいかがでしょうか。