はじめに
個人開発や自己学習でGitHubを使っていると、IssueやPull Requestを書くの面倒に感じませんか?
- 毎回、どの項目を書けばよかったか迷う
- 前のIssueと構成が違っていてモヤモヤする
- Issueの内容を考えるのにも多少時間がかかる
私自身、作業を始める前にIssueを書くようにしているのですが、正直「書くのが面倒で作業を始めない」という本末転倒なこともありました。
そこで、「あらかじめ最低限のテンプレートを用意しておけば、毎回同じ形式で気軽に記録できて、ストレスも減るのでは?」と思い、Issue・PRのテンプレートを整えてみることにしました。
本記事では、そんな経緯で作成したGitHubのIssueテンプレートとPRテンプレートについて、Web UIで設定手順や、実際に作成したテンプレート例を紹介します。
概要
今回は、個人開発や自己学習向けに、最低限の構成で使えるテンプレートを用意しました。
テンプレートは書くことのハードルを下げるのが目的で、書くのが面倒で続かなくなるのを防ぐためのものです。
Issueテンプレートでは、GitHubのラベルのうち使用頻度の高い bug と enhancement の2つだけを対象に作成しています。
Issueテンプレートの作成
GitHubでは、Issueテンプレートを設定する方法が2通りあります。
- GitHubのWeb UI(ブラウザ上)から作成・管理する方法(今回はこちらを紹介します)
- リポジトリ内に
.github/ISSUE_TEMPLATE/
フォルダを作り、Markdownファイルを直接置く方法(PRテンプレートと同様)
今回は、GUIから直感的に操作できる「Web UI」経由の方法を紹介します。特にGitHub初心者の方にも扱いやすい手順です。
1. GitHubにログインして、リポジトリを開く
テンプレートを設定したい対象のリポジトリにアクセスします。
2.「Settings」タブを開く
上部のタブから「Settings」をクリックします。
3.「Issues」セクションで「Set up templates」をクリック
ページ中ほどにある「Features」セクションの中に「Issues」の設定項目があります。
そこに「Set up templates」というボタンがあるのでクリックします。
4. テンプレートの種類を選択する
表示される選択肢の中から「Custom template(カスタムテンプレート)」を選びます。
5.「Preview and edit」をクリック
テンプレートの内容を編集する画面へ進みます。
6. 編集アイコンをクリックし、テンプレートを編集
エディタが表示されるので、右上の鉛筆マークをクリックして内容を入力していきます。
7. テンプレートの内容を記入する
今回は「enhancement(機能追加)」用のテンプレートを作成します。必要項目だけを記述して、シンプルな構成にします。
8.「Propose changes」で変更を確定
編集が終わったら「Propose changes」ボタンをクリックしてコミットします。
そのままmain
ブランチに反映させるか、新しいブランチを作成してPull Requestとして送ることもできます。
Pull Requestテンプレートの作成
PR(Pull Request)テンプレートは、Issueテンプレートと違ってGitHubのWeb UIからは作成できません。そのため、手動でリポジトリにファイルを追加する必要があります。
1. github
フォルダを用意する
リポジトリのルートに、.github
という名前のフォルダがない場合は新しく作成してください。
2. pull_request_template.md
というファイルを作る
そのフォルダの中に、pull_request_template.md
という名前で新規ファイルを作成します。
このファイルがテンプレートとして使用されます。
3. テンプレートの中身を記述する
以下は、機能追加(enhancement)とバグ修正(bug)を想定したテンプレートの記述例です。
1つのテンプレートファイルに複数のケースを記述しておき、不要な部分はPR作成時に削除する運用を想定しています。
# enhancement
## 概要
<!-- このPull Requestで対応する目的や背景を記述してください -->
## 実装内容
<!-- 実装した主な内容を箇条書きで記述してください -->
## 動作確認
<!-- 手動または自動で確認した手順を記述してください -->
## 関連Issue
<!-- 関連するIssueがあれば記載してください -->
## 補足
<!-- その他共有事項や注意点があれば記載してください -->
特に無し
---
# bug
## 概要
<!-- 修正対象となるバグの内容を簡潔に記述してください -->
## 修正内容
<!-- どのように修正したかを箇条書きで記述してください -->
## 確認手順
<!-- 修正後の動作の確認手順を記述してください -->
## 関連Issue
<!-- 関連するIssueがあれば記載してください -->
## 補足
<!-- その他共有事項や注意点があれば記載してください -->
特に無し
PRテンプレートは1つしか設定できません。
そのため、1つのテンプレートに複数のケース(バグ修正・機能追加など)をまとめておき、必要に応じて使わない部分を削除する運用が現実的です。
4. コミットして変更を反映する
ファイルを作成・編集したら、コミットしてリポジトリに反映します。
これで、PRを作成する際に自動的にこのテンプレートが読み込まれるようになります。
作成したIssueテンプレートの例
以下は、実際に作成した2種類のIssueテンプレートの内容です。
enhancement-template.md
(機能追加)
---
name: enhancement_template
about: 新機能追加用のテンプレートです
title: ''
labels: enhancement
assignees: ''
---
## 概要
<!-- 追加する機能の目的や背景を簡潔に記述してください -->
## 機能要件
<!-- この機能に必要な要素をリストアップしてください -->
bug-template.md
(バグ報告・修正)
---
name: bug_template
about: 不具合修正用のテンプレートです
title: ''
labels: bug
assignees: ''
---
## 概要
<!-- 発生しているバグの内容を簡潔に記述してください -->
## 再現手順
<!-- バグの発生手順を記述してください -->
## 期待される動作
<!-- 本来どのような挙動が期待されるかを記述してください -->
## 実際の挙動
<!-- 現在の動作・発生している問題を記述してください -->
## 補足情報
<!-- スクリーンショット・エラーログ・その他関連情報などがあれば記載してください -->
例: 特に無し