GitHubでの効率的なプルリクエスト管理: PR-Agentの導入

:::note warn
5月13日発表されたGPT4oの対応を追加
:::
# 導入
開発チームが直面する一般的な課題の一つに、品質の高いソフトウェアを短時間で提供することがあります。特に、人手不足の状況下では、プルリクエストのレビューにかかる時間の削減と、コード品質の維持がより重要になります。

この記事では、これらの課題に対する解決策として、PR-Agentの導入過程を紹介します。

# GitHub Copilot Enterpriseの初期検討
当初、我々は開発プロセスの効率化を目指し、GitHub Copilot Enterpriseの導入を検討しました。このツールはAI技術を活用してコードを自動生成し、開発者の生産性を向上させることができるため、非常に魅力的でした。

しかし、GitHub Copilot Enterpriseを利用するにはいくつかの前提条件がありました。

1. **GitHub Enterpriseアカウントの必要性**: このツールを使用するには、まずGitHub Enterpriseへのアップグレードが必要です。
2. **コスト**: 我々のチームは20名で構成されており、GitHub Enterpriseへの登録には年間USD 5040の費用がかかります。
3. **追加料金**: 上記の基本料金に加えて、GitHub Copilot Enterpriseの使用料がさらに加算されます。

これらの条件を検討した結果、特にコスト面での懸念から、他の代替案を探すことにしました。


# PR-Agentの選定理由
このコスト問題を解決するため、我々はPR-Agentの導入を検討しました。[PR-Agent](https://github.com/Codium-ai/pr-agent "PR-Agent")はGitHub Actionとして簡単に導入でき、GitHub Copilot Enterpriseよりも柔軟かつコスト効率の良い解決策だと思います。Open Ai側でAPIの利用制限などが簡単にできます。


# 導入手順

### ChatGPT APIアカウントの作成
1. OpenAIのWebサイトでChatGPT APIのアカウントを作成します。
2. GPT-4を使用するための料金プランに登録し、必要な支払い情報を入力します。
3. トークンの発行と追加
4. ChatGPT APIのダッシュボードからトークンを発行します。
5. 発行したトークンをGitHubレポジトリのRepository secretsにOPENAI_KEYという名前で追加します。


# GitHub Actionsの設定

以下の内容を記述します。


```yml:pr-agent.yml
name: pr-agent
on:
  pull_request:
    types: [opened, reopened, synchronize]
  issue_comment:
    types: [created, edited]
jobs:
  pr_agent_job:
    runs-on: ubuntu-latest
    permissions:
      issues: write
      pull-requests: write
      contents: write
    name: Run pr agent on every pull request, respond to user comments
    steps:
      - name: PR Agent action step
        id: pragent
        uses: Codium-ai/pr-agent@main
        env:
          CONFIG.MODEL: gpt-4o-2024-05-13  # 最新モデルの対応
          OPENAI_KEY: ${{ secrets.OPENAI_KEY }}
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
          PR_REVIEWER.EXTRA_INSTRUCTIONS: "Please use Japanese in descriptions."
          PR_DESCRIPTION.ADD_ORIGINAL_USER_DESCRIPTION: true
          PR_DESCRIPTION.EXTRA_INSTRUCTIONS: "Please use Japanese in descriptions. Titles should have prefix of commitlint pattern such as `feat:`, `chore:`, `test:`, `fix:`, `ci:`, `docs:` etc"
          PR_CODE_SUGGESTIONS.EXTRA_INSTRUCTIONS: "Please use Japanese in descriptions."
          PR_UPDATE_CHANGELOG.EXTRA_INSTRUCTIONS: "Please use Japanese in descriptions."
          github_action.auto_review: "true"
          github_action.auto_describe: "true"
          github_action.auto_improve: "true"

```


# 実際の使用例
PR-Agentは、新規プルリク作成時や/reviewコメントをした時に自動的に稼働します。これにより、プルリクエストの品質保証と迅速なレビューが可能になります。

### PR作成に走るgithub action

![スクリーンショット 2024-03-22 12.06.09のコピー.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/242102/4a0bbc5b-0283-b4cc-0cdf-76bbe9ad7887.png)
![スクリーンショット 2024-03-22 12.04.17.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/242102/8cbfb275-d1a0-c706-8ed6-03acb11bc92a.png)
![スクリーンショット 2024-03-22 12.05.04.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/242102/607c6af5-c5e0-ea24-03b0-8154a9a84d7d.png)

### コメントで走るgithub action

1. /reviewのコメントをする
![スクリーンショット 2024-03-22 12.15.41.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/242102/ede910b6-1c97-d32d-ca90-69cbf557c9f6.png)
2. github-actionsが見たemojiを付けてくれる(裏で処理開始)
![スクリーンショット 2024-03-22 12.18.17.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/242102/494850d8-1097-a9ca-586e-de0f092b023e.png)
3. 完了後
![スクリーンショット 2024-03-22 12.04.17.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/242102/8cbfb275-d1a0-c706-8ed6-03acb11bc92a.png)

詳しいコマンド使用方法や設定については、[PR-AgentのGitHubページ](https://github.com/Codium-ai/pr-agent "PR-Agent")を参照してください。


# 結論
PR-Agentの導入を試しください。