全般

Q: Amazon CodeGuru とは何ですか?

Amazon CodeGuru はインテリジェントな推奨事項を提供するデベロッパーツールで、コードの品質を向上し、アプリケーションの最もコストがかかっているコード行を特定するのに役立ちます。

Q: Amazon CodeGuru で何ができますか?

Amazon CodeGuru には、Amazon CodeGuru Reviewer と Amazon CodeGuru Profiler といった 2 つのコンポーネントがあります。Amazon CodeGuru Reviewer は機械学習および自動推論を使用して、アプリケーション開発中に重大な問題や見つけにくいバグを特定し、コードの品質を向上します。Amazon CodeGuru Profiler は、実稼働状態のアプリケーションにおいて、最もコストが高いコード行を特定しパフォーマンスを最適化することで、運用コストを大幅に削減します。

Q: Amazon CodeGuru の使用を開始する方法を教えてください。

Amazon CodeGuru は、現在、すべてのお客様に公開されています。Amazon CodeGuru コンソールで今すぐお使いいただけます。

Amazon CodeGuru Reviewer を開始するには、Amazon CodeGuru Reviewer コンソールにログインして、GitHub、GitHub Enterprise、Bitbucket、または AWS CodeCommit の既存のコードリポジトリを関連付けます。一度セットアップすれば、Amazon CodeGuru Reviewer はコードの分析を開始し、プルリクエストまたはコードリポジトリを通じてコード改善の推奨事項が直接提供できるようになります。

また、アプリケーションのプロファイリングも数分で開始できます。Amazon CodeGuru Profiler の使用を開始するには、Amazon CodeGuru Profiler コンソールにログインして、アプリケーション用にプロファイリンググループの設定を行います。プロファイリングエージェントを使用してアプリケーションを開始するには、コマンドラインによるか、手順に従い記述済みのカスタムメソッドを使用します。Amazon CodeGuru Profiler を継続的に実行することで、ライブアプリケーションのパフォーマンスの問題をより積極的に補足できます。

Q: Amazon CodeGuru はどの AWS リージョンで利用できますか?

サポートされている AWS リージョンを確認するには、すべての AWS グローバルインフラストラクチャ用の AWS リージョン表をご覧ください。詳細については、AWS 全般のリファレンスの「リージョンとエンドポイント」を参照してください。

Amazon CodeGuru Reviewer

Q: Amazon CodeGuru Reviewer とは何ですか?

Amazon CodeGuru Reviewer は、Java および Python コードに関する重大な欠陥や、コーディングのベストプラクティスからの逸脱を識別するための、自動コードレビューサービスです。プルリクエスト内のコード行をスキャンし、主要なオープンソースプロジェクトおよび Amazon コードベースから取り入れた標準に基づいた、インテリジェントな推奨事項を提供します。Amazon CodeGuru Reviewer は、GitHub、GitHub Enterprise、Bitbucket、および AWS CodeCommit など、広く使用されているソース管理システムにある既存のコードレビューワークフローとシームレスに統合し、コード品質を改善するための実用的な推奨事項を提供します。

Q: サポートされているプログラミング言語とソースコードリポジトリを教えてください。

Amazon CodeGuru Reviewer は現在、GitHub、GitHub Enterprise、Bitbucket、および AWS CodeCommit リポジトリに保存されている Java および Python コードをサポートしています。

Q: Amazon CodeGuru Reviewer では、どのような種類の問題を検出できますか?

Amazon CodeGuru Reviewer は、同時実行の問題、潜在的な競合状態、悪意があるもしくは精査されていない入力、認証情報などの機密データの不適切な処理、リソースリークなどチェックし、さらに並行コードの競合状態や衝突による動作障害も検出します。さらに、AWS、Java、および Python でのベストプラクティスの提案を行い、コード内で統合可能な重複部分を検出し保守性を向上させます。

Q: Amazon CodeGuru Reviewer の使用を開始する方法を教えてください。

