こんにちは!
最近の生成AIの技術の進歩に日々驚愕しているエンジニアです。
プロダクトのソースコードをAzureDevOpsのGitで管理しています。
たとえばReactやAngularのバージョンアップなどの大規模なプルリクエストが作成されると、
修正内容を細かくチェックしていくのはなかなか骨が折れる・・・
生成AIの力を借りたいけど、GitHubではないので生成AIにレビュアーをお願いできない状況
・・・ありますよね?
ねぇ?(迫真)🐶
MCPを使えばAzureDevOpsなどの内部情報を生成AIに連携させてうまくレビューさせる方法もあるんでしょうが、やりかたがややこしいしセキュリティ的にちょっと心配...
いや、セキュリティが心配なら生成AIにソースコード食わせないか・・・
モデルの学習に対してはオプトアウト設定している前提として、
レビューの手間を生成AIを使って軽減したいのは自然な考え方
ということで、
MCPとかややこしいの抜きで生成AIエージェントにプルリクをレビューしてもらって修正の要約や改善案を出してもらうのをやってみたので手順を書き留めておきます
事前準備
・生成AIエージェント
今回は、Claude Codeを使います。
プランは、Proプラン
モデルは、Claude-Sonnet-4
あとは、普通にソースコードが詰まったリポジトリをローカルにクローン
Claude Codeをインストールして使えるようにするところは、ClaudeやChatGPTに聞けばOK
GitHub Copilot でも行けると思うけど今時点だとClaude Codeの方が適してそう。両方使って比較してみるのもよい
で、ここからプルリクの内容を見ていくんですが
ClaudeやChatGPTに「Claude CodeにAzureDevOps上のプルリクをレビューしてもらうにはどうすればいい?」と聞くと、「対応してません」とか 「MCPを使えば~」と回答が来るのでイマイチ...
1. プルリクの内容を取得する
AzureDevOpsのリモートリポジトリ上のプルリクに対して、
手元にそのプルリクの作業ブランチをPullしてくる!
メインのブランチと作業ブランチの間のコミット差分でプルリクの内容が明白であればいいけど・・・
コミット履歴的にプルリクの内容が明白ではないことが多いです
え、プルリクのコミット履歴はリベースして整理するルール?
そういうお行儀が良いチームはこの手順はスキップしてOK!👌
・・・
プルリクのコミット一覧を開く
↓
コミットID&コミットコメントの一覧をコピーする
この辺りの手作業感がたまんないです!
きっとAzureDevOpsが標準でGitHub CopilotやClaude Codeに対応したら不要になるはず...
・・・
そしたら、手元でClaude Codeを起動して
「現在、とあるタスクの作業ブランチにいます。その作業ブランチにおいて複数のコミットがPRとして提出されています。これから、それらのコミットログの情報を一時ファイルに貼り付けます。貼り付け先の一時ファイルを作成してもらってもいいですか?」
と伝える
すると、私の手元では
「temp_commit_log.txt」
というファイルが作成されたので
先ほどコピーしたコミット一覧をペーストする
そして、
「貼り付けました!」
と伝えるとClaude Codeがプルリクの内容を理解してくれる
これでレビュー準備OK👌
2. レビューさせる
Claude Codeにプルリクの内容を理解させたら、あとはレビューさせる
ここで注意点として、単に
「レビューしてください!」
とだけ伝えると、
「このプルリクは承認可能です👌」
と割と甘い回答が返ってくることがある
そしたら続けて
「PRは承認可能であり、コード品質も向上しているとのことですが、それではPRレビューとは言えません。
あえていうならのコメントや質問・疑問について上げるとしたらどうですか?
3件以上あげてみてください」
と伝えることで
批判的レビューモード😠
に突入する
これにより、
より厳密なレビューを行い多数の改善を提案してくれる😄
3.プルリクへコメントする
無事、Claude Codeからレビュー結果をもらったら
その内容をそのままプルリクに書き写すのはNG
なぜならそれは幻惑が含まれている可能性があるからだ
ということで、
必ず、自分で目検&手作業でチェックして裏取りしてからコメントする💡
そうしないと、生成AIから受け取った内容をそのまま伝えるだけのモブになってしまう
プルリク作成者から
「そのように指摘/コメントした理由は?」と背景を聞かれて、
「Claude Codeがそういってたから・・・😜」
と回答するとプルリク作成者からちゃんと考えてからコメントしてくれと言われかねない
あくまで生成AIはそれらしい回答を出力してくれるツールであって、最終的な責任は自分自身で持つようにする
というのが、コーディングにおいてもその他のしごとにおいても生成AIツールを活用する上での原則
です!
現場からは以上です!
やり方が参考になったという方は、いいねをポチッと押してもらえるとうれしいです。
大きなプルリクのレビュアーへのアサインで「うっ・・・」となる開発者が減ることを願ってます!