Amazon Web Services ブログ

Amazon CodeGuru Reviewer のアップデート: 最大 90% 値下げとなる新しい予測可能な料金モデル、Python サポートが一般利用可能に

Amazon CodeGuru は、機械学習と自動化された推論を活用した推奨事項により、コードレビューの自動化とコード品質の向上を支援します。 CodeGuru Reviewer を使用すると、検出しにくい潜在的な欠陥やバグを検出し、 CodeGuru Profiler によってライブデータに基づいてアプリケーションのパフォーマンスを微調整することができます。このサービスは 2020 年 6 月から一般公開されています。CodeGuru の使用開始方法については、こちらをご覧ください

ここ数か月で多くのお客様と協力しながら、 セキュリティ検出器、プレビューでの Python サポート、メモリプロファイリングを導入し、お客様がコード品質を向上させ、デベロッパーの時間を節約するのを支援しています。また、料金設定や対象言語の範囲など、さまざまな分野に関するご意見もいただきました。こうしたフィードバックに対応し、より簡単に組織内で大規模に Amazon CodeGuru を採用できるようにしました。

本日、CodeGuru Reviewer の 2 つの主要なアップデートを発表いたします。

  • リポジトリのサイズに基づいて月額料金を低く固定し、最大 90% の値下げとなる、まったく新しい、見積もることが簡単な料金モデルになっています
  • Python サポートが一般利用可能 (GA)となりました。推奨範囲が広く、Python 検出器に関連する 4 つの更新が行われています。

CodeGuru Reviewer の新しい予測可能な料金
CodeGuru Reviewer を使用すると、GitHub、GitHub Enterprise、AWS CodeCommit、Bitbucket に保存されているリポジトリのフルスキャンを実行できます。また、プルリクエストを送信するたびに、 CodeGuru Reviewer は新しいコードレビューを開始し、コメントの形式で推奨事項と改善を提案します。

以前の料金体系は、1 か月あたりの分析コード行数 (LoC) に基づいており、100 LoC あたり 0.75 USD でした。お客様の声を聞きました: デベロッパーは、可能な限り頻繁にコードを分析し、コストを心配せずに必要な数のプルリクエストとブランチを作成し、本番で発覚する前にエラーや欠陥をキャッチする可能性を最大化したいと望んでいるようです。

そのため、新しい料金設定では、リポジトリの合計サイズに基づいて、月額固定料金のみをお支払いいただきます。接続されているすべてのリポジトリで、最初の 100k 行のコードに対して月額 10 USD です。さらに、追加のコード100k ごとに月額 30 USD になります。リポジトリ内の最大のブランチのみがカウントされ、空の行やコメントはまったくカウントされないことに注意してください。

この料金構造により、コストがより予測可能で透明になるだけでなく、組織内の異なるチーム間で CodeGuru Reviewer を展開するのが容易になります。ただし、プルリクエストごとにリポジトリ全体のスキャンを必要に応じて実行し、増分レビューを実行することもできます。月間料金にはすべての増分レビューが含まれ、毎月の料金の対象となるリポジトリごとに最大 2 回のフルスキャンを取得できます。追加のフルスキャンでは、100k 行のコードにつき 10 USD が課金されます。

基本的には、Amazon CodeGuru とすべての新しい検出器と統合のすべての利点が得られますが、最大で 90% 安くなっています。また、最初の 90 日間は、最大 100k LoC までの無料利用枠で無料の使用を開始できます。無料利用枠の有効期限が切れた場合、または 100k LoC を超えた場合は、標準料金をお支払いいただくだけです。更新された料金ページはこちらをご覧ください

いくつかの実用的な例をご紹介いたします (無料利用枠を除く):

  1. 150k LoC の中規模リポジトリ: この場合、月額料金は 200k 行のコードに切り上げられ、月額合計 40 USD (10 + 30) になります。LoC の数は常に切り上げられます。ちなみに、同じ料金で最大 50K 行のコードのレポジトリ (または複数) を接続することもできます (合計 200k 行のコード)。それぞれのリポジトリに対して、最大 2 回のフルスキャンが含まれます。
  2. それぞれ 300k LoC の 3 つのリポジトリ (900k LoC の大規模リポジトリに相当): この場合、月額料金は 250 USD (最初の 100k 行のコードで 10 USD、残りの 800k 行のコードで 240 USD) です。それぞれのリポジトリに対して、最大 2 回のフルスキャンが含まれます。
  3. 70k LoC の小さなリポジトリ、毎月 10 回のフルスキャンあり: この場合、1 か月あたりの料金は LoC 数のみに対して 10 USD、追加のフルスキャン (560k LoC) で 60 USD で、合計 70 USD になります。
  4. 50 のアクティブなブランチ、10k LoC を含む最大ブランチ、毎月 300 のプルリクエストを含む小さなリポジトリ: シンプルに、月額 10 USD です。それぞれのリポジトリに対して、最大 2 回のフルスキャンが含まれます。

