Amazonが開発したAiツール『CodeGuru』とは?

自動でコードレビューをしてくれるサービス「CodeGuru」が話題になっています。機械学習を利用したAIツールで、アプリケーションの最適化、負荷の原因になっているコード行の特定、ソースコードの品質向上、CPU使用率削減などを行ってくれます。Amazon Web Services(以下AWS)から一般提供が開始されたことで、アプリケーション開発者の間で注目を集めています。
コストも時間もかかりがちなコードレビューが自動化できれば、アプリケーション開発がかなり楽になるでしょう。そこで今回は、AWSのAIツール『CodeGuru』について、解説していきたいと思います。コードレビューやコストパフォーマンス向上にお悩みの方は、ぜひ目を通してみてください!
目次
AmazonのAIツール『CodeGuru』とは?
米国時間の6月29日、Amazon Web Services(以下AWS)は「CodeGuru」の一般提供を開始しました。CodeGuruとは、コード品質の改善や、バグや問題防止のためのレコメンデーションAIを搭載した開発者向けツールです。
機械学習による最適なパフォーマンスや、コストの最適化、コードレビューの自動化サービスを提供してくれるサービスです。コードの問題を検出して修正方法を示す「Amazon CodeGuru Reviewer」と、アプリケーションの性能最適化を支援してくれる「Amazon CodeGuru Profiler」という二つの機能があります。
2019年12月、ラスベガスで開催された「AWS re:Invent 2019」において、すでにサービス自体は発表されていました。Amazonにおける数十万の内部プロジェクト、GitHub上の1万以上のオープンソースプロジェクトのコードをベースにして、機械学習を行ったモデルを用いてコード分析が行われます。
開発したアプリケーションを、サーバー上で利用するための一連の作業は「デプロイ」と呼ばれています。一般的にデプロイ後のアプリケーション監視に十分な開発者を見つけるのは、非常に困難だとされています。
またバグやパフォーマンスの問題が発生しない保証もありません。しかしCodeGuruなら、既存の統合開発環境(IDE)と統合して、人気の高いオープンソースプロジェクト1万以上ののAIアルゴリズムを利用することが可能です。書かれているコードを評価するコンポーネントで、これまで困難でコストがかかるとされていた問題を解決してくれます。CodeGuruの登場により、今後のアプリケーション開発は、かなり楽に行えるようになるでしょう。
AIツール『CodeGuru』にできること
CodeGuruには、以下の二つの機能があります。
CodeGuru Reviewer
「CodeGuru Reviewer」は、コードレビューの自動化や、コードの問題検出を行ってくれる機能です。コードレビューの自動化においては、AWSが今まで培ってきた技術力や機械学習を用いて、コードレビューを行ってくれます。主に以下のような、本番での問題につながる可能性が高い問題点にフラグを立ててくれるでしょう。
・ベストプラクティスからの逸脱を検出
・ページネーションの欠落を検出
・バッチ処理でのエラー処理 など
ソースコードのプルリクエストを自動的に分析することで、重要な問題を発見。コードの欠陥を解決する推奨事項も提示してくれます。たとえば以下のような事柄の発見や、解決方法を提案してくれるでしょう。
・スレッドセーフの問題
・サニタイズされていない入力
・資格情報など機密データの不適切な処理
・リソースリークのチェック など
またコード内のAWS APIとSDKの使用状況についてコードレビューし、最新のAWSの機能を利用しているかも判断してくれます。これにより、ベストプラクティスを常に最新の状態に保つことが可能となるでしょう。
CodeGuru Reviewerがサポートする言語は、2020年7月時点でJavaのみとなっています。
CodeGuru Profiler
「CodeGuru Profiler」では、オブジェクトの過剰な再現、非効率なライブラリの使用、過剰なロギングといった問題における推奨事項を提供してくれる機能です。
本番環境で実行しているアプリケーションの、さまざまな節約可能な部分を発見できるようになります。アプリケーションのCPU使用率と遅延特性を分析して、もっとも実行コストがかかっているコードの行を検出してくれます。またアプリケーションのパフォーマンス問題も自動的に識別。CPU仕様率、計算コスト削減、性能改善の方法なども提示してくれるでしょう。
これらの分析結果はグラフとして可視化されるので、ユーザーはどの点を改善すべきか簡単に把握できます。推奨事項の中には、非効率なコードを実行し続けることによるコストの見積もりも含まれています。2020年7月時点でのサポートは、Javaおよびその他のJVM言語となっています。
『CodeGuru』のメリット
「CodeGuru」を使用するメリットについて見ていきましょう。
コストがかかりすぎている部分を発見できる
コードとアプリケーションが効率的であればあるほど、実行コストは減少していきます。CodeGuruを使用すれば、アプリケーションの節約可能な部分が簡単に発見できるようになります。
パフォーマンスの問題、修正方法、推奨事項、非効率なコード実行にかかるコストの見積もりを提供してくれます。また修正に優先順位をつけることも可能なので、非常に便利だと言えるでしょう。
パフォーマンスの最適化が可能
AWS Lambda、Amazon EC2、Amazon ECS、AWS Fargate、AWS Elastic Beanstalk、オンプレミスで実行するあらゆるアプリケーション
プロファイラーエージェントをJVMに添付
EC2、コンテナ、オンプレミスアプリケーション
Lambdaをインスタンス化する場合には、1行の変更でLambdaコード内にエージェントが添付されます。
コードの問題を本番稼働前に発見できる
CodeGuruは、AWSが何十年に渡り蓄積した知識と技術に基づいたトレーニングが実行されています。コードレビューの場合、GitHub、GitHub Enterprise、Bitbucket Cloud、AWS CodeCommitなどにコードをコミット。Amazon CodeGuru Reviewerが既存のコードベースを分析して発見しにくいバグ、重大なコードの問題などを高い精度で識別してくれるでしょう。それらの問題を修正する方法も提供し、連続するコードレビューのベースラインを作成してくれます。
異常の早期検出と通知が可能
Amazon CodeGuru Profilerは、パフォーマンスの異常を自動的に検出してくれます。異常が検出された場合、10分以内に指定先へと通知が送信されます。早期検出と通知により、本番環境で問題が深刻化する前に防止できるでしょう。ユーザーへ影響を与える前に、修正するための十分な時間が得られます。
『CodeGuru』のデメリット
「CodeGuru」を使用する上での問題点についても紹介させていただきます。
プロファイルできるアプリケーションの種類が限られている
2020年7月現在、プロファイルできるアプリケーションの種類は限定されています。Amazon CodeGuru Profilerは以下のアプリケーションで動作するので、留意しておいてください。
・Amazon EC2、Amazon ECS、Amazon EKSで実行されるコンテナー化されたアプリケーション
・AWS Fargateで実行されるサーバーレスアプリケーションでホストされるアプリケーション
対応リージョンが限定されている
2020年7月現在、AWS コンソールで表示が確認できたのは以下のリージョンです。
・アジアパシフィック (シドニー)
・欧州 (アイルランド)
・米国西部 (オレゴン)
・米国東部 (バージニア北部)
・米国東部 (オハイオ)
このように現時点では国外リージョンとなっていますが、AWSコンソールからは利用できるようになっています。
まとめ
今回はAWSが提供開始したAIツール「CodeGuru」について解説しました。
CodeGuruはコードレビューの自動化や、コードの問題検出、実行コストの削減などを行ってくれます。今まで困難とされていたことがお手軽に行えるようになるので、今回の一般提供開始は非常に注目を集めています。
Amazonによると社内では8万件のアプリケーションの最適化に利用され、数千万ドルの節約につながったとされています。現在は国外リージョンとなっていますが、今後の動向からは目が離せません。新たな情報が発信され次第、本サイトでも情報を提供していきたいと思います。