2021/03/23

AWSの「CodeGuru」とは?「Amazon CodeGuru Profiler」の利用方法を紹介!

 
  

AWSの「Amazon CodeGuru」とは?

AWSの「Amazon CodeGuru」とは、機械学習を活用した開発者向けツールです。具体的には、コード上で問題がある箇所を特定したり、アプリケーション実行でハイコストの箇所の特定及び改善方法を提供したりといった機能があります。 「Amazon CodeGuru」は、主に「Amazon CodeGuru Reviewer」と「Amazon CodeGuru Profiler」の2個の機能で構成されています。

「Amazon CodeGuru Reviewer」とは?

「Amazon CodeGuru Reviewer」とは、ソースコード上の重大な不具合や、コーディングのベストプラクティス(推奨されるコードの書き方)との適合性を判定してくれる、AWSの自動コードレビューサービスです。 これらの不具合や適合性の判定については、「機械学習」を活用しています。

「Amazon CodeGuru Reviewer」の特徴

「Amazon CodeGuru Reviewer」の特徴としては、機械学習を利用してソースコードの改善方法を提示することで、「コード品質」を一定の水準で維持できる点です。この特徴によって「Amazon CodeGuru Reviewer」は、チーム内の「レビュアー」の一員として活躍することが可能です。 利用に際しては、追加のライブラリ等はインストール不要で、簡単に利用を開始できます。

「Amazon CodeGuru Reviewer」の対応言語とリポジトリ

「Amazon CodeGuru Reviewer」の対応言語とリポジトリについて説明します。 対応言語としては、JavaとPython(※英語版のみ)に対応しています。サポートしている「リポジトリ」は、「AWS CodeCommit」、「Bitbucket」、「GitHub」、「GitHub Enterprise」、「GitHub Enterprise Cloud」等があります。

「Amazon CodeGuru Reviewer」による問題検出

「Amazon CodeGuru Reviewer」は、様々な種類のソースコードにおける処理の問題を検出してくれます。例えば、冗長な処理の重複処理、アプリケーションの同時実行処理、不適切な入力処理、認証時の機密情報の不適切な処理、クローズ処理漏れといった問題があります。 またAWSだけではなく、Javaによるコーディングでのベストプラクティスも提案してくれます。

「Amazon CodeGuru Reviewer」の利用方法

「Amazon CodeGuru Reviewer」の利用方法について説明します。最初に「Amazon CodeGuru コンソール」にアクセスし、「Amazon CodeGuru Reviewer」のコードリポジトリ(AWS CodeCommit/GitHub/GitHub Enterprise/BitBucket)と関連付けを行います。 「Amazon CodeGuru Reviewer」からコーディングにおける推奨事項が送られます。

「Amazon CodeGuru Profiler」とは?

「Amazon CodeGuru Profiler」とは、実行中のアプリケーションをプロファイル分析して、パフォーマンス向上に役立つ情報を提供してくれる、AWSのコードレビューサービスです。 このプロファイル分析は「機械学習」をベースとしており、コード上で実行コストが高い箇所を特定することができます。またアプリケーション実行中のパフォーマンス解析結果を分かりやすく可視化する機能があります。

「Amazon CodeGuru Profiler」のプロファイル対象

「Amazon CodeGuru Profiler」のプロファイル対象は、「Amazon EC2」上で動作するアプリケーション、「Amazon ECS」や「Amazon EKS」によるコンテナ上のアプリケーション、「AWS Fargate」や「AWS Lambda」で動作するサーバーレスアプリケーションが対象です。 またサポートしているプログラム言語は、「Java」、「Scala」、「Kotlin」等があります。

「Amazon CodeGuru Profiler」の利用方法(その1)

「Amazon CodeGuru Profiler」の利用方法(その1)としては「CodeGuru Profiler プロファイリンググループ」を作成します。 具体的には、「マネジメントコンソール」画面から「Amazon CodeGuru」のTOP画面に遷移し、「Profiler」にて作成します。 なお「プロファイリンググループ」とは、利用者が作成する論理的なグループで、プロファイル対象とするアプリケーションの範囲を示します。

「Amazon CodeGuru Profiler」の利用方法(その2)