新しい料金は、2021年 4 月 6 日に接続された新しいリポジトリ、および 2021 年 4 月 5 日までにすでに接続されているリポジトリに対して 4 月から適用されます。ほとんどのユースケースで、大幅なコスト削減が期待されます。フルリポジトリスキャンを 1 日に複数回実行する必要がない限り (これはかなり極端なケースです)、100k LoC までのほとんどの小さなリポジトリでは、ブランチ、コントリビューター、プルリクエストの数に関係なく、90 日間の試用後に 1 か月あたり 10 USD の予測可能な手頃な料金のみが課金されます。予測不可能なコストを心配することなく、コードリポジトリを開発して反復処理できます。そして、CodeGuru がコードをレビューし、潜在的な問題を見つけます。

ぜひ、CodeGuru Reviewer を試して、 CodeGuru コンソールで最初のリポジトリを接続してみてください。

CodeGuru Reviewer の Python サポートが一般利用可能に
CodeGuru Reviewer の Python サポートは、 2020 年 12 月からプレビューで利用可能です 。これにより、データ構造および同時実行の最適な使用を提案することで、Python アプリケーションを改善することができます。これは、制御フロー、エラー処理、標準ライブラリに関する Python のベストプラクティスに従うのに役立ちます。最後ですが大事なこととして、科学/数学の運用と AWS のベストプラクティスに関する推奨事項を提供します。これらの提案は、初心者とエキスパートデベロッパーの両方、およびコードの品質に情熱を注ぐ小規模および大規模なチームにとって有用です。

本日の一般利用可能の発表では、Python 検出器に関連する主な更新が 4 つあります。

  • 既存の検出器のカバレッジと精度の向上: 標準ライブラリ、データ構造、制御フロー、エラー処理に関連して、既存の検出器に Python のベストプラクティスが数多く組み込まれています。例えば、CodeGuru Reviewer は、コードが安全でないテンポラリファイルを作成する場合や、最大限の精度を必要とする科学的計算に 10 進数の代わりに浮動小数点数を使用したり、等式と ID を混同したりしている場合に警告します。こうした警告は、セキュリティの脆弱性、パフォーマンスの問題、一般的なバグを回避するのに役立ちます。
  • リソースリークに関する検出器の改善: プレビュー中、この検出器は、開いているファイル記述子にのみ焦点を当てていました。現在は、接続、セッション、ソケット、マルチプロセッシングスレッドプールなど、より広範なリソースリークに関する推奨事項を生成します。例えば、新しいソケットを開き、それを閉じるのを忘れる Python 関数を実装することがあります。これは非常に一般的であり、すぐに問題になるわけではありませんが、リソースリークによってシステムの速度が低下したり、長期的にクラッシュしたりする可能性があります。CodeGuru Reviewer は、ソケットを閉じるか、ステートメントでラップすることを提案します。なお、この検出器は Java でも使用できます
  • 新しいコード保守性検出器: この新しい検出器は、コードの複雑さや緊密な結合など、コードベースの読み取り、理解、維持が困難になる側面があるコードの問題を特定するのに役立ちます。例えば、単純なプロトタイプを実装するのに数時間を費やし、それを本番用コードとそのまま統合することを決めたとします。少し急いでいたので、このプロトタイプには、入力検証、データの準備、いくつかの API 呼び出し、ディスクへの最終的な書き込みに至るまで、50 行以上のコードを持つ巨大な Python 関数が含まれている可能性があります。CodeGuru Reviewer は、テストと保守が容易な、より小さく、再利用可能な、疎結合関数にこのコードをリファクタリングすることを提案します。
  • 新しい入力検証検出器: この新しい検出器は、特にこれらのパラメータがユーザ生成または動的である可能性が高い場合に、入力パラメータの追加検証によって一部の関数またはクラスが恩恵を受ける可能性がある状況を特定するのに役立ちます。例えば、環境名を CLI 入力 (例、devstageprod) として受け取り、API 呼び出しを実行し、リソース ARN を出力として返す Python 関数を実装したとします。環境名を検証していないので、CodeGuru Reviewer は追加の検証を実装することを提案する場合があります。この例では、数行のコードを追加して、環境名が空ではなく、このプロジェクトに有効な環境であることを確認できます。

CodeGuru Profiler の Python サポートはまだプレビュー中です。CodeGuru Profiler を使用すると、ランタイムパフォーマンスデータを収集し、CPU でコードがどのように実行され、どこで時間が消費されているかを特定できるため、コストの削減とパフォーマンスの向上を目的として、最も高価な部分から Python アプリケーションを調整できます。

CodeGuru コンソールで、Python 用の CodeGuru Reviewer と CodeGuru Profiler の使用を開始できます

まとめ
Amazon CodeGuru は 10 の AWS リージョンで利用可能であり、Python および Java アプリケーションをサポートしています。より多くの検出器を公開し、より多くのプログラミング言語をサポートし、より多くのデベロッパーやお客様がアプリケーションコードの品質とパフォーマンスを向上させることを楽しみにしています。

Amazon CodeGuru の詳細については、CodeGuru Reviewer のドキュメント および CodeGuru Profiler のドキュメントを参照してください。