【PR-Agent】GitHubのプルリクエストをAIにレビューしてもらう（PR-Agent Pro💎）

PR-Agent Pro💎を使って、AIにレビューをしてもらおう編です！
概要と特徴を説明し、GitHub Appを使った導入方法を解説します！
また、日本語対応の設定方法についても紹介します。
14日間無料トライアル（クレジット登録不要）が出来るので、もし興味があればぜひ試してみてください！
## PR-Agentとは？
- プルリクエストやレビュー作業を効率化するための AI ツールの1つ
- 2024/09/30に[名称変更](https://www.qodo.ai/blog/introducing-qodo-a-new-name-the-same-commitment-to-quality/)があり、Qodoという名称に変更されました

## AIレビューの他サービス比較
![_PR-Agentを使ってみた。.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1010278/007f1a2f-7528-ecdb-f8f4-206db34499d3.png)

## PR-Agentで出来ることって？
代表的な機能は4つあります。
**1. PRの説明文自動生成**
    PRの説明文（名前、タイプ、概要、コード・ウォークスルーなど）を自動生成する
**2. PRレビュー機能**
    レビューにかかる推定労力[1-5]や、セキュリティ上の懸念、重要なポイントについてのフィードバックを提供する
**3. コードの改善提案** 
    プルリクエストを改善するためのコードの変更提案を実施する
**4. 質問への回答機能**
    プルリクエストに関する質問をAIに投げかけ、フィードバックやアドバイスを得ることができる

### 1. PR説明文の自動生成 （[/describe](https://qodo-merge-docs.qodo.ai/tools/describe/)）
コマンドは、`/describe`です。
プルリクエストの変更内容を要約し、概要を自動生成してくれます。
![スクリーンショット 2024-10-22 19.16.11.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1010278/ffac3684-519a-0388-9f35-94fcfc58b9f5.png)

### 2. PRレビュー機能 （[/review](https://qodo-merge-docs.qodo.ai/tools/review/)）
コマンドは、`/review`です。
コードの品質を評価し、問題点を指摘してくれます。
主に以下4つの項目が評価ポイントになっています。
- レビューの推定労力（1-5のスケール）
- 関連するテストの提案
- セキュリティ上の懸念点
- 重要なポイント
![image (1).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1010278/a82a22da-224d-7646-0090-7e4a595f5cfb.png)

### 3. コードの改善提案 （[/improve](https://qodo-merge-docs.qodo.ai/tools/improve/)）
コマンドは、`/improve`です。
プルリクエストで追加・変更されたコードの改善点を提案してくれます。
![スクリーンショット 2024-10-23 20.21.02.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1010278/cd4d955e-2322-145d-707e-7f4b3e31930d.png)

### 4. 質問への回答機能 （[/ask](https://qodo-merge-docs.qodo.ai/tools/ask/)）
プルリクエスト上で AI とコメント形式で対話し、PRに関する質問や疑問を解消することができます。
`/ask {聞きたいこと}`といった感じで聞けばOKです。
![スクリーンショット 2024-10-22 20.55.40.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1010278/a9ee4751-9e9d-e1fe-2a0d-48b8f242ed55.png)
日本語で説明して欲しい場合は、「最後に日本語で説明してください」と加えない限り、全て英語で返ってきます。
また、毎度会話がリセットされてしまうため、常に初めまして状態の人と会話することになります。



## 導入方法
今回の記事では、サブスクのPR-Agent Pro💎（現：Qodo Merge Pro）利用する方法（GitHub App利用）を紹介していきますが、導入方法としては、主に以下2パターンあります。

> - OpenAI API キーを使用し<span style="color: #00796b">**GitHubActions**</span>を介して利用する方法

> - サブスクのPR-Agent Pro💎（現：Qodo Merge Pro）利用する方法（<span style="color: #00796b">**GitHub App利用**</span>）

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1010278/07a19622-1b43-217f-b7c0-5e55e588092c.png)


