Amazon CodeGuru
既存関連付けのコードを解析する Reviewer と、本番の性能を計測する Profiler。Reviewer は2025年11月7日から新規リポジトリを関連付けできず、代替への移行判断が必要。
- Reviewer は2025年11月7日から新しいリポジトリ関連付けを作成できない。
- Profiler は CPU・待ち時間を可視化し、JVM ではヒープも分析する。
- 既存解析は継続でき、新規用途は Amazon Q Developer や Inspector を比較する。
2025 年 11 月 7 日以降、CodeGuru Reviewer はメンテナンスモードとなり、新しいリポジトリ関連付けを受け付けていません。既存の関連付けでは解析を継続できますが、機能追加は予定されていません。新しいコードレビューには Amazon Q Developer、新しいリポジトリの脆弱性検査には Amazon Inspector Code Security を比較してください。この変更は CodeGuru Profiler の実行時分析とは分けて判断します。
解決する課題
コード品質の維持には、人手によるレビューと性能チューニングが欠かせませんが、いずれもレビュアーの経験に依存し、見落としや属人化が起きがちです。また本番環境の性能劣化は、再現が難しく原因特定に時間がかかります。CodeGuru なら:
- プルリクエストの自動レビューで、バグの温床やセキュリティ上の問題を機械的に指摘できる
- 本番で動くアプリを継続的にプロファイリングし、性能のボトルネックを可視化できる
- 指摘や分析結果が改善の根拠とともに提示され、レビューや調査の属人化を減らせる
CodeGuru は大きく Reviewer(コードレビュー) と Profiler(性能分析) の2つの機能で構成されます。
主要概念と用語
- CodeGuru Reviewer: ソースコードを静的に解析し、潜在的なバグ・リソースリーク・並行処理の問題・セキュリティ上の懸念などを指摘する機能
- CodeGuru Profiler: 稼働中のアプリにエージェントを組み込み、実行時のプロファイルを収集して CPU・メモリ消費の多い箇所を特定する機能
- リポジトリ関連付け: Reviewer を使うために、CodeCommit や GitHub などのリポジトリを CodeGuru に関連付ける設定
- コードレビュー: Reviewer が1回の解析で生成する指摘(レコメンデーション)のまとまり
- レコメンデーション: 問題箇所と、その理由・改善の方向性を示す個別の指摘
- プロファイリンググループ: Profiler がプロファイルを集約する単位。同じアプリの複数インスタンスをまとめて分析する
- フレームグラフ: 関数の呼び出し関係と各関数が占める時間の割合を可視化した図
- セキュリティ検出: Reviewer のうち、機密情報のハードコードや脆弱な実装パターンを指摘する分析
仕様・制限・クォータ
- Reviewer は既存の CodeCommit・GitHub・Bitbucket などの関連付けに限り、プルリクエスト単位または対象ブランチ全体の解析を継続できる。新しい関連付けは作成できない
- Reviewer の解析対象言語は Java と Python。既存の GitHub Enterprise Server と Bitbucket の関連付けは CodeConnections を介する
- Profiler は エージェント(ライブラリ)をアプリに組み込んで動作し、Java/JVM 系言語や Python などに対応する。ヒープ概要は JVM アプリだけで利用できる
- Profiler のオーバーヘッドは小さく抑えられており、本番環境での常時計測を前提に設計されている
- 指摘や解析の精度・対応範囲は機械学習モデルの更新により変化する
Reviewer はリポジトリ最大 4 GB、CodeCommit の解析済みプルリクエスト月 5,000、Java ソース 300 MB、Python ソース 50 MB が主な上限です。Profiler は 1 アカウント・リージョンあたり最大 500 プロファイリンググループです。
内部の仕組み
横にスクロール
Reviewer は既存の関連付けからリポジトリのコードを取り込み、機械学習モデルとプログラム解析を組み合わせて評価します。プルリクエストに関連付けると、差分を解析し、問題箇所にレコメンデーションをコメントとして残します。
- Reviewer はパターンに基づく解析と学習済みモデルで、リソースリークや例外処理の不備などを検出する
- セキュリティ検出では、機密情報のハードコードや安全でない API 利用などを指摘する
- Profiler はアプリ内のエージェントが一定間隔でスタックをサンプリングし、結果をプロファイリンググループへ送る
- 集約されたプロファイルはフレームグラフとして可視化され、時間を多く消費する関数を特定できる
Profiler は実際の本番トラフィック下で計測してこそ、現実のボトルネックを掴めます。低オーバーヘッドで常時計測する前提なので、テスト環境だけでなく本番のプロファイリンググループを用意しておくと効果的です。
設計パターン / ベストプラクティス
- 既存 Reviewer を維持しつつ移行する: 既存関連付けの自動レビューを継続し、Amazon Q Developer などの代替結果と並行比較する
- 指摘をトリアージする運用: すべての指摘を機械的に従うのではなく、重要度を見て対応するかを判断する
- Profiler を本番に常駐: 代表的なワークロードを継続計測し、性能の変化を経時で追えるようにする
- プロファイリンググループの分離: 環境(本番・ステージング)やサービスごとにグループを分け、混在を避ける
- レビューと性能分析の併用: Reviewer で品質を、Profiler でコスト効率を改善し、両輪で最適化する
運用・監視
- Reviewer の指摘はコンソールやプルリクエストのコメントで確認し、対応状況を追跡する
- Profiler のフレームグラフを定期的に見直し、ボトルネックの推移を把握する
- 性能劣化のリリースがないか、デプロイ前後でプロファイルを比較する
- Reviewer の既存解析対象ブランチを見直し、新規関連付けを前提としない移行計画を更新する
Reviewer の指摘は有用ですが、文脈によっては当てはまらない場合もあります。誤検出(フォールスポジティブ)の可能性を踏まえ、人によるレビューを完全に置き換えるのではなく補助として使ってください。
コスト
Reviewer は関連付けたリポジトリの最大ブランチに含まれるコード行数を合算した月額制で、各リポジトリにつき月 2 回の全体解析を含みます。追加の全体解析は 10 USD / 10 万行です。Profiler はエージェント 1 個が 1 時間動くと 1 サンプリング時間として数えます。
- Reviewer の差分解析は月額に含まれるが、各リポジトリで月 2 回を超える全体解析は追加料金になる
- Profiler は最初の 36,000 サンプリング時間 / グループ・月まで 0.005 USD / 時間。Lambda は支払者アカウントの最初の 500 時間が無料である
- Profiler でホットスポットを改善し CPU を削減できれば、計算リソースの費用そのものを下げられる
正確な単価は時期・リージョンで変動するため、断定的な金額は公式の料金ページで確認してください。
セキュリティ
- リポジトリの関連付けや結果取得には IAM で権限を制御し、最小権限を徹底する
- Reviewer のセキュリティ検出を活用し、認証情報のハードコードや脆弱なパターンを早期に発見する
- 解析対象のコードや結果には機密が含まれうるため、アクセスできる利用者を限定する
- 指摘で見つかった機密情報は、コードから除去し Secrets Manager などへ移す
Reviewer がハードコードされた認証情報を指摘したのに放置するのは危険です。指摘を契機に値をローテーションし、Secrets Manager 参照へ置き換えてください。
Well-Architected の観点
- パフォーマンス効率: Profiler で本番のボトルネックを定量的に把握し、効果の高い箇所から改善できる
- セキュリティ: Reviewer のセキュリティ検出で、コードに潜む機密漏えいや脆弱パターンを早期に発見できる
- ボトルネック解消による CPU 削減は、コスト最適化にも直結する
試験で問われるポイント
- 機能の役割分担 → Reviewer はコードレビュー、Profiler は本番の性能分析
- いつ使う? → プルリクエストの自動レビューには Reviewer、稼働中アプリのボトルネック特定には Profiler
- セキュリティ → Reviewer は機密情報のハードコードなどを指摘できる
- Profiler の可視化 → フレームグラフで時間を多く消費する関数を特定する
- 解析言語 → Reviewer は Java と Python。新しいリポジトリ関連付けは作成できない
関連サービス・比較
実行のトレースを追う AWS X-Ray と混同されがちですが、目的が異なります。違いを押さえておきましょう。
| 観点 | CodeGuru Profiler | AWS X-Ray |
|---|---|---|
| 主な目的 | アプリ内部の性能ボトルネック特定 | 分散システムのリクエスト追跡 |
| 分析の単位 | 関数・メソッドのCPUやメモリ消費 | サービス間のトレースと遅延 |
| 可視化 | フレームグラフ | サービスマップとトレース |
| 主な使いどころ | コードのホットスポット改善 | ボトルネックとなる区間の特定 |
ハンズオン / CLI例
# Reviewer: 既存リポジトリの関連付け一覧を取得(新規作成は不可)
aws codeguru-reviewer list-repository-associations
# Reviewer: 指定の関連付けに対するコードレビュー一覧を取得
aws codeguru-reviewer list-code-reviews --type PullRequest \
--query "CodeReviewSummaries[].{Name:Name,State:State}"
# Profiler: プロファイリンググループの一覧を取得
aws codeguruprofiler list-profiling-groups \
--query "profilingGroupNames"
AWS Service
Amazon CodeGuruを実務で読む
TL;DRは入口です。実際に選ぶ・使う段階では、何を解決するか、何と比較するか、導入後にどこで詰まるかまで見る必要があります。
解決すること
開発者ツール
比較で見る軸
クラウド: AWS / カテゴリ: 開発者ツール / 難易度: intermediate
導入後に効く点
Profiler は CPU・待ち時間を可視化し、JVM ではヒープも分析する。
先に潰すリスク
サービス単体ではなく、権限、ネットワーク、監視、課金、バックアップを含めて設計する必要がある。
- クラウド
- AWS
- カテゴリ
- 開発者ツール
- 難易度
- intermediate
- 関連資格
- DOP-C02 / DVA-C02
- 設計柱
- performance / security
判断チェックリスト
- 自社の用途が「開発者ツール / performance」に近いか確認する。
- 強みである「Reviewer は2025年11月7日から新しいリポジトリ関連付けを作成できない。」が本当に評価軸になるか確認する。
- 注意点の「サービス単体ではなく、権限、ネットワーク、監視、課金、バックアップを含めて設計する必要がある。」を運用で吸収できるか確認する。
- 公開値や仕様値は、対象プラン・対象機種・対象リージョンまで確認する。
- 既存システム、ID、ネットワーク、監視、バックアップとの接続方法を先に洗い出す。
- 小さく試してから、本番移行、権限設計、障害時手順、コスト監視を決める。