え?まだそんなコードレビューしているの?時間の無駄
AIが割と一般化した昨今、本当にエンジニアの生産性が一気に何倍にもスピードアップしているのを目の当たりにする昨今です。まさに鉄砲伝来とか黒船襲来というべきか、AIを使った開発が出来ないと、一方的にやられてしまう、そんな時代が到来しています。
その1つがコードレビュー。AIにコードを見てもらうと、かなり良い感じに指摘してくれます。AIにレビューをさせることで
- 爆速でレビューしてくれて
- 他人の作業を待つこと無く
- 綺麗なコードにすることが出来る
ようになっています。
逆にAIレベルが30秒で出来るレベルのコードレビューしかしてこなかった貴方、業界での存在価値が消えかかっています。そこで、今回はAI時代を生き抜くコードレビューは一体何かというのを、私なりに考えてみました。
AI時代のコードレビュー
基本的な考え方
今回はざっくりわかりやすさの為に機械的と抽象的(概念的)の軸で考えて見ます。
現在、より機械的な物から自動化されていっています。ここ10年くらいで静的コード解析ツール(Rubyだとrubocop、JavascriptだとESLintなど)が一気に普及しました。そして、ここ1年程度の大規模言語モデルを用いたAIにより、自動化の幅が広がって来ています。
(2024年現在)AIが得意なこと
1つのファイルだけを見て、可読性や保守性などの書き方、命名規則、負荷への懸念、DRY化などの機械的な箇所はAIがかなり指摘してくれるようになってきています。完璧とはいかないまでも、時間対効果を考えると物凄い高度なサジェストをしてくれます。
(2024年現在)AIが苦手なこと=人がやるべきこと
大規模プロダクトの全てのファイルを見て、それを解析して、機能要件やデータの構造や複数ファイルに跨る情報を理解し、その上で最適なコードをサジェストする…なんてのは今現在ではまだまだ出来ません。故に抽象度の高い提案はAIには不向きで、人間の目でしっかり見る必要があります。
ミドルやシニア層は今まで細かなレビューにかけていた時間を、機能理解や今後のプロダクトの未来を考えた戦略的な部分にフォーカスして思考を巡らせる事で、よりクールで将来性のあるプロダクトが出来ることでしょう。
逆に、綺麗なコードが手早くかける、そのためのお作法を知っている、というのがエンジニアの武器としては最早弱くなりつつある様に感じます。それこそ、それ専門に研究し、最先端で言語の開発の仕様に携わっているレベルでないと、コードの記述に関する専門性は無いに等しいレベルかもしれません。
具体的なAIの活用方法
先ずは考え方のレビュー
実装の前に、「こういう方針で実装していこうと思う」というのを、担当者と一緒に言語化して、それをレビュー(チームで意見だし)するようにしています。その結果、よりカチッと各種構成や実装のイメージ出来るようになり、作り直しの手間が減ります。ここは、AIに使ったほうが良いライブラリとかのサジェストをもらったりもすることもあるが、基本的には人と人との会話を重視しています。
AIを使ったコードレビュー
他の方が記事にされていたりするので、参考にしてみてください。まだまだ黎明期なので、これといった回答があるわけではありませんので、また、機会があれば私も記事にしてみたいと思います。
AIレビューの組織的な活用
現在、我々チームでは全員にGithubCopilotを配っています。また、GithubCopilotのやり取りをプルリクのコメントで書くようにしています。その事で、レビューの二度手間が省けますし、他にも「こういう観点でもAIに聞いてみよう」など、レビューしています。チーム全体で、AI先生の活用方法を溜め、より効果的なレビュー方法を確立するのも、今の時代ならではでしょう。
実際にAIレビューをしてみた感想
レビュー作業は時間を要する割に、機能要件から技術的な指摘まで幅広く行う必要があったので、結構な手間でした。AIを通すことで、体感レビューの作業が半分程度になっていると言っても過言ではありません。また、AIのレビューは使っている限り結構良い線を行っています。レビューの見る範囲が小さくなり、より機能や先を見据えたレビューに専念出来るようになりました。今後とも、チームで知見をためて、爆速度でプロダクトの機能開発を出来るような組織にしていくのが、今のミドルマネージャーに求められる1つの仕事なのかな、と思っている昨今でした。