1つ目の方法に関しては、以下記事で紹介しているのでぜひ参考にしてみてください！
→ [【PR-Agent】GitHubのプルリクエストをAIにレビューしてもらう（GitHubActions編）](https://productblog.sencorp.co.jp/entry/2024/12/06/090000)

## 早速入れてみよう！
1. 以下にアクセスし、好きな方法で、Sign inを完了してください
https://app.qodo.ai/signin
![スクリーンショット 2024-12-03 19.34.45.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1010278/82fcacdc-5d13-3b9e-4cea-28ee0845c04a.png)


2. Qodo Mergeというタブを開き、step1から順に設定していきます
![スクリーンショット 2024-12-03 19.37.48.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1010278/f083839f-92a1-a623-6316-b5fd1d534d0f.png)

3. Step 1 (For all users) では、`Githubアイコン（Connect）`をクリックします
4. Step 2では、`GitHub settings`をクリックし、以下画面の`install`ボタンをクリックします。個人用アカウントにinstallするのか、紐づいている会社のアカウントにinstallするのか選択することができます。installしたいアカウントを選択してください

![スクリーンショット 2024-12-07 18.11.53.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1010278/5ee7587b-ed36-63c8-2238-ae43fc0d84e8.png)

5. 次に、全てのリポジトリに適用もしくは、適用したいリポジトリを選ぶことができます
![スクリーンショット 2024-12-03 19.41.54.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1010278/d3811910-9d7e-1533-da32-d2d93fdad726.png)

6. ここまで出来たら設定は終わりです！

7. 試しにプルリクストを作成してみて、実際に適用されているか確認してみましょう！:sparkles::sparkles:

以下のようにqodo-merge-proが動いてたら、適用できています:relaxed:
![スクリーンショット 2024-12-07 18.21.13.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1010278/879b35b5-6208-b6f4-df5e-110df86b6972.png)


現在は英語で出力されてしまっているかと思うので、
次の章では、日本語で設定する方法を説明していきます！

## 日本語に設定する方法
1. リポジトリのwikiで`New Page`ボタンをクリックし、`.pr_agent.toml`ファイルを作成してください
wikiがリポジトリにない場合は、リポジトリの :gear: Settingsから追加することができます。

```toml
[pr_reviewer] # /review #
extra_instructions = "Please use Japanese in descriptions."

[pr_description] # /describe #
publish_labels = false
enable_pr_type = false
extra_instructions = "Please use Japanese in descriptions."

[pr_code_suggestions] # /improve #
extra_instructions = "Answer in japanese"

[pr_add_docs] # /add_docs #
extra_instructions = "Answer in japanese"

[pr_update_changelog] # /update_changelog #
extra_instructions = "Answer in japanese"

[pr_test] # /test #
extra_instructions = "Answer in japanese"
```

## 設定した項目の解説
- `extra_instructions`
  - 追加の指示を加えるための設定項目です。
    日本語で対応して欲しかったので「日本語で記述してください」と設定しています。
- `enable_pr_type`
  - 以下項目をプルリクエストの説明文に設けるかどうかの設定です。必要なかったのでfalseで設定しています。![スクリーンショット 2024-12-07 18.37.07.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1010278/5c66071b-244f-ddd2-0645-7db181386d59.png)
- `publish_labels`
    - 自動で生成されるラベルのことです。必要なかったので、falseに設定しています。![スクリーンショット 2024-12-07 18.38.26.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1010278/cacbef62-c0c2-9538-18ae-8ee5b64a9b8d.png)


自動的に実行されるコマンドの修正もできます。
デフォルトでは、プルリクエストの作成時に`/describe`、`/review`、`improve`が実行されますが、`/describe`と`/improve`のみ実行といったようにカスタマイズすることができます。

以下例：
```toml
[github_app]
pr_commands = [
    "/describe --pr_description.final_update_message=false",
    "/review --pr_reviewer.num_code_suggestions=0",
    "/improve",
    "/review auto_approve"
]
```

その他にもreview_effortが1以下のプルリクエストに関しては自動Approveできるように設定したり、色々カスタマイズすることもできるので、詳しい設定は、以下をご参照ください:sparkles:
→ https://github.com/Codium-ai/pr-agent/blob/main/pr_agent/settings/configuration.toml

## サブスク利用のPR-Agentのみで使える特別機能
無料利用では利用できない、サブスク課金者限定機能もあるので、ぜひお試し期間中に利用してみてください！
![_PR-Agentを使ってみた。 (1).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1010278/b4b003e0-638e-6c31-89e9-1e09b184ff28.png)