Amazon CodeGuru コンソールにアクセスして、Amazon CodeGuru Reviewer の推奨事項をコードのプルリクエストに直接統合します。CodeGuru コンソールにアクセスし、手順に従って AWS CodeCommit、GitHub、GitHub Enterprise、および BitBucket のリポジトリを関連付けることで、Amazon CodeGuru Reviewer からの推奨事項を受信できるようになります。有効化された Amazon CodeGuru Reviewer からは、接続済みのリポジトリに対して生成されたプルリクエスト上のコメントとして、インテリジェントな推奨事項が自動的に提供されます。

Q: Amazon CodeGuru Reviewer が私のコードにアクセスすることはありますか?

Amazon CodeGuru Reviewer では、推奨事項を生成するためにコードの読み取り専用アクセスが必要です。当社の最優先事項は、お客様からの信頼、プライバシー、およびお客様のコンテンツのセキュリティです。また、AWS では、転送中の暗号化などの適切な制御を行っています。それにより、お客様のコンテンツへの不正なアクセスや開示を防止し、AWS がデータを使用する場合はお客様との契約を確実に遵守します。詳細については、「データプライバシーのよくある質問」を参照してください。

Q: Amazon CodeGuru Reviewer はコードのコピーを保持しますか?

いいえ、Amazon CodeGuru Reviewer はソースコードを保存しません。

Q: インテリジェントな推奨事項を提供するために Amazon CodeGuru Reviewer はどのようにトレーニングしていますか?

Amazon CodeGuru Reviewer のトレーニングは、ルールマイニングや、ロジスティック回帰とニューラルネットワークの組み合わせを活用した教師あり機械学習モデルを使用して行われます。

たとえば、AWS からの逸脱に対するベストプラクティスのトレーニング中、Amazon CodeGuru Reviewer では、検索技術とローカリティ依存モデルを、AWS API 呼び出しを含むプルリクエストに対し使用しながら、Amazon コードベースをマイニングします。コード品質の改善を目的にコードの変更点をチェックし、その内容をドキュメントデータと相互検証します。その結果、コードをレビューするときにベストプラクティスとして Reviewer が推奨する新しいルールセットが作成されます。

リソースや機密データリークに関するトレーニング中には、それらが使用されているすべてのコードパスに対して完全なコード分析を行い、対応する機能セットを作成します。さらに、それらをロジスティック回帰モデルおよび畳み込みニューラルネットワーク (CNN) への入力情報として使用します。

コードの不整合については、フルコードレビューまたはインクリメンタルコードレビューのいずれかでモデルがトレーニングされます。お客様がレビューを開始した後、これらのモデルはデータマイニングや機械学習の複数の技術を駆使してデータセットを構築し、コードパターンの理由を明らかにし、お客様のコードに合わせてカスタマイズしたレコメンデーションを行います。

Amazon CodeGuru Reviewer は、ルールベースおよび機械学習ベースのモデルの両方について、ラベルとしてお客様から提供されるフィードバックを使用して、コード検出器の品質を繰り返し改善します。

Q: オープンソースのコード解析ツールは、どのように CodeGuru Reviewer に組み込まれているのですか?

Amazon CodeGuru Reviewer には、3 つのソースからのルールが組み込まれています。(1) CodeGuru Reviewer のルールは、サービスに不可欠であり、機械学習と自動推論を使用して、コード品質とセキュリティ問題のためにコードを分析するように設計されています。(2) Python コードのセキュリティ問題を見つけるように設計されたオープンソースのコード分析ツールである Bandit のマネージドバージョンは、CodeGuru Reviewer に統合されています。(3) Java コードの同時実行とその他の問題を見つけるように設計されたオープンソースのコード分析ツールである Infer のマネージドバージョンも、CodeGuru Reviewer に統合されています。CodeGuru Reviewer は、すべてのソースからのルール (プログラミング言語に該当するもの) を使用してコードを分析し、実行されたすべての分析を含むシンプルな料金設定になっています。

Amazon CodeGuru Reviewer Detector

Q: Amazon CodeGuru Reviewer Security Detector でサポートされているプログラミング言語は何ですか?

