背景
今回は、私が最近取り組んでいるChatGPTを活用したPR作成の自動化について、Qiitaで共有したいと思います。GitHubやGitLabでのPull Request(PR)作成は、日々の開発フローの中でも非常に重要なタスクですが、レビュアーにわかりやすいように、Issueに紐づけて、変更内容を丁寧にまとめ、マークダウン形式で書くとなると意外に労力がかかります。特に、複数のPRを一日に何度も作成する場合、繰り返しの作業がストレスになることもあります。
そこで、AIを活用してこの作業を効率化できないかと考え、「ChatGPT」を使ってPRの作成を自動化する方法を実装しました。この記事では、その過程と効果について紹介します。
自動化の流れ
今回の自動化プロセスは、次のような流れで進行します。
- Issueをコピペ: ChatGPTに、対象となるIssueの内容をコピペして入力します。
- PRの概要を生成: ChatGPTが、コピペしたIssueの内容に基づいて該当IssueやPRの概要を自動生成します。
- 変更内容の生成: before, afterでコードの差分をコピペすると、ChatGPTがその差分を判断して変更内容を生成します。
- PRの生成: ChatGPTが事前に指定したテンプレートに沿って、変更内容を含んだPRをMarkdown形式で整形し、コードブロックとして出力します。その出力結果をコピペするだけで、PRの作成が完了します。
実装手順
1. テンプレートの準備
まず、PRのテンプレートを用意します。このテンプレートには、Issue番号、目的、変更内容などのセクションを用意しておきます。たとえば、次のようなテンプレートを使います。
## Issue
- #{issue_number}
## 目的
{issueの目的を簡潔に記載}
## 変更内容
- {変更内容1}
- {変更内容2}
## その他
{その他必要な情報}
2. ChatGPTへのプロンプト
次に、ChatGPTへのプロンプトを作成します。以下は、具体的なプロンプト例です。
次のテンプレートに従って、Pull Requestを生成してください。
その際、コードブロックの中にマークダウン形式で記述してください。
## Issue
- #{issue_number}
## 目的
{issueの目的を簡潔に記載}
## 変更内容
- {変更内容1}
- {変更内容2}
## その他
{その他必要な情報}
3. ChatGPTからのPR生成
上記のプロンプトと具体的なIssueの内容や変更点を入力するだけで、PRの内容が自動的に生成され、整形されたマークダウン形式で出力されます。
4. 出力例
例えば、以下のようなPRが生成されます。(PR例)
## Issue
- #1234
## 目的
このPRでは、ユーザープロファイル情報を取得するAPIエンドポイントに`lastLogin`フィールドを追加し、ユーザーが最後にログインした日時をレスポンスに含める機能を実装しました。
## 変更内容
- `GET /api/v1/users/:id`のレスポンスに`lastLogin`フィールドを追加
- ユーザーモデルに`lastLogin`プロパティを追加し、ログイン時にこのフィールドが更新されるように修正
- フロントエンドでユーザープロファイル画面に`lastLogin`を表示するための対応も行いました
## その他
この変更に伴い、データベースクエリに一部修正を加えていますが、パフォーマンスに大きな影響はないと考えています。負荷テストを実施して影響がないことを確認予定です。
実際に使ってみて
この方法により、PR作成の手間が大幅に削減されました。Issue番号と変更内容を簡単に入力するだけで、形式の整ったPRが出力されるため、複数のPRを効率的に処理することが可能です。
また、PR作成の際に毎回フォーマットを考える必要がなくなるため、記載ミスやフォーマットのバラつきもなくなりました。Markdown形式で丁寧に記述を行おうとすると意外と面倒なのですが、テンプレートにまとめて出力させるとレビュアーにとっても見やすく、自分の手間もかからないのでいい感じです。
CLIツールとしてまとめても面白そう
現在はブラウザでChatGPTを使用していますが、API経由で自動生成するCLIツールとしてまとめてみても面白いかもしれません。CLIならばGitと連携して差分やcommitを自動で判別し、コマンドを打つだけでPRまで完了させることができるようになります。
まとめ
今回、PR作成の自動化にChatGPTを使ってみた結果、簡単な割に非常に大きな効果を実感しました。手間のかかる作業を効率化できたことで、他の重要な開発タスクに集中できるようになったのは大きなメリットです。
PR作成のように繰り返し発生するタスクをAIで自動化することで、開発効率を格段に向上させることができます。皆さんも、ぜひ自分のプロジェクトでChatGPTを活用して、自動化の力を体感してみてください。