re:Invent 2024: AmazonがQ Developerで開発効率化、Java移行で年間2.6億ドル削減
はじめに
海外の様々な講演を日本語記事に書き起こすことで、隠れた良質な情報をもっと身近なものに。そんなコンセプトで進める本企画で今回取り上げるプレゼンテーションはこちら!
📖 AWS re:Invent 2024 - Streamlining software development across Amazon.com with Amazon Q (AMZ202)
この動画では、AWSのSenior Solutions ArchitectとPrime VideoのProduct Managerが、Amazon Q Developerの導入事例について解説しています。開発者が1日のうち実際にコードを書ける時間が1時間未満という課題に対し、Prime Videoチームは段階的なQ Developer導入を実施し、Unit Test生成から始めて全開発フェーズでの活用へと発展させました。特に注目すべき成果として、AmazonがQ Code Transformationを活用してJava 8からJava 17への移行を実施し、CPU使用率23.62%改善、ビルド時間44.8%短縮を達成。これにより年間2億6000万ドルのコスト削減を実現した具体的な事例が紹介されています。
※ 画像をクリックすると、動画中の該当シーンに遷移します。
re:Invent 2024関連の書き起こし記事については、こちらのSpreadsheet に情報をまとめています。合わせてご確認ください!
本編
Amazon Q Developerの概要と本セッションの導入
皆様、おはようございます。本セッションにご参加いただき、誠にありがとうございます。私はAWSのStrategic Accounts担当のSenior Solutions ArchitectのKirankumar Chandrashekarと申します。私の担当顧客はAmazonです。私たちは両方ともAmazonianですが、本日は私がAWSのアカウントチームを代表し、共同発表者は顧客側を代表しています。AWSとAmazonの関係はユニークです。歴史を振り返ると、AWSはAmazonから発展し、現在AmazonはAWSのサービスを利用しています。その中でもAmazon Q Developerはそのようなサービスの1つであり、本日はPrime VideoでのQ Developer導入の journey についてお話しさせていただきます。
おはようございます。私はPrime Videoのdeveloper experienceのProduct ManagerであるLilia Abaibourovaです。他のAmazonのビジネスや製品と同様に、Prime Videoもソフトウェア開発ライフサイクル全体でAWSサービスを利用しています。リサーチやプロトタイピングから、構築、テスト、デプロイ、そして大規模な本番ワークロードの運用に至るまで、すべてにわたっています。本日は、Q Developerの導入journeyについて皆様と共有できることを大変嬉しく思います。他にも多くのセッションがある中、お越しいただき、ありがとうございます。
アジェンダを簡単にご紹介させていただきます。まず、Amazonの各チームが異なるソフトウェア開発ライフサイクルのフェーズでQ Developerをどのように活用しているかについてお話しします。次に、この1年間でPrime VideoにおいてQ Developerをどのように導入したかについてご紹介します。最後に、AmazonがQ Transformという Q Developerの機能を使用して、何千ものアプリケーションのJDKアップグレードを、通常必要とされる時間や人員を大幅に削減して実施した方法について詳しくご説明します。
Amazonのイノベーションと開発者生産性向上への取り組み
多くの人にとって、Amazonと聞くと、まず小売の巨人を思い浮かべるでしょう。おそらく先週の金曜日にBlack Fridayのセールを利用してオンラインショッピングをされた方もいらっしゃるかもしれません。確かに、Amazonはeコマースに革命を起こしましたが、クラウドコンピューティング、エンターテインメント、ホームオートメーション、物流など、他の多くの産業でも革新を起こしています。ドローン配送もついに実現しました。私たちの会社は、世界中の何百万人ものお客様により良い体験を提供するため、可能性の限界に挑戦し続けています。
Amazonの絶え間ないイノベーションの中心にあるのは、スピードと俊敏性への注力です。素早く構築し、ローンチし、改善を重ねる能力が、Amazonを他社と差別化しています。この急速なイノベーションの背後には、何千人もの開発者がいます。developer experienceのProduct Managerとして、私はAmazonの開発者を主要な顧客として捉えています。私のチームはdeveloper experienceとデプロイメント速度やコードレビューの平均数といった開発者の生産性指標に注力しています。また、ツールやdeveloper experienceを改善するための最大の課題や機会について、開発者から直接フィードバックを得るためのサーベイも実施しています。
衝撃的な統計をご紹介したいと思います。開発者が1日に実際にコードを書ける時間は平均して1時間にも満たないということをご存知でしょうか?この統計はSoftware.comの業界調査によるものですが、多くの企業が抱える共通の課題を浮き彫りにしていると思います。皆さんの中にも共感される方がいるかもしれません。Developer ExperienceのProduct Managerとして、私はこの比率を逆転させたいと考えています。定型的なコードの作成やUnit Test、運用タスクなどに生産的な時間の大半を費やすのではなく、開発者がフロー状態でクリエイティブにコードを使って問題解決に取り組める時間を増やしたいのです。
ここでAmazon Q Developerの出番です。これは、差別化されていない作業の負担を軽減し、開発者がコードを書く時間を最大限に活用できるようサポートします。先ほどLiliaも、開発者が革新的でクリエイティブなソリューションを生み出せるよう時間を取り戻すことについて話していました。Amazon Q DeveloperはAWSを使用した開発タスクを含め、あらゆる開発作業に役立ちます。AWSサービスに関する知識と17年分のAWSのナレッジ、ベストプラクティス、Well-Architectedガイダンスを備えています。コードの作成から高度なコードアップグレードまで、アプリケーション開発ライフサイクル全体にシームレスに統合され、開発者やIT専門家の効率性、知識、熟練度を向上させます。
IDEでのチャット、AWSコンソール上でのアーキテクチャのベストプラクティスの相談、AWSドキュメントの参照、IDEでのQチャットなど、Amazon Q Developerは便利に活用できます。ここにいらっしゃる多くの方は、他のセッションでAmazon Q Developerについて聞かれたことと思います。この数日間で、Amazon Q Developerの新機能についても耳にされたことでしょう。Amazon Q Developerがサービスとしてリリースされた当初から、セキュリティとプライバシーを重視して設計されており、組織が生成AIベースのツールを安心して使用できるようになっています。
AmazonとSDLCについてお話ししましょう。Amazonも他の業界が従来から使用しているソフトウェア開発ライフサイクルと同じように開発を行っています。従来のソフトウェア開発ライフサイクルでは、開発者が何千行ものコードを手作業で書き、デバッグに時間を費やす必要があるため、改善が必要です。典型的なソフトウェア開発ライフサイクルがどのようなものか見てみましょう。まず計画フェーズから始まり、開発者はどのツールを使用するか、どのサービスを使用するか、どのテクノロジーを使用するかを検討し、計画を立てます。ここにいらっしゃる方で、ソフトウェア開発者の方はどれくらいいらっしゃいますか?かなりの数の手が挙がりましたね。
皆さんはコードを書く時間を持っていますが、すべての時間をコード作成に費やしているでしょうか?それとも他のタスクもこなしているでしょうか?ここで私たちは、この方程式を逆転させたいと考えています。ソフトウェア開発ライフサイクルの他のステージを見ると、皆さんにとってより身近なものかもしれません。何百万行ものコードを書くこと以外にも、テスト、Unit Test、Integration Testの作成、そしてコードのセキュリティ確保にも時間を費やします。アプリケーションが運用段階に入ると、エンドユーザーにサービスを提供できているか確認する必要があります。問題が発生した場合は、デバッグに時間を費やすことになり、最後にメンテナンスと近代化が必要になります。
Amazon Q DeveloperによるSDLC各フェーズの効率化
これは実際にとても時間のかかるタスクです。言語やフレームワークをアップグレードしようとすると、本当に時間がかかってしまいます。これらを自動化することはできないでしょうか?ある程度まで自動化は可能で、開発ライフサイクルを加速し、開発者により多くの時間を還元することで、お客様のニーズにより迅速に対応する素晴らしいソリューションを生み出すことができます。 これは、Amazonの創業者であり Executive Chair である Jeff Bezos が、ビジョナリーとして以前から述べていたことです:「ビジネスにおいてスピードは重要です。そして、高速な意思決定ができる環境の方が、より楽しいものです」
Amazonにとって、スピードは非常に重要です。迅速な開発サイクルは、Amazonの競争力の源です。 素早いイノベーションが Customer Obsession を支えています。Amazonは規模を拡大しながらもスピードを維持するために、常にプロセスを改善し続けています。また、より速いイテレーションによって、お客様のニーズにすばやく対応することができます。お客様のニーズは非常に重要です。私たちはそのニーズに応える必要があります。私たちは顧客から逆算して考えます。これはまさにAmazonのDNAとも言えます。私たちの仕事は、すべてお客様を起点としています。 お客様という意味では、私たちAmazonも顧客です。ここにいる他のお客様と同じように、私たちもフィードバックを受け取ります。市場投入までの時間を短縮することは非常に重要です。市場は非常に速いペースで動いているため、迅速なデプロイメントによってAmazonは市場トレンドをリードすることができます。競争も激しいので、市場投入までの時間を短縮し、アジリティを持って規模を拡大する必要があります。
これは継続的なプロセスであり、適切なSDLCライフサイクルを維持するために、プロセスの変更と改善を続けています。 AmazonのSDLCにおけるスピードの力を増幅させるために、Q Developer が 画像に示されているようにAmazonの強みとなっています。スピードと品質、そして効率性は密接に関連しており、Amazonは開発フェーズのコスト効率を維持しながら、これらのバランスを取ろうとしています。天秤を見てわかるように、Amazonはスピードを重視するあまり、品質と効率性を犠牲にすることはありません - すべての側面を維持したいと考えています。
SDLCを加速する上での課題には何があるでしょうか?これは他の業界でも共通する課題かもしれませんが、Amazonで特に見られる課題は以下の通りです:クロスファンクショナルな連携、つまりAmazonの業務全体で多様なチームとプロセスを連携させることです。画像の内容については後ほど説明しますが、まずは課題について話し、その後で気になる画像の説明に移りたいと思います。私が意図的にその画像を最初に表示したのは、インフラの複雑さに注目してもらいたかったからです。 広大で複雑なテクノロジーランドスケープを効率的に管理することは、Amazonの規模が非常に大きいため課題となっています。何千ものチームが何千ものアプリケーションに取り組んでいる状況で、テクノロジーとインフラが膨大な規模になると、Amazonのスケールでの管理は容易ではありません。
スケールでのテストには、急速な開発サイクルの中でも徹底的なテストを確実に行うことが含まれます。可視性とガバナンス については、スピードとコントロール、そしてコンプライアンス要件のバランスを取る必要があります。コンプライアンス要件を満たさなければ、SDLCの加速は非常に困難です。SDLCの加速においても、Q Developer が Amazonの強みとなっています。その画像が気になっているかもしれませんが、これはamazon.comを支える内部Amazonサービスをマップ上に示したものです。このように相互に接続された数多くのサービスのクラスターとして表示されています。これは何千もの相互接続されたサービスを示しており、それぞれが独自の開発サイクルを持っています。Amazonは2ピースモデルに従っており、この相互接続性により、特に連携とテストにおいてAmazonの課題が増幅されています。
Amazon Qが現在のAmazonにどのように役立っているのか見ていきましょう。ソフトウェア開発ライフサイクルの最初で最も重要なフェーズは計画です。Amazon QはAWS Management ConsoleとAWSドキュメントウェブサイトで利用できます。Amazonの開発者はそこからスタートし、AWSサービスについて質問し、最適なユースケースを決定し、どのようなインフラを使用できるかを判断するためのAWS計画の旅を始めます。次に、会話型コーディングのためのチャットを使って開発を進めます。集中力を切らすことなく、AWSのサービスやインフラについて質問することができます。ビジネスプランを連携させたい場合、Amazonの各チームはビジネス向けにQ内で独自のナレッジベースを作成し、新しい技術の構築に向けたビジネス目標とプロジェクト計画、技術計画を戦略的に連携させています。
これらはすべて自然言語のプロンプトとインタラクションを活用して行われます。技術的な詳細をすべて入力する必要はありません。自然言語でQに質問し、これらの要素を連携させ、Qを力の乗数として使用することで、効率的に計画を立てることができます。この動画で例を見てみましょう - 「AWSでWebアプリを構築したいのですが、どのような選択肢がありますか?」という単純な質問です。Qは実際にさまざまな選択肢を提示します。ビジネスニーズに応じてWebアプリを構築する方法は複数あるからです。計画段階なので、最適なオプションを選択できます。17年分のAWSの知識、ベストプラクティス、Well-Architectedのアドバイスに基づいて質問し、ガイダンスを得ることができます。Amazon Q Developerは次に作成フェーズに移ります。これが開発者が理想的には最も多くの時間を費やすべき楽しい部分だと思います。QはIDEとCLIにおけるコーディングの相棒のような存在です。
ソリューションアーキテクトである私も、プルーフオブコンセプトを構築する必要があります。最近、4人の開発者とツールを構築しましたが、Amazon Qがない時代を考えると、それには1週間以上かかっていたでしょう。私自身がそのツールを構築する際に、作成フェーズでSDLCサイクルをどれだけ加速できたかを示す生きた例です。
Amazon Qには、コーディングタスクを簡素化し、自動化で生産性を向上させ、コードを書いてくれるインテリジェントエージェントがあります。Amazonの開発者はAmazon Q Developer Agentを使用して、自動化でコードを構築・作成し、スマートな提案を得ています。会話型コーディングに関して、理解したいコードや既存のコードがある場合があります。10年前や5年前に書かれた他人のコードを読むのに時間を費やすことを考えてみてください - それは時間のかかる作業です。Amazon Qはコードベースの内容を自然言語で要約することができます。特にカスタマイズされた提案に関しては、Amazonのコードベースに基づいてカスタマイズされた推奨事項を提供します。これによりコード品質が向上し、開発が加速します。カスタマイズは、ほとんどのAmazonチームが使用している重要な機能の1つです。LiliaがPrime Videoの取り組みについて話す際に、カスタマイズがPrime Videoにどのように役立っているかについてより詳しく聞くことができます。
ここでAmazon Qが実現するAWSインフラのオートコンプリートの例を見てみましょう。左下の2番目の例では、コメントをプロンプトとしてLambda関数を構築しています。Amazon Q Developerがどのようにコード補完を行うかがわかります。次の例はCLIでのAmazon Qの動作を示しています。Amazon Qを使用してLinuxのCLIターミナルコマンドを自動補完したり、シェルスクリプトの構築を支援したりすることができます。最後に、Amazon QはIDEで会話型アシスタントとして利用でき、自然言語で質問することができます。「CloudWatchイベントツールのCDスタックを作成して」という質問が投げかけられています。それを尋ねると、Amazon Qがコードを提供してくれます。プロンプトを適切に調整すれば、ボイラープレートコードを得ることができます。
Prompt Engineeringについては広範なトピックなので、今回は詳しく触れません。別のセッションがあるかもしれません。現在のGenerative AIの世界で非常に重要なPrompt Engineeringについて、ぜひ一度ご覧になることをお勧めします。次はテストとセキュリティについてです。コードを書いた後にUnit Testを書く方は何人いらっしゃいますか?コードをリリースするためには、Unit Testは必須です。Amazon Qは、AIを活用して包括的なUnit Testの作成をサポートします。Amazonの開発者もUnit Testを使用しています。最近の例を挙げると、2週間ほど前にソフトウェアエンジニアの一人と話をしたのですが、彼らは自社製品のUnit Testの生成にAmazon Qを使用していて、手動でテストカバレッジを考えた場合には見落としていたかもしれない重要なケースまでAmazon Qが特定できたそうです。数時間で50%未満だったUnit Testのカバレッジを100%まで向上させることができました。
これは、Amazon Q Developerを使用したUnit Test生成における画期的な進歩です。Integration Testの生成も同様の方法で機能し、チームは統合テストシナリオの自動化を作成し、開発ライフサイクルの早い段階で問題を発見することができます。セキュリティスキャンについては、先ほども申し上げたように、Amazon Q Developerにはセキュリティスキャナーが組み込まれています。これはコード内の脆弱性を特定し、問題への対処方法を提供し、ソフトウェアのセキュリティ全体を向上させます。こちらがテストとセキュリティの例で、Amazon Q Developerが自動的にハードコードされたパスワードを検出しました。これは適切なセキュアパターンではありません。これを修正することもできますし、それでも解決しない場合は、Amazon Qチャットにコードの最適化を依頼すれば、すぐに対応してくれます。
運用フェーズでは、アプリケーションが本番環境に移行し、開発者はエラーのトラブルシューティングに時間を費やします。開発環境を離れることなく、ローカルでコードをビルドし、エラーが発生した場合は、すぐにAmazon Qに助けを求めて、エラーのトラブルシューティング、デバッグ、Conversational Codingによるコードの最適化を行うことができます。
この自然言語によるConversational Codingは特に便利です。私がPythonスクリプトを実行してエラーが出た時、ブラウザで検索するためにIDEを離れる必要はありませんでした。Amazon Qに質問するだけで、数秒で問題を解決できました。Amazonのチームは、IDEの中で即座にコードのデバッグを効率的に行うことができています。
AWSリソースとコストの最適化は、インスタンスのRight Sizingが可能なAWSコンソールで利用できます。チームは計画フェーズでこれを実行できます。ある程度運用が進んでインフラストラクチャを最適化したい場合は、リソースの使用状況を把握できるため、今すぐ実行することができます。こちらが運用フェーズの例で、Lambdaコンソールで利用可能なAmazon Qを使用して、エラーが発生した場合にすぐにトラブルシューティングができます。「Troubleshoot with Q」と入力すれば、Qがそのエラーの解決に向けて適切な方向に導いてくれます。
メンテナンスとモダナイゼーションのフェーズでは、 Amazon Q Developer Agent for code transformationを使用して、プログラミング言語やフレームワークのアップデートとアップグレードを支援します。本日のセッションの後半では、Amazonが非常に短期間でJDK 8からJDK 17への戦略的な移行をどのように行い、組織全体でどのように実行したかについてお話しします。 Amazon Q Developer Agent for code transformationでは、コードベースに加えられる変更と、その変更を行うためのステップを示すプランを確認できます。変更をコミットしたい場合は、それらの変更を取り込んでコミットし、通常のプロセスを進めることができます。この数日間で、JDK移行だけでなく、.NET移行やメインフレームのモダナイゼーション用のCode Transformation Agentもリリースされ、そのうちの1つはプレビュー版として提供されています。組織でニーズがある場合は、Amazonも活用しているこの機能をぜひテストしてみることをお勧めします。
Prime VideoにおけるAmazon Q Developer導入の journey
その話に入る前に、Prime VideoのAmazon Q導入についての話をLiliaに引き継ぎたいと思います。 Prime Videoの規模とイノベーションについてお話しさせていただきます。Prime Videoは単に大きいというだけでなく、 200以上の国と地域で数百万人の会員を抱える巨大なサービスです。 リニア放送やライブスポーツの豊富なカタログに加えて、 何千もの異なるクライアントデバイスで利用可能な100以上の有料アドオンサブスクリプションを提供しています。
スポーツファンの方なら、Thursday Night Footballをご存知かもしれません。これは毎週のライブイベントで、何百万人もの視聴者がシームレスなストリーミングを期待して視聴します。木曜日の夜だけでなく、先週は2回目となるBlack Friday night footballの配信も成功裏に終わりました。この配信は、Amazon.comが年間で最大の小売日をサポートしている時期と同時に行われなければならないという課題がありました。これらすべての裏側では、何千人もの開発者が、すべてを円滑に運営し、お客様のために新機能を継続的に生み出すべく懸命に働いています。
この1年間で台頭したGenerative AI技術により、私たちのチームは常に実験を重ね、この技術を活用した複数のカスタマー向け機能をローンチしてきました。 例えば、パーソナライズされたマイクロジャンルのカルーセルは、コンテンツをより深く理解することで、特定のトピックに関する高度にパーソナライズされたレコメンデーションを提供します。例えば、この画像にある「Wild wonders of the world」のように。もし私の家族のような趣味をお持ちでしたら、Prime Videoアプリでサイエンスフィクションのサメ映画のカルーセルがおすすめとして表示されるかもしれません。
最近ローンチした機能の中で私のお気に入りの一つが、 X-ray recapです。この機能は、LLMsを使用してエピソードや1シーズン全体の要約を分かりやすく生成します。私個人としては、第2シーズンが公開される頃には第1シーズンで何が起こったのかを完全に忘れてしまうので、この機能で追いつくことができて重宝しています。また、 AIを活用した検索結果で検索体験を向上させ、お客様に最高品質の画像をストリーミングするためにAIを活用しています。
私たちは、Generative AI技術を活用して開発者体験を向上させる機会があることを認識していました。そこで1年前、Prime Video内でGen AI for developer toolingプログラムを開始しました。これにはAmazon Q Developerの試験運用も含まれていました。この journey について詳しくお話ししたいと思います。ちなみに、Prime Videoで働いていて私が大好きなことの1つは、オリジナル作品のキャラクターをカメオ出演させることなので、皆さんの中にはこれから出てくる主人公たちを認識される方もいらっしゃるかもしれませんね。
次のスライドでは、Prime Videoのエンジニアが利用できる多くの開発者ツール(特殊なIDEプラグイン、プロファイラー、コードスキャナーなど)の中で、Amazon Q Developerの導入を、いわば見習いのような形で始めました。Amazon Q coding assistantは最も新しいツールで、当時はその能力の全容がわかっていませんでした。Qは本当にスーパーパワーを持っているのか、それともただの派手なデモに過ぎないのか。そこで小規模な実験から始めることにし、約100人の開発者によるパイロットプログラムを立ち上げました。これらのチームにツールをインストールしてもらい、トレーニングやプロンプトエンジニアリングのベストプラクティスを含む、体系的な導入セッションを開始しました。
チームが初期に自然と使用したユースケースは比較的基本的なもので、主にUnit Testの生成でした。この点については初期段階から非常に便利でした。正直なところ、Prime Videoのエンジニアたちは好奇心と懐疑心が入り混じった反応を示しました。彼らは賢い集団で、新しいツールを徹底的にテストし、たくさんのフィードバックを提供してくれなければ採用する気はありませんでした。しかし、これらの初期段階でも、パイロットプログラムの終了時アンケートで成果が見られました。エンジニアたちは、JavaDoc生成やUnit Test生成などのタスクで一貫して生産性の向上を報告しました。また、自社のコードベースに基づく例示やプロンプトエンジニアリングのヒントを含む導入セッションを実施したチームの方が、より良い成果を上げることもわかりました。
これは励みになる結果でした。ソフトウェア開発ライフサイクルのフェーズで言えば、この段階では主にテストフェーズでの使用に留まっていました。最初からQコンソールを使って計画を立てるところまでは行きませんでしたが、テストフェーズで特に有用性を見出しました。これらの初期の結果に励まされ、プログラムを拡大し、限定的なパイロットから限定的な本採用フェーズへと移行しました。優れた見習い、それがスーパーヒーローであれ、スパイであれ、AIコーディングアシスタントであれ、Qは素早く学習しました。定期的なモデルアップグレードにより、精度や提案の採用率の面で結果が改善されていきました。
また、早い段階からAmazon Q customization機能を活用しました。これによってQをPrime Videoの膨大なコードベースで学習させることができ、汎用的な提案ではなく、私たちのコードベースとベストプラクティスに合わせた推奨事項を得られるようになりました。さらに、ユースケースも拡大しました。エンジニアたちは、Infrastructure as Codeからビジネスロジックの生成、IntegrationテストやUnitテストまで、さまざまな用途でAmazon Q chatやQ inline autocompleteを活用するようになりました。この期間中、私たちが追跡している指標の1つである提案採用率は、モデルの改善とカスタマイズにより約30%上昇しました。この成功により、限定的な本採用フェーズをさらに多くの開発者に拡大することができました。
私たちがAmazon Qの導入を進めていく中で、Amazon Q Developerがビジネスロジックのコード作成をより効率的にし、テストフェーズでも非常に役立つことがわかってきました。Amazon Q Developerは、モデルを改善し、Prime Videoの開発者にとって有益な機能を追加することで、製品として成熟していきました。例えば、Workspaceレベルのコンテキストにより、Amazon Q Chatでのカスタマイズ機能が可能になりました。これにより、開発者がコードの最適化やデバッグにAmazon Q Chatを使用する際の精度が向上しました。Amazon Q Code Transformは、Prime Video内の何百ものアプリケーションにわたるJDKのアップグレードを効率化するのに役立ちました。Amazon Q CLIは昨夏にリリースされた新機能で、シェルスクリプティングにAIアシスタンスをもたらしました。これについては先ほどKirankumarがデモンストレーションを行いました。
これらの改善により、開発者はTest-Driven Developmentやインフラストラクチャのリファクタリングなど、より複雑なユースケースでもAmazon Qを使用し始めました。パイロットプログラムでのフィードバックの収集とアンケート調査を継続的に実施する中で、エンジニアから心強い声が寄せられるようになりました。この時点で、Amazon Qが開発体験を大きく変革する可能性を秘めていることを実感しました。この段階で、エンジニアは作成とテストに加えて、ソフトウェア開発ライフサイクルの運用・保守フェーズでもAmazon Qを活用するようになっていました。
Amazon Qがさらに機能を追加しモデルを改善していく中で、開発速度の向上だけでなく、カスタマイズ機能を備えた学習ツールとしても進化し、Amazon Q Chatのサポートも拡大していきました。開発者は自然言語でPrime Videoのサービスやコンポーネントの仕組み、それらの相互連携について質問できるようになりました。この機能により、開発者は新しいプロジェクトの計画段階や、新しい依存関係との統合方法を検討する際、あるいはチームに加入して新しいコードベースの理解を進める際など、ソフトウェア開発ライフサイクルのより早い段階からAmazon Qを活用し始めました。SlackやWikiで適切な連絡先を探す前に、まずAmazon Qに質問するようになったのです。
これは若手エンジニアだけでなく、ベテランにとっても有益でした。最近、あるシニアソフトウェア開発者から、プロジェクトで新しいプログラミング言語を学ぶ必要があった際、IDEの作業の流れを中断することなく、Amazon Qを使用して新しいコーディング構文をより速く理解できたという声を聞きました。より多くの開発者が異なるアーキテクチャアプローチやAWSサービスの使用についてのアイデアを出し合うためにAmazon Q Chatを使用し始めました。また、Wikiやドキュメントなどの膨大な非コーディング知識にアクセスできるAmazon Q Businessインスタンスを設定することで、コーディング以外の領域にも拡大しました。
開発者アンケートからの好意的なフィードバックと、開発速度やコード変更速度などの指標で意味のある改善が見られたことから、限定的な導入フェーズから組織全体への展開へと移行することを決定しました。この段階で、ソフトウェア開発ライフサイクルのすべての段階で、Amazon Qが私たちのチームに有用なツールとなっていました。
Amazon Qによるソフトウェア開発ライフサイクルの導入についてまとめますと、私たちの取り組みは大きな変革をもたらしましたが、まだ道半ばです。現在、開発者たちは様々なタスクにおける時間削減を報告しており、これは効果的なDeveloper Experienceプログラムを運営する上で重要な指標となっています。メトリクスも重要で、私たちは開発速度やコード変更の速度などの指標に特に注目しています。Amazon Q Developer導入後、チームと個人の両方で向上した結果が得られています。これらのメトリクスは、Q Developer導入後のチームと個人の両方について追跡しています。
また、Q Developerチームと密接に連携してフィードバックを提供するため、より製品に特化したメトリクスも追跡しています。先ほど述べたように、提案採用率は、生成された100の異なる提案のうち、チームや開発者が実際に採用した提案の割合を示しています。この率は、モデルの改善とQが利用できるコンテキストの拡充により、着実に上昇しています。
インタビューを通じて、エンジニアたちはコンテキストスイッチングが減少したことで、より生産的に、より長時間フローの状態を維持できるようになったことがわかりました。技術的な質問の答えを調べるために異なるブラウザタブを行き来する必要がなくなり、QチャットのオートコンプリートやQ CLIを使用してIDE内でより多くのことを達成できるようになりました。
結論として、この変革はまだ終わっていないと考えています - 私たちはまだ途上にいます。Prime Videoがストリーミングの可能性の限界に挑戦し続け、AWSがAIと生成AIコーディングアシスタントの可能性の限界に挑戦し続ける中で、Prime Videoのチームがより効率的にイノベーションを生み出せるよう、これらの機能をさらに活用していくことを期待しています。
Amazon Q TransformsによるJDKマイグレーションの革新的成果
ありがとうございます、Liliaさん。素晴らしい journey でしたね。これこそがPrime Videoのストーリーについて私が言及する理由です - Qに対するPrime Videoの信頼関係です。最初は懐疑的でしたが、従来のSDLCステージでいうプランニングフェーズから始めるのではなく、すでにソフトウェア開発ライフサイクルの中にいました。開発者たちはUnit Testの生成からQを活用し始め、Qは信頼を獲得し、他のすべてのソフトウェア開発ライフサイクルのステージへと進化し、彼らは継続的にそれを使用しています。
最後のトピックとして、Q Developerが戦略的にAmazonの JDKマイグレーションをどのように支援したかについてお話ししたいと思います。CEOのAndyの投稿をご覧になった方もいらっしゃるかもしれません。その投稿では、Amazonが、Q Code Transformationによるパフォーマンス向上により、開発工数4,500年分と年間2億6,000万ドルのコスト削減を実現したと述べられています。AmazonはJava Transformation機能を自社の内部システムに統合し、数万にのぼる本番アプリケーションをJava 8の古いバージョンからJava 17へ移行することができました。
Amazonがこのプログラムを戦略的に実施したのは、アプリケーションのメンテナンスとアップグレードに関する課題を理解していたからです。時間がかかり、チームはサポート終了した言語からのアップグレードが必要で、技術的負債が生まれ、開発者は差別化されていないタスクを減らしたいと考えています。私たちは、レガシーアプリが積み重なり多大な労力を必要とする状況を、可能な限り自動化を活用することで改善したいと考えています。
Java 8からJava 17への移行にはいくつかの利点があります。これは重要な検討事項で、言語バージョンが異なり新しいことによるパフォーマンスの向上とセキュリティの改善が含まれます。言語レベルの機能強化が改善され、モダナイゼーションのための最新のツールキットやライブラリとの統合も向上しています。新しいフレームワークを使用する必要があり、レガシーフレームワークを使い続けることはできません。そして何よりもまず、使用する製品やテクノロジーにとって不可欠な長期サポートがあります。また、コードをより効率的にできる拡張APIとライブラリも重要です。
さらに、Java 17のコミュニティやリソースのサポートは、Java 8と比べてより包括的です。これらすべてのメリットを評価した後、手作業ではなく、Amazon Q Transformsを使用してこのプロセスを自動化することを検討しましょう。
手動でのマイグレーションに必要な作業を見てみましょう。Java 8からJava 17へのコード移行に関する知識を得るために、広範な調査と大量のドキュメントを読む必要があります。その後、コードの作成を開始し、Java 8からJava 17形式に更新します。また、依存関係の更新も必要で、これは時間のかかるタスクです。その後、コードはレビュー、ビルドプロセス、テストを経る必要があります。このプロセスのどの段階でもエラーが発生した場合、成功するまでデバッグとトラブルシューティングが必要になります。これにより、エラーを理解して解決するためのさらなる調査とドキュメントの確認が必要となり、このサイクルが続いていきます。
このプロセスには、効率的なコードを書いたり創造的な作業に費やせたはずの開発者の貴重な時間が大量に消費されてしまいます。平均すると、1つのアプリケーションあたり2〜4日の開発者の時間がかかります。すべてのケースに同じ方法が通用するわけではありません - アプリケーションが複雑で大規模な場合、このプロセスは数週間に及ぶこともあります。これは、Amazonの各チームが経験に基づいて共有している情報です。しかし、ここで印象的な指標をご紹介します:あるAmazonのチームは、1,000個のアプリケーションをJava 8からJava 17にわずか2日間でアップグレードしました。1アプリケーションあたり平均10分、大規模なアプリケーションでも1時間以内で完了しています。この作業は画期的なものとなり、Amazonは何万ものJava 8アプリケーションを最小限の時間でJava 17に戦略的に移行することができました。
Amazon Qがどのようにしてこれを実現しているのか、見ていきましょう。先ほど説明した手動のワークフローを考えてみてください。Amazon Qでは、Q Transformがすでにナレッジベースを持っているため、調査を行う必要がありません。ビルドとテストが可能なソースコードを提供すれば、Qがそのナレッジベースを適用します。エラーが発生した場合は、Generative AIを活用してそれを修正し、コードがアップグレードされます。このプロセスは合理化され、複数のドキュメントを参照するためにIDEを離れる必要もなくなります。
Q Transformがどのように機能するか、実際にお見せしましょう。Java 8のパッケージがIDEに読み込まれており、Qで認証が済んでいる状態を想定してください。「agent/transform」と入力し、いくつかの詳細を追加することで、Q Transformation Agentを起動します。Qは入力されたソースコードを特定し、変換し、分析して、変換されたコードを返します。もう1つ注目すべき点として、Amazonは一部のアプリケーションに対してこれを一元的に実装しました。コードパッケージを一元的に取得し、変更リクエストを作成し、Q Developer Transformsを使用してこれらのリクエストを処理しました。
パフォーマンスの指標を見てみましょう。同じアプリケーションをJDK 8とJDK 17で実行した場合を比較すると、CPU使用率が23.62%改善され、レイテンシーのパフォーマンスが向上し、パッケージのビルド時間が44.8%短縮されました。Java 17への移行後、他のアプリケーションでも同様の改善が見られました。レイテンシーをグラフで見ると、アプリケーションのロジックを変更することなく、大幅な改善が確認できます。左側はJDK 8で実行した際のレイテンシースパイクを示し、右側はJava 17への移行後の改善されたパフォーマンスを示しています。この例は、AmazonがAmazon Q Developerを使用してパフォーマンスの改善により2億6000万ドルの節約を達成した方法を示しています。手動でも実現は可能でしたが、はるかに長い時間がかかっていたでしょう。以上で発表を終わります。ご清聴ありがとうございました。
※ こちらの記事は Amazon Bedrock を利用することで全て自動で作成しています。
※ 生成AI記事によるインターネット汚染の懸念を踏まえ、本記事ではセッション動画を情報量をほぼ変化させずに文字と画像に変換することで、できるだけオリジナルコンテンツそのものの価値を維持しつつ、多言語でのAccessibilityやGooglabilityを高められればと考えています。
Discussion