はじめに
最近はClaude Codeを使って開発を行っていることが多いです。
以下の記事の通り、Issueを作成→PRの作成までClaude Codeにしてもらっていたのですが、
最近はPRのレビューの指摘内容までClaude Codeにしてもらっているため、その方法を紹介します。
手順
セットアップ
まずはClaude CodeでPRの情報を取得できるようにするため、GitHub CLIをインストールします。
GitHub CLIとはGitHubのコマンドラインツールで、リポジトリ管理やIssue作成などをターミナルから行うことができる便利なツールです。
詳しくは公式のドキュメントをご覧ください。
Claude Codeのコマンドを作成
Claude Codeでは、独自にコマンドを作成できる仕組みがあります。
この機能を使うことで、独自に定義したワークフローを /hogeのような形で簡単に呼び出せるようになります。
今回は以下のようなコマンドを作成します。
- 現在のブランチのPRの「Resolve」の状態になっていないレビューコメントを取得する
- 取得したコメントの内容をもとに、コードの修正をする
- 編集結果をpushする
~/.claude/commands/fix-review-point.md に以下のようなプロンプトを定義します。
~/.claude/commands/fix-review-point.md
Resolveしていないレビューコメントの指摘内容へ対応して下さい。
## 進め方の手順
1. 次項の記載のコマンドを用いて、Resolveしていないレビューコメントを確認する
2. Resolveしていないレビューコメントの内容を理解する
3. 指摘内容を実現するために必要なタスクをTDD(テスト駆動開発)に基づいて遂行する
4. テストとLintを実行し、すべてのテストが通ることを確認する
5. コミットを適切な粒度で作成する
6. 修正内容をすでに作成している適切なコミットにsquashし、pushする
7. PRのdescriptionを更新する
## ghコマンド
以下のコマンドでResolveしていないレビューコメントを取得できます。
```bash
OWNER_REPO=$(gh repo view --json nameWithOwner --jq '.nameWithOwner')
OWNER=$(echo $OWNER_REPO | cut -d"https://qiita.com/" -f1)
REPO=$(echo $OWNER_REPO | cut -d"https://qiita.com/" -f2)
PR_NUMBER=$(gh pr view --json number --jq '.number')
gh api graphql -f query="
query {
repository(owner: \"${OWNER}\", name: \"${REPO}\") {
pullRequest(number: ${PR_NUMBER}) {
number
title
url
state
author {
login
}
reviewRequests(first: 20) {
nodes {
requestedReviewer {
... on User {
login
}
}
}
}
reviewThreads(last: 20) {
edges {
node {
isResolved
isOutdated
path
line
comments(last: 20) {
nodes {
author {
login
}
body
url
createdAt
}
}
}
}
}
}
}
}" --jq '
.data.repository.pullRequest as $pr |
{
pr_number: $pr.number,
title: $pr.title,
url: $pr.url,
state: $pr.state,
author: $pr.author.login,
requested_reviewers: [.data.repository.pullRequest.reviewRequests.nodes[].requestedReviewer.login],
unresolved_threads: [
$pr.reviewThreads.edges[] |
select(.node.isResolved == false) |
{
path: .node.path,
line: .node.line,
is_outdated: .node.isOutdated,
comments: [
.node.comments.nodes[] |
{
author: .author.login,
body: .body,
url: .url,
created_at: .createdAt
}
]
}
]
}
'
```
このコマンドを/fix-review-point
のように実行することで、PRについているResolveしていないレビューコメントを取得できます。
開発の流れ
今回定義したコマンドを用いて僕は普段以下のような開発を行っています。
- 行いたいタスクをIssueとして定義する
-
/exec-issue
コマンドを用いてIssueの内容をClaude Codeで実装、PRを作成する - Gemini Code Assistを用いて自動でレビューを行う
- 自身でもコードのレビューを行う
- 今回定義した
/fix-review-point
を用いてレビュー箇所の修正を行い、PRに反映する - コードに問題がなくなるまで以下を繰り返す
- 修正完了したレビューコメントをResolveする
- Gemini Code Assistを用いて再度レビューをする
- 自身でもレビューする
-
/fix-review-point
を用いて修正する
終わりに
で定義した/exec-issue
と今回定義した/fix-review-point
を用いると、Claude Code上ではほぼ指示などを出さず、GitHubをインターフェースとしてコードの生成・修正を行うことができます。
個人的にはPlanモードなどを使って最初のアウトプットの質を上げるよりも、実装→レビューのサイクルを回す方が対応の負荷も小さく、改善のサイクルも回しやすいと感じています。
もし似たようなことをしたい方がいれば、是非ご参考ください。
Views: 0