Amazon CodeGuru Reviewer Security Detector は、Java 8 から Java 11、Python 3 以上をサポートします。 

Q: Amazon CodeGuru Reviewer Security Detector を使用する必要があるのはなぜですか?

CodeGuru Reviewer Security Detector は、セキュリティの専門家が 24 時間 365 日コードレビューするようなものです。デプロイにセキュリティのベストプラクティスを特定するのに役立ちます。

Q: Amazon CodeGuru Reviewer Security Detector はどのように機能しますか?

CodeGuru Reviewer Security Detector は、コードを静的に分析して、コードを実行する可能性のある全経路を表す制御フローグラフを作成します。次に、データが制御フローグラフをどのように流れるかを検出し、複数のメソッドとクラスを含む、アプリケーション全体に影響を及ぼす可能性のある一連の動作を含む潜在的な問題を発見します。たとえば、このセキュリティ検出器は、初期化と使用方法が異なるメソッドで発生した場合でも、秘密 (対称) 鍵ジェネレータである Javax.Crypto.KeyGenerator や Python の crypto.secrets が使用前に初期化されているかどうかを判別します。

Q: Amazon CodeGuru Reviewer Security Detector では、どのような種類の問題を検出できますか?

CodeGuru Reviewer は、コードのセキュリティ問題に関する 5 つのカテゴリを特定するのに役立ちます。すなわち、(1) AWS API セキュリティベストプラクティスは、AWS EC2 や KMS などのさまざまな AWS のサービスの API を使用する際のセキュリティベストプラクティスを特定するのに役立ち、(2) Java および Python Crypto Library ベストプラクティスは、Javax.Crypto.Cipher などの一般的な Java 暗号化ライブラリや、Python の組み込みおよびサードパーティー製のハッシュや暗号モジュール (例: cryptography) をチェックして、それらが初期化し、正しく呼び出されることを確実に実行するのに役立ち、(3) セキュアウェブアプリケーションは、クロスサイトスクリプティング、LDAP インジェクション、パストラバーサルインジェクションなどのウェブアプリ関連のセキュリティ問題をチェックするのに役立ち、(4) AWS セキュリティのベストプラクティスは、AWS Crypto の推奨事項などの内部セキュリティの専門知識をユースケースに採り入れることを可能にします。

Q: Amazon CodeGuru Reviewer Security Detector はリポジトリ内のすべてのコードを分析しますか?

はい、CodeGuru Reviewer Security Detector は、リポジトリ内のビルドアーティファクトとすべての Java ソースコードを分析して、セキュリティに関する推奨事項を提供します。

Amazon CodeGuru Reviewer CI/CD 統合

Q: CodeGuru はどの CI/CD プロバイダーサポートしますか?

CodeGuru は、CI/CD 統合を行なうために GitHub アクションをサポートします。

Q: CI/CD パイプラインに CodeGuru を統合すると、コードの品質はどう向上しますか?

CodeGuru Reviewer を CI/CD パイプラインに統合することで、コード品質とセキュリティの推奨事項の両方に対して、コードレビュープロセスを簡単に自動化できます。パイプラインのプル/マージリクエスト、プッシュ、またはスケジュールされた実行で実行するように設定できます。統合により、推奨事項を見逃すことはなく、コードの品質と潜在的なセキュリティの脆弱性を継続的に監視しています。

Q: CI/CD を GitHub と統合する方法を終えてください。

こちらをクリックすると、GitHub Marketplace で CodeGuru Reviewer GitHub アクションを表示できます。Marketplace ページの指示に従って、CodeGuru を GitHub CI ワークフローに統合します。詳細については、ドキュメントをご覧ください。

Amazon CodeGuru Profiler

Q: Amazon CodeGuru Profiler とは何ですか?

Amazon CodeGuru Profiler により、デベロッパーおよび IT オペレーターは、アプリケーションのランタイム動作を簡単に把握し、パフォーマンスを向上させ、インフラストラクチャのコストを削減できます。Amazon CodeGuru Profiler は、アプリケーションのランタイムプロファイルを分析し、コード内で最も影響の大きい部分のパフォーマンスを向上させる方法についてのガイダンスをデベロッパーに提供する、インテリジェントな推奨事項と可視化を提供します。

