AWSは米国時間6月29日に、コードレビューツールであるCodeGuruの一般公開を発表した(Amazonリリース)。2019年12月に開催されたAWS re:Inventでプレビューをローンチした(未訳記事)。このツールセットは、機械学習を利用してバグを見つけ、また最適化のアドバイスを行う。
CodeGuruを構成する2つのツールであるReviewerとProfilerは、その名のとおりのツールだ。AWSのチームはReviewerを作るために、GitHub上の1万あまりのオープンソースプロジェクトのコードと、Amazon(アマゾン)自身の内部的なコードベースのレビューでアルゴリズムを訓練した。
今回の発表で同社は「アマゾンのような大きな企業でも、毎日書かれるコードの量は膨大であり、コードレビューに十分な時間を割ける経験豊富な開発者を確保することは難しい。しかも経験を積んだレビュアーでも問題を見逃すことがあり、アプリケーションが顧客の目の前で動き出してからバグやパフォーマンスの問題が現れることもある」と述べている。
CodeGuruを使う開発者は自分のリポジトリに継続的にコードをコミットするが、そのリポジトリはGitHubやBitbucket Cloud、AWS自身のCodeCommitなど何でもよい。CodeGuru Reviewerはそのコードを分析してバグを見つけ、見つかったらバグフィックスを提案する。この過程はすべてコードリポジトリに対して行われるため、例えばCodeGuruはGitHubのプルリクエストを作り、それにバグやフィックスに関する情報をコメントとして付けたりする。
機械学習のモデルを訓練するためにユーザーはCodeGuruにフィードバックを送れるが、それは主に「よい(thumbs up)」と「だめ(thumbs down)」だけだ。
CodeGuru Application Profilerは、目的がやや違う。それはコード中の非効率と思われる部分や、無駄なコードを探し出す。このツールはAWSのLambdaやFargateのようなサーバーレスのプラットフォームもサポートする。
最初に発表されたCodeGuruに後から加わった機能の1つとして、Profilerは最適化されていないコードに対して、その損失をUSドルの金額で表示する。
Amazon Machine Learningの副社長であるSwami Sivasubramanian(スワミ・シバスブラマニアン)氏は、発表で次のように述べている。「顧客は常に大量のアプリケーションを開発して動かしており、それらには何百万行ものコードが含まれている。それらのコードの品質と効率性を確保することは極めて重要だ。バグやほんの数行の非効率なコードでも、とても高くつくことがある。しかし今日ではコードの品質を見分ける方法には時間もかかり、手作業で行われているため大規模で行うとエラーも多くなる。CodeGuruは、Amazonの長年のアプリケーション開発とデプロイの経験に機械学習の専門的能力を組み合わせて、ソフトウェアの品質を改善しアプリケーションのパフォーマンスの向上と、無駄なコードの排除でお客様に喜んでいただけるだろう」。
AWSによると、すでに多くの企業がプレビューの期間にCodeGuruを使い始めている。AtlassianやEagleDream、DevFactoryなどの企業も含まれている。
Atlassianのエンジニアリング、テックチームのトップであるZak Islam(ザック・イスラム)氏は、次のように語っている。 「私たちの開発チームが行うコードレビューは、バグの未然の発見では良い仕事をしているが、強いストレスがあるときや、複雑な構造のデータを管理するときのシステムの振る舞いの予見をいつでもできるとは限らない。私たちのように毎日複数のデプロイが行われているところでは、なおさらだ。しかし完成コードに異変が生じたときでも、Amazon CodeGuruの継続的プロファイリング機能があれば、調査に要する時間を数日から数時間へ、数分へ減らすこともできる。現在では弊社のデベロッパーたちはエネルギーを、他社製品との差別化に注ぎ込むことができ、問題の調査に費やす時間をかなり減らすことができた」。
画像クレジット: TechCrunch
[原文へ]
(翻訳:iwatani、a.k.a. hiwa)