Devin に Dependabot PR をレビューしてもらおう
リーナー開発チームの黒曜(@kokuyouwind)です。
最近話題の AI ソフトウェアエンジニア、 Devin AI をリーナーでも使い始めました。
いろいろ試してみた限り「めちゃくちゃ上手くタスクをこなしてくれるケース」と「びっくりするほど迷走するケース」の差が激しくてうまく使いこなすのには利用者側のノウハウが必要だなーと感じています。
今回は試したなかでも、特にうまく動いており汎用性の高いものを記事にまとめます。
Dependabot PR のレビュー、意外と時間かかる問題
依存ライブラリのバージョンを最新に保つため、 GitHub Dependabot など依存関係更新ツールのを使っている方も多いのではないでしょうか。[1]
ライブラリごとに自動でバージョン更新の Pull Request (以下 PR)を作ってくれるため大変便利ですよね。
ただ、これをマージするには大抵の場合以下のレビューを実施する必要があります。[2]
- 更新されるバージョンのリリースノートを確認し、破壊的な変更があるか確認する
-
- で破壊的な変更がある場合は、影響があるかプロジェクトのソースコードを確認する
-
- で影響があると確認できた場合は、既存の挙動を保つようソースコードを修正する
大抵の Pull Request は 1. で「破壊的変更なし、マージしてヨシ!」となるんですが、それでも数が多いと地味に時間がかかります。
また Rubocop や Prettier などのバージョン更新では新しいルールが入ることもあり、 CI が失敗するのでコードを修正する必要があったりします。
結果、主要製品ラインはともかく、内部ライブラリやちょっとしたツールなどのリポジトリでは、ちょっと見ない間にこうなります。
つらい
Devin にレビューをお願いしよう!
そこで Devin の出番です。
Devin にこんな感じでお願いしてみましょう。
([リポジトリ名]
は対象のリポジトリ名に書き換えてください)
# 指示
[リポジトリ名]の Pull Request を順に確認し、 Dependabot や Renovate などによるライブラリバージョン更新のものについてレビューを行ってください。(その他の Pull Request は何もしないでください。またすでに Devin によるレビューコメントがついている場合はスキップしてください)
レビューでは、以下の作業を行ってください。
1. ライブラリバージョン更新に伴う変更点を確認し、破壊的変更がないかを確認する
2. 変更点確認に使用した情報ソースへのリンクと、変更内容のサマリ、動作に影響がないかを簡単にまとめてPull Requestにコメントする
すべての Pull Request で作業が完了したら、さらに以下を行ってください。
レビュー対象のうち、破壊的変更があり動作に影響があると判断した各 Pull Request それぞれについて、正しく動作するよう修正を行ってください。この際、 HEAD ブランチから新しいブランチを切り、 HEAD ブランチに向けた Pull Request を新たに作ってください
# 制約事項
* すべてのコミュニケーションやPull Requestコメントは日本語で行ってください。
* 調査や修正において、調査や修正作業が3回連続で進展しない場合はその旨をコメントし、次のPull Requestのレビューや修正に進んでください。
* 現在どのPull Requestに対してレビューや修正などの作業をしているか、セッションで都度報告してください(調査や修正の詳細は不要なので、調査・修正の開始・終了のみを対象としているPull Requestのリンクのみを付記して教えて下さい)
つまるところ、人間がやる「リリースノートの確認」「影響があるかの判断と修正」をお願いしています。
この結果、以下のように Devin くんが働いてくれます。
指示を理解して…
Pull Requestを順に確認して…
Change Logを見に行って…
破壊的変更がないとわかったら、わかりやすくコメントを付けてくれます
このコメントを見れば安心してマージできますね。
破壊的変更がある場合は、以下のように変更の概要と確認すべき事項をまとめてくれます。
影響をまとめてくれるので確認しやすい
また破壊的変更をもとに修正 PR も作ってくれます。
もともとの PR に向けて新しい PR を作るので管理しやすい
これによってライブラリ更新の影響を把握しやすくなり、 PR マージ判断を素早く判断できるようになりました。
Devin の良いところと気になるところ
似たような要約は GitHub Actions だけでもある程度できそうですが、「ブラウザを操作できるので、各ライブラリのリリースノートを見たうえでリンクを辿って詳細を追える」「プロジェクトコードを見られるので、影響判断や修正ができる」という両方を簡単な指示でできるのが Devin のメリットだと感じます。
一方で、以下のようなところもあり、まだプロンプトの調整や Knowledge の追加が必要そうです。
- Rails など、ある程度影響の広い修正だと頓珍漢な修正になることがある
- Ruby のバージョン変更で Docker Image Tag の修正を見逃すなど、影響範囲を適切に判断できないときがある
- たまにインデント修正を繰り返すなど謎のドツボにハマったループで ACU を使い潰してレビューが途中で終わる
また Devin に頼んでから一定時間待たないとレビューコメントがつかないため、 Dependabot PR 作成に合わせてスケジュールでの自動実行などが行えると良さそうです。
Devin Playbook でマクロ起動
今回のように使い回しの効くプロンプトは Devin の Playbook に登録しています。
!review_bumps で登録
このように登録しておくと、 Devin に !review_bumps [リポジトリ名]
と話しかけるだけでレビューをしてくれるうえ、プロンプトの調整もしやすいので便利です。
宣伝
リーナーでは Devin AI や Cursor を始め、 AI を使った開発生産性向上に取り組んでいます。
興味があるかたは気軽にお話しましょう!
Discussion