全般

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

Amazon CodeGuru Reviewer Detector

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

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

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 が使用前に初期化されているかどうかを判別します。

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

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

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

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

Amazon CodeGuru Profiler

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

Amazon CodeGuru Profiler により、デベロッパーはアプリケーションのランタイム動作を簡単に把握し、パフォーマンスを向上させ、インフラストラクチャのコストを削減できます。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: CodeGuru はどのリソースをプロファイルし、サポートされている言語は何ですか?

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

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

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

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

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

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

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

Product-Page_Standard-Icons_01_Product-Features_SqInk
お客様の詳細はこちら

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

詳細 
Product-Page_Standard-Icons_02_Sign-Up_SqInk
無料のアカウントにサインアップ

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

サインアップ 
Product-Page_Standard-Icons_03_Start-Building_SqInk
コンソールで構築を開始する

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

サインイン