今日、アマゾン ウェブ サービス ジャパン、シニアエバンジェリスト 亀田さんのAWSの基礎を学ぼう 第九十七回に参加してAWS CodeGuruについて学んだのでをこちらでざっくりまとめてみました。
AWS CodeGuruというワードを見て、何だこれ?と思われている方に最初のざっくりの把握するのに役立てれば幸いです。
(今回の記事はKoki_jpさんの質問思考:自分にとっての新しい技術を効率的に学ぶ方法を参考に記載させていただいています)
AWS CodeGuruとは?
AWS CodeGuruとは2つのプロダクトの総称のことである。
その2つのプロダクトは下記のふたつのことです。
- Amazon CodeGuru Reviewer
- Amazon CodeGuru Profiler
それぞれ役割が違い、それぞれ単体での使用も可能です。
Amazon CodeGuru Reviewerの役割とは?
Amazon CodeGuru Reviewerとは、機械学習を駆使して、ソースコード内のクリティカルな問題や発見が困難なバグを特定するサービスのことです。
下記のような事例を特定できます。
- AWSのベストプラクティスに沿っていない箇所の特定
- 一般的なコーディングベストプラクティスに沿っていない箇所の特定
- 同期漏れによる意図しないデータの不整合
- 機密データの漏洩リスク
- 冗長なコード(同じロジックのコードが複数箇所で使用されているなど)の特定
現状では、JavaとPythonに対応しています。
Amazon CodeGuru Reviewerはいつ起動するのか?
Pull Requestをするタイミングで、Amazon CodeGuru Reviewerが起動するようになっています。
そのためにAmazon CodeGuru Reviewerと、レポジトリサービスとの連携が必要です。
いま、連携できるレポジトリサービスは GitHub/Bitbucket/AWS CodeCommitの3種類です。
Amazon CodeGuru Reviewerが解決できる課題とは?
十分なコードレビューができる人材はなかなか世の中にいないのが現状です。そのコードレビューを代わりにしてくれる、またコードレビューアーの負担を下げることができるのがAmazon CodeGuru Reviewerが解決できる課題となっています。
Amazon CodeGuru Profilerの役割とは?
アプリケーションのパフォーマンス状況を可視化し、また最も実行コストが高い(=処理に時間がかかっている)関数を特定することができます。
また、特定するだけではなく、CodeReviewerと同様に、より良いパフォーマンスとなるための改善方法を含む推奨事項を教えてくれたり、異常検出の機能も備えています。
JVM(=Java Virtual Machine)専門のエージェントになっており、対応する言語はJVM上で動く言語のみになっています。
JVM上で動く言語は、Java, Scala, Kotolinの3種類になります。
Amazon CodeGuru Profilerはいつ起動するのか?
Amazon CodeGuru CodeReviewerと違い、自分の手で実行することで起動します。
起動後に、AWSマネジメントコンソールのCodeGuruダッシュボードで結果が表示されます。
起動方法に関しては、下記の記事に丁寧にまとめてあったので、共有します。
https://dev.classmethod.jp/articles/amazon-codeguru-profiler-1/
Amazon CodeGuru Profilerはいつ起動するべきか?
主に2点で起動することが推奨されています。
- デプロイ前のビルド+テストのとき
- デプロイ後の本番環境の状態を計測するとき
Amazon CodeGuru Profilerが解決できる課題とは?
Amazon CodeGuru Reviewerと似ていますが、パフォーマンスについてレビューができる人材もなかなか世の中にいません。
パフォーマンスのレビューを代わりにしてくれる、またそういうレビューアーの負担を下げることができるのがAmazon CodeGuru Profilerが解決できる課題となっています。
感想
今回のAmazon CodeGuruの技術は機械学習の自然言語処理の技術の発展によってもたらされた技術だと思われます。
Kaggleをやっていても、Googleがコードとコードの関連性を見つけるKaggleを出していたのは知っていたのですが、こういうふうに理由されていることは知らなかったので勉強会に参加してよかったです。
このように自然言語処理の技術が発展していくと、Codeだけではなくてわれわれが日常に書く文章に対してもreviewができる世界になっていくのが予想できます。
いま自分が書いているブログでも、社内のchatのやりとりでも、よりいいねをもらうにはこう書いたほうがいいだったり、この表現はパワハラになります、という指摘ができるサービスがこれから広がっていきそうですね。
今後もいろいろな先端なサービスに触れながら、将来がどうなっていくかを考えるのは面白いなと感じました。