Q: プロファイリンググループとは何ですか?

プロファイリンググループは、ユーザーが作成する論理グループで、1 つのアプリケーションの境界を表します。たとえばマイクロサービスアーキテクチャでは、割り当てられたマイクロサービスのプロファイルがプロファイリンググループにより集約され、それらすべてが 1 つのプロファイルに構成されます。

Q: 既にコードには、広範囲のログ記録を統合済みです。まだプロファイルする必要がありますか?

ログ記録を実行しても (CPU の利用率ではなく) レイテンシーのみを監視する場合には、限られたシナリオについてしか効果がありません。また、デベロッパーとしてはアプリケーションのすべての機能を (パフォーマンスには影響を与えないように) 記録する必要があるため、その実装は時間を浪費する作業となります。デベロッパーには、効果的なモニタリングと稼働中アプリケーションでのトラブルシューティングに必要なツールが与えられていないのです。ここで、プロファイリングが登場します。Amazon CodeGuru Profiler は、シナリオに関係なく、そのアプリケーションの動作で発生するすべてのデータを収集するように設計されています。CodeGuru Profiler は、一般的に見られるパフォーマンスの非効率性に関する知識ベースを参照することで、稼働中のアプリケーション内でパフォーマンスに影響しているコードパターンを自動的に検出します。そこで提供された推奨事項に従って、デベロッパーは問題の修正を行えます。

Q: Amazon CodeGuru Profiler は、従来の APM やスタンドアロンプロファイラーとどう違うのですか?

従来の APM も、モニタリング、トレース、アプリケーションのパフォーマンスに関して有用なデータを提供します。Amazon CodeGuru Profiler は、アプリケーションの実行時データの視覚化や、検出されたパフォーマンスの問題に関する実用的な推奨事項を提供することにより、これらの APM の機能を補完します。加えて、機械学習を使用して検出したアプリケーション内の異常に関するアラートを発生し、コード上の問題個所の指摘も行います。Amazon CodeGuru Profiler を使用すると、パフォーマンスの最適化に最も効果的なコードの部分や、コストを削減できる可能性などを簡単に確認しながら、その対処方法に関するガイダンスを受けることができます。その際、パフォーマンスエンジニアリングの高度な知識は必要ありません。Amazon CodeGuru Profiler は、EC2インスタンス、コンテナー、AWS Lambda を含むサーバーレスコンピューティングプラットフォームとオンプレミスの両方をプロファイリングできます。一部のスタンドアロンプロファイラーはテスト環境でのみ実行されるように設計されていますが、Amazon CodeGuru Profiler の場合は、実稼働環境の現実的なトラフィック負荷の下で、アプリケーションに影響を与えずに継続的に実行できるように設計されています。これは、ベアメタルホストでの実行時を含む、実稼働環境での運用上の問題のトラブルシューティングに役立ちます。

Q: どのタイプのアプリケーションをプロファイルできますか?

Amazon CodeGuru Profiler は、Amazon EC2 でホストされているアプリケーション、Amazon ECS と Amazon EKS で実行されるコンテナ化されたアプリケーション、および AWS Fargate と AWS Lambda で実行されているサーバーレスアプリケーションで動作します。 さらに、Amazon CodeGuru Profiler をオンプレミスでも実行できます。

Q: CodeGuru Profiler は、AWS Lambda でホスティングされているアプリケーションのパフォーマンスにどの程度影響しますか?

Amazon CodeGuru Profiler のエージェントは、AWS Lambda 関数に割り当てられたリソース (CPU、メモリ) を使用します。このサービスは、プロセス内のスレッドとして実行されますが、アプリケーションのパフォーマンスには、最低限の影響しか与えないように調整されています。アプリケーションにおいて、AWS Lambda 関数用のリソースの大部分を消費している場合は、このエージェントが適切に機能できるよう、リソースの追加を検討してください。

