はじめに #
GitHubでPull Requestを作成する際、人によって書き方が違うと困ることがあります。 そこで、テンプレートがあれば便利だと考え、調べてみました。
GitHub templateとは? #
GitHub Pull Request templateとは、Pull Requestを作成する際に自動で表示されるひな形ファイルのことです。 なお、Issueでもテンプレートは利用できますが、この記事ではプルリクエストテンプレートに絞って解説します。
このテンプレートにあらかじめ必要な項目(例:変更の目的、変更内容、レビューしてほしい点、テスト方法など)を記述しておくことで、PR作成者がテンプレートに沿って情報を埋めるだけで、レビューに必要な情報が過不足なく提供できるようになります。
GitHub templateの種類は? #
テンプレートには、主にMarkdown形式とYAML形式の2種類があります。
- Markdown形式(.md)
- 柔軟性が高く、書き方が自由なので、とりあえず始めてみたい方におすすめです。
- YAML形式(.yml)
- 記述内容が厳密に決まっている場合や、機械的な処理に利用する場合に適しています。
どちらの形式も .github ディレクトリ内に配置することで、
GitHubがテンプレートとして認識してくれます。
GitHub templateの配置方法とルール #
テンプレートを利用するためには、まずテンプレートファイルをリポジトリのmainブランチにマージする必要があります。ファイルがmainブランチに存在しないとテンプレートとして認識されません。
1. 単一テンプレートの場合 #
リポジトリ全体で1つのテンプレートを使いたい場合は、以下のパスにファイルを作成します。
.github/pull_request_template.md
このファイルをmainブランチにマージすれば、新しいPRを作成する際にこのテンプレートが自動で適用されます。
2. 複数テンプレートの場合 #
機能追加、バグ修正、ドキュメント更新など、PRの目的によってテンプレートを使い分けたい場合は、以下のディレクトリ内に複数のテンプレートファイルを作成します。
.github/PULL_REQUEST_TEMPLATE/
このディレクトリ内に、例えばfeature_template.mdやbugfix_template.mdといった、目的に応じた名前でテンプレートファイルを作成します。
【注意】 このディレクトリのスペルはPULL_REQUEST_TEMPLATEと大文字であることに注意してください。
テンプレートの使い方 #
テンプレートファイルの配置が完了したら、実際にPR作成で使ってみましょう。
単一テンプレートの使い方 #
単一テンプレートの場合は、特に何も意識する必要はありません。通常通りPRを作成するだけで、pull_request_template.mdの内容が自動で表示されます。
複数テンプレートの使い方 #
複数テンプレートの場合は、PR作成画面のURLにクエリパラメータを追加する必要があります。
URLの末尾に、?quick_pull=template=ファイル名.mdという形でパラメータを付与します。
例:bugfix_template.mdを使用する場合
https://github.com/ユーザー名/リポジトリ名/compare/main...my-branch?quick_pull=1&template=`bugfix_template.md
PR作成時にこのURLを使用すると、指定したテンプレートが適用された状態で画面が開きます。
GitHub templateを実際に使ってみる #
今回はMarkdown形式のテンプレートを作成し、実際に動作を確認してみました。 テンプレートの内容は、AIアシスタントのGeminiに考えてもらいました。
構成 #
- リポジトリ
- GitHubTemplateTest
- ブランチ
- mine
- test
- ディレクトリ構成
.github
├── README.md
├── PULL_REQUEST_TEMPLATE # 複数テンプレート用フォルダ
│ ├── bugfix_template.md # bugfix用
│ └── doc_template.md # doc用
└── pull_request_template.md # 単一テンプレート(PR作成時に自動適用)
単一テンプレートの場合 #
単一テンプレート pull_request_template.md の内容は以下になります。
# プルリクエスト
## 変更の概要
<!-- このPRで何を変更するか簡潔に説明してください -->
## 変更の理由
<!-- なぜこの変更が必要なのか説明してください -->
## 変更内容
<!-- 具体的にどのような変更を行ったか説明してください -->
## テスト方法
<!-- どのようにテストしたか、またはテストすべきかを説明してください -->
## 影響範囲
<!-- この変更が他の機能に与える影響について説明してください -->
## チェックリスト
- [ ] コードレビューを依頼した
- [ ] テストが完了している
- [ ] ドキュメントを更新した(必要に応じて)
- [ ] コミットメッセージが適切である
新しいPRを作成すると、上記の内容が自動で表示されました。
複数テンプレートの場合 #
次に、複数テンプレート用のディレクトリ PULL_REQUEST_TEMPLATE を作成し、目的別のテンプレートを配置しました。
- bugfix_template.md
# バグ修正
## 修正対象のバグ
<!-- どのようなバグを修正するか説明してください -->
## バグの再現手順
<!-- バグを再現するための手順を説明してください -->
## 修正内容
<!-- どのように修正したか説明してください -->
## 修正後の動作確認
<!-- 修正後にどのような動作になるか説明してください -->
## 関連するIssue
<!-- 関連するIssueがあれば記載してください -->
- doc_template.md
# ドキュメント更新
## 更新対象
<!-- どのドキュメントを更新するか説明してください -->
## 更新理由
<!-- なぜドキュメントの更新が必要なのか説明してください -->
## 更新内容
<!-- 具体的にどのような更新を行ったか説明してください -->
## 確認方法
<!-- 更新内容をどのように確認できるか説明してください -->
複数テンプレートを使用する場合は、PR作成時のURLにクエリパラメータを追加する必要があります。
- 例:バグ修正用テンプレートを使う場合
https://github.com/ユーザー名/GitHubTemplateTest/compare/main...test?quick_pull=1&template=bugfix_template.md
- 例:ドキュメント更新用テンプレートを使用する場合
https://github.com/ユーザー名/GitHubTemplateTest/compare/main...test?quick_pull=1&template=doc_template.md
実際の動作確認結果 #
複数テンプレートの使用方法を確認してみましょう。PR作成画面でURLにテンプレート情報をコピーします。
URLの末尾に ?quick_pull=template=ファイル名.md というクエリパラメータを追加してブラウザでアクセスすると、指定したテンプレートが適用された状態でPR作成画面が開きます。
- バグ修正用テンプレートを使用する場合
?quick_pull=1&template=bugfix_template.md
- ドキュメント更新用テンプレートを使用する場合
?quick_pull=1&template=doc_template.md
まとめ #
プルリクエストテンプレートを活用することで、以下のようなメリットがあると感じました。
- レビューの効率化
- 必要な情報が網羅されるため、レビュー担当者が変更の意図や影響範囲をすぐに把握できます。
- 品質の向上
- PRに含めるべき項目が明確になるため、PR作成者も考慮漏れを防げます。
- チームの標準化
- レビューの共通認識が生まれ、チーム全体の開発プロセスがスムーズになります。
最初は少し手間かもしれませんが、一度テンプレートを作成してしまえば、長期的にチーム開発の生産性を大きく向上させることができると思いました。