個人学習でIssueを書くのが面倒だったので、最低限のテンプレを整えた

## はじめに
個人開発や自己学習で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」をクリックします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4050675/5152be27-50c0-4763-8205-101ca5af2d10.png)

### 3.「Issues」セクションで「Set up templates」をクリック

ページ中ほどにある「Features」セクションの中に「Issues」の設定項目があります。
そこに「Set up templates」というボタンがあるのでクリックします。

![image (1).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4050675/d6f5bbce-cf1d-4d41-b9b1-b990e51903de.png)


### 4. テンプレートの種類を選択する

表示される選択肢の中から「Custom template（カスタムテンプレート）」を選びます。

![image (2).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4050675/c63529cb-1f8a-4d35-af96-92012e618b02.png)


### 5.「Preview and edit」をクリック

テンプレートの内容を編集する画面へ進みます。

![image (3).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4050675/b93204b8-d71e-4130-8a93-33b0c2313f60.png)


### 6. 編集アイコンをクリックし、テンプレートを編集

エディタが表示されるので、右上の鉛筆マークをクリックして内容を入力していきます。

![スクリーンショット 2025-06-16 23.14.31.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4050675/8957a295-6d12-472c-837c-010b4ba3c3af.png)

### 7. テンプレートの内容を記入する

今回は「enhancement（機能追加）」用のテンプレートを作成します。必要項目だけを記述して、シンプルな構成にします。

![image (4).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4050675/0cd19eee-6c69-4af5-9ae4-9ff2a4ae3949.png)

### 8.「Propose changes」で変更を確定

編集が終わったら「Propose changes」ボタンをクリックしてコミットします。
そのまま`main`ブランチに反映させるか、新しいブランチを作成してPull Requestとして送ることもできます。

![image (5).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4050675/8ccdc1d8-c50d-4a33-9038-ff7d9882cb6d.png)

## 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作成時に削除する運用を想定しています。

```markdown
# enhancement

## 概要
<!-- このPull Requestで対応する目的や背景を記述してください -->

## 実装内容
<!-- 実装した主な内容を箇条書きで記述してください -->

## 動作確認
<!-- 手動または自動で確認した手順を記述してください -->

## 関連Issue
<!-- 関連するIssueがあれば記載してください -->

## 補足
<!-- その他共有事項や注意点があれば記載してください -->
特に無し

---

# bug

## 概要
<!-- 修正対象となるバグの内容を簡潔に記述してください -->

## 修正内容
<!-- どのように修正したかを箇条書きで記述してください -->

## 確認手順
<!-- 修正後の動作の確認手順を記述してください -->

## 関連Issue
<!-- 関連するIssueがあれば記載してください -->

## 補足
<!-- その他共有事項や注意点があれば記載してください -->
特に無し
```
> PRテンプレートは1つしか設定できません。
> そのため、1つのテンプレートに複数のケース（バグ修正・機能追加など）をまとめておき、必要に応じて使わない部分を削除する運用が現実的です。

### 4. コミットして変更を反映する

ファイルを作成・編集したら、コミットしてリポジトリに反映します。
これで、PRを作成する際に自動的にこのテンプレートが読み込まれるようになります。

## 作成したIssueテンプレートの例

以下は、実際に作成した2種類のIssueテンプレートの内容です。

### `enhancement-template.md`(機能追加)

```markdown
---
name: enhancement_template
about: 新機能追加用のテンプレートです
title: ''
labels: enhancement
assignees: ''
---

## 概要
<!-- 追加する機能の目的や背景を簡潔に記述してください -->

## 機能要件
<!-- この機能に必要な要素をリストアップしてください -->
```

### `bug-template.md`(バグ報告・修正)

```markdown
---
name: bug_template
about: 不具合修正用のテンプレートです
title: ''
labels: bug
assignees: ''
---

## 概要
<!-- 発生しているバグの内容を簡潔に記述してください -->

## 再現手順
<!-- バグの発生手順を記述してください -->

## 期待される動作
<!-- 本来どのような挙動が期待されるかを記述してください -->

## 実際の挙動
<!-- 現在の動作・発生している問題を記述してください -->


## 補足情報
<!-- スクリーンショット・エラーログ・その他関連情報などがあれば記載してください -->
例: 特に無し
```