Q: どのプログラミング言語をサポートしていますか?

Amazon CodeGuru Profiler は現在、Java、Python (プレビュー版) 、および Scala や Kotlin などの JVM 言語をサポートしています。

Q: Amazon CodeGuru Profiler はどのように機能しますか?

Amazon CodeGuru Profiler は、エージェント、プロファイラーサービス、インテリジェントな推奨事項提案の、3 つの部分で構成されています。このエージェントは、コマンドラインによりアプリケーションとともに実行開始でき、アプリケーションの一部のインプロセススレッドとして実行されます。エージェントを実行している各サービスインスタンスから取得したデータが 5 分ごとにプロファイラーサービスに送信され、そこで集約されます。その後、Amazon CodeGuru Profiler がインタラクティブなフレームグラフでプロファイルデータを公開します。これにより、アプリケーションのパフォーマンスを視覚化できます。また、Amazon CodeGuru Profiler は、プロファイルされたデータを継続的にスキャンし、Amazon やパフォーマンスエンジニアリングのベストプラクティスと比較します。パフォーマンスの問題が検出された場合は、インテリジェントな推奨事項を積極的に知らせます。さらに、機械学習を利用して、アプリケーションの実行時データを継続的に分析し、アプリケーションプロファイルに異常が検出された場合はアラートを発し、コード上の問題点を指摘します。

Q: Amazon CodeGuru Profiler はどのリソースをプロファイルし、どの言語をサポートしていますか?

CodeGuru は、Java およびその他の JVM 言語の CPU (アクティブ CPU と実時間) とメモリ (ヒープサマリー)、および Python アプリケーションの CPU (実時間) をプロファイルします。

Q: 同じアプリケーションから CPU とメモリの両方の情報を取得できますか?

はい。メモリプロファイリングを有効にしてプロファイリングを開始すると、CodeGuru Profiler はアプリケーションの CPU 情報とメモリ情報の両方を収集します。特定のアプリケーションの CPU データとメモリデータの両方を取得するために必要なプロファイリンググループは 1 つだけです。

Q: Amazon CodeGuru Profiler はどのようなメモリプロファイリング情報を提供しますか?

CodeGuru Profiler は、ヒープサマリー情報を提供します。ヒープサマリーは、特定の時間枠 (通常は 5 分) におけるオブジェクトタイプ (String、int、char[] など) およびカスタムタイプごとのメモリ使用率の統合ビューを提供します。CodeGuru は、オブジェクトの合計サイズとその数の両方を追跡します。これらのメトリックはタイムライングラフで表示されるため、オブジェクトタイプごとのメモリ使用率の傾向とピークを簡単に見つけることができます。

Q: ヒープサマリー情報で何ができますか?

ヒープサマリーは、2 つのシナリオで役立ちます。まず、潜在的なメモリリークを見つけることができます。1 つ以上のオブジェクトタイプのメモリ使用率の曲線が絶えず増加している場合は、リークを示している可能性があり、メモリ不足エラーやアプリケーションのクラッシュにつながる可能性があります。2 つ目のシナリオは、アプリケーションのメモリフットプリントを最適化する場合です。この場合、オブジェクトタイプごとのメモリ使用率の分析結果は、どこに焦点を合わせるかを知るのに役立ちます。たとえば、予想外に大量のメモリが特定のオブジェクトタイプに割り当てられていることを知れば、そのタイプのオブジェクトの割り当てと参照しているアプリケーションの部分を中心に分析と最適化すればよいということになります。

Standard Product Icons (Features) Squid Ink
お客様の詳細はこちら

Amazon CodeGuru のお客様のページをご覧ください。

詳細 
Sign up for a free account
無料のアカウントにサインアップ

AWS 無料利用枠にすぐにアクセスできます。 

サインアップ 
Standard Product Icons (Start Building) Squid Ink
コンソールで構築を開始する

AWS マネジメントコンソールで Amazon CodeGuru の構築を始めましょう。

サインイン