メインコンテンツへスキップ
  1. Blogs/

GitHubのPull Requestでtemplateを使ってみた

2 分
GitHub
0222-nnn
著者
0222-nnn
猫が好き
目次

はじめに
#

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.mdbugfix_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作成者も考慮漏れを防げます。
  • チームの標準化
    • レビューの共通認識が生まれ、チーム全体の開発プロセスがスムーズになります。

最初は少し手間かもしれませんが、一度テンプレートを作成してしまえば、長期的にチーム開発の生産性を大きく向上させることができると思いました。

参考
#