「Amazon CodeGuru Profiler」の利用方法(その2)としては、「IAM権限」を設定します。具体的には、「Profilerエージェント」が使用する「IAM User」に、プロファイルデータを「Amazon CodeGuru」へ送信可能とするための権限を付与します。 なお「Profilerエージェント」とは、アプリケーションの一部に組み込み、プロファイル分析を行う実行モジュールのことです。

「Amazon CodeGuru Profiler」の利用方法(その3)

「Amazon CodeGuru Profiler」の利用方法(その3)としては、「Profilerエージェント」を起動します。起動すると実行中のアプリケーションを継続してプロファイルします。起動から15分以内にプロファイル結果が送信され、以降は10分間隔で送信されます。 なお「Profilerエージェント」は、AWS社で提供されている「CodeGuruProfiler Agent JAR」の利用が推奨されています。

「Amazon CodeGuru Profiler」の可視化(ビジュアライゼーション)

「Amazon CodeGuru Profiler」の可視化機能(ビジュアライゼーション)により、プロファイル結果を視覚的に把握できます。 「Amazon CodeGuru Profiler」画面に表示されるビジュアライゼーション(プロファイル結果の図)は、実行中のアプリケーションの「スタックトレース」を採取して集約したものです。ソースコードのどの位置で「CPU時間」が掛かっているかを視覚的に把握できます。

「Amazon CodeGuru Profiler」のビジュアライゼーションモード

ビジュアライゼーションのモードには、「Overviewモード」、「Hotspotsモード」、「Inspectモード」の3種類があります。 「Overviewモード」は、アプリケーション全体の理解、各処理のCPU使用時間を把握するのに有用です。「Hotspotsモード」は、CPU使用時間が長い処理を特定するのに有用です。「Inspectモード」は、分析用に集約した情報を表示してくれます。

「Amazon CodeGuru Profiler」のビュー

「Amazon CodeGuru Profiler」のビューは、「CPUビュー」、「Latencyビュー」、「Customビュー」の3種類あります。 「CPUビュー」は、アプリケーションのCPU使用率の解析に役立つビューです。「Latencyビュー」は、アプリケーションの実行時間に影響を与えている処理の特定に役立ちます。「Customビュー」は、表示対象の色等をカスタマイズできるビューです。

「Amazon CodeGuru Profiler」のレコメンデーションレポート

「Amazon CodeGuru Profiler」のレコメンデーションレポートとは、AWS上でのパフォーマンス改善に役立つ情報です。収集されたプロファイリングデータを元にして、1時間間隔でレコメンデーションレポートを自動的に生成してくれます。 コンソール画面から直近30日分のレポートを閲覧できます。なおCLI(コマンドラインインターフェース)からは、それ以前の古いレポートも取得できます。

「Amazon CodeGuru」のまとめ

「Amazon CodeGuru」について、「Amazon CodeGuru Profiler」や「Amazon CodeGuru Reviewer」といった主要な機能を元に、その概要や利用方法について解説してきました。 機械学習をベースに、実行時間が掛かるコード行を特定し、コードの品質を向上してくれることからコードレビューのツールとして有用です。 AWS上のサービス開発時には、コードレビューに役立ててはいかがでしょうか。]]>

ITエンジニアへのキャリアチェンジならキャリアチェンジアカデミー

この記事の監修者・著者

株式会社オープンアップITエンジニア
株式会社オープンアップITエンジニア
未経験からITエンジニアへのキャリアチェンジを支援するサイト「キャリアチェンジアカデミー」を運営。これまで4500人以上のITエンジニアを未経験から育成・排出してきました。
・AWS、salesforce、LPICの合計認定資格取得件数:2100以上(2023年6月時点)
・AWS Japan Certification Award 2020 ライジングスター of the Year 受賞

おすすめの動画

  • 【未経験からIT業界へ転職するなら】相談窓口とスキルの獲得はここで解決!IT転職が一気に有利に!【キャリアチェンジアカデミー】

  • 【費用一切不要】未経験からIT業界へ転職するならまずはここへ相談!【キャリアチェンジアカデミー】

  • 【何のエンジニアになれるのか?】未経験からITエンジニアを目指すとこんな道がある【キャリアチェンジアカデミー】