本記事は** Advent Calendar 2020 **の2020/12/18分です。
※Advent Calendar 2020 へはHTCのチームメンバー5人で
毎日日替わりで投稿させていただいていますので、暇なときに覗いてください。
※HTCの紹介は本イベント1日目の投稿をご参照ください。
文系学部卒SIer新人のかいとです。
12/16 AWS re invent 2020 Warner Vogels Keynote にて、
CloudShellなどの開発社用サービスのGAや新機能追加が発表されましたね。
Code系のサービスを触り始めて以来、開発者用サービスに興味がありまくる筆者です。。。
なので、個人的にはWarnerさんのKeynote以外で発表された、CodeGuruの新機能や、DevOpsGuruのGAが気になるところです。
という事で、早速その辺りを触ってみたいと思います!
と行きたいところですが、、、
そもそもCodeGuruを触ったことが無いので、新機能ではない部分から今回は触ってみました!
Amazon CodeGuruは、機械学習を利用したデベロッパーツールで、コードの品質を向上し、アプリケーションの最もコストがかかっているコード行を特定するためのインテリジェントな推奨事項を提供します。(公式ドキュメントより引用)
簡単に言えば開発者がコーディング/管理者がソースの品質向上
を図ろうとする際にお助けしてくれるサービスという事です。
また、CodeGuruにはProfilerと、Reviewerというサービスに分かれており(新機能としてSecurity Detectorが加わる)
-
Amazon CodeGuru Profiler
- デベロッパーがアプリケーションの最もコストがかかっているコード行を見つけるだけでなく、特定の視覚化と、コードを改善してコストを節約する方法に関する推奨事項を提供します。
-
Amazon CodeGuru Reviewer
- 機械学習を使用して、アプリケーション開発中に重大な問題や見つけにくいバグを特定し、コードの品質を向上します。
といった感じのサービスとなっております。
正直、テキストベースでは理解が進まないので、**「Now Go Build(今すぐ手を動かして作ろう)」**です!!
※「Now Go Build」はワーナーがKeynoteで毎年言う定番文句w
#用意するもの
- AWSアカウント
- Java or Python のソース
- リモートリポジトリ(ローカル開発環境と繋いでるもの)
- Bitbuket/GitHub/CodeCommit
Amazon CodeGuru Reviewer 実践!
###Step1:リポジトリを Amazon CodeGuru Reviewer と関連付ける
私はリモートリポジトリとして、Bitbucket
を関連付けましたが、
CodeCommit
やGitHub
も関連付けることができます。
※例だとこんな感じ
###Step2:コードを変更
なんでもいいですが、コードを変更してpush →プルリク。
※対応しているjava,Pythonのソースを変更しよう。jsとかhtml,cssいじっても意味ない。(下みたいに推奨なしになるよ)
すると、通常、pull request が作成されてから約 15 分ほどで CodeGuru Reviewer がコメントを残してくれます!
※例だとこんな感じ
ちなみに、コメントに対してEmoji でリアクションしてあげると
機械学習のモデルが更に賢くなるそうなので、正しい指摘はぜひ褒めてあげてください(笑)
以上、CodeGuru Reviewer でした!
Profilerも触ってみたのですが、今回は割愛します。書くと長いのでまた今後!(しない)
まとめ
CodeGuru Profiler/Reviewerを触ってみましたが、
・Reviewerは開発者同士で、オンタイムで開発をしながら進行していくときに、若干のヘルプとなりそう。
例えば、アジャイルでガンガン開発→プルリク承認は開発リーダーと一緒にチームメンバーで行うなどの時かな。
・Profilerは開発メンバー/リーダーがときどきコードの品質向上図ったり、
開発メンバーでない管理者がコードの品質担保の為に定期的にのぞきつつ、ソースの監視をする際に便利かなと思います。
・ちなみにコストは下記で、Reviewerは無料トライアルあるし、Profilerはエージェントが入ってるインスタンスごとにかかるけど、1つを1カ月プロファイルしても18000円。計画して触ったらそこまでお金かからないですね。
・Reviewer
90 日間の無料トライアル後 → コード 100 行ごとに 0.75USD
・Profiler
毎月、プロファイリンググループごとに最初の36,000 サンプリング時間まで、1 サンプリング時間あたり 0.005USD