GitHubのIssueテンプレートで実現する効率的な課題管理

## はじめに
GitHubのIssueテンプレートを活用することで、バグ報告や機能要望を効率的に管理できます。この記事では、実際のテンプレート設定を例に、効果的な課題管理の方法を解説します。

## 1. 基本設定（config.yml）
![Capture-2024-12-30-121947.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/518208/a989510d-f9fb-3e1a-d339-326adf61c514.png)

```yaml:.github/ISSUE_TEMPLATE/config.yml
blank_issues_enabled: false
contact_links:
  - name: 質問・相談
    url: https://github.com/habitat-hub/board-game-prototype/discussions
    about: バグ報告や機能リクエスト以外の質問・相談はDiscussionsをご利用ください。

# Issue作成時のテンプレート設定
defaults:
  - template: "bug_report.yml"
    name: "🐛 バグ報告"
    about: "バグを報告する"
  - template: "feature_request.yml"
    name: "💡 機能リクエスト"
    about: "新機能のアイデアを提案する"
```

この設定により：
- 空のIssue作成を防止
- 質問・相談はDiscussionsへ誘導
- 2種類のテンプレートを提供

## 2. バグ報告テンプレート（bug_report.yml）
![Capture-2024-12-30-122023.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/518208/694271b4-6a21-eeb7-063b-9d68d126c75f.png)

```yaml:.github/ISSUE_TEMPLATE/bug_report.yml
name: 🐛 バグ報告
description: バグを報告する
labels: ["bug"]
body:
  - type: markdown
    attributes:
      value: |
        バグ報告ありがとうございます。以下の情報を記入してください。

  - type: textarea
    id: description
    attributes:
      label: バグの説明
      description: バグの内容を詳しく説明してください
      placeholder: できるだけ具体的に記述してください
    validations:
      required: true

  - type: textarea
    id: reproduction
    attributes:
      label: 再現手順
      description: バグを再現するための手順を記述してください
      placeholder: |
        1. '...' に移動
        2. '....' をクリック
        3. '....' までスクロール
        4. エラーが発生
    validations:
      required: true

  - type: textarea
    id: expected
    attributes:
      label: 期待する動作
      description: 本来期待される動作を記述してください
    validations:
      required: true

  - type: dropdown
    id: browsers
    attributes:
      label: 発生したブラウザ
      multiple: true
      options:
        - Chrome
        - Firefox
        - Safari
        - Edge
        - その他
```

## 3. 機能リクエストテンプレート（feature_request.yml）
![Capture-2024-12-30-122039.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/518208/57f837f9-751a-a2c6-6c7f-fa39ae84b5ea.png)

```yaml:.github/ISSUE_TEMPLATE/feature_request.yml
name: 💡 機能リクエスト
description: 新機能のアイデアを提案する
labels: ["enhancement"]
body:
  - type: markdown
    attributes:
      value: |
        機能の提案ありがとうございます。以下の情報を記入してください。

  - type: textarea
    id: problem
    attributes:
      label: 関連する問題
      description: この機能リクエストに関連する問題を説明してください
      placeholder: 例）〜の操作が面倒です
    validations:
      required: true

  - type: textarea
    id: solution
    attributes:
      label: 提案する解決策
      description: 考えられる解決策を説明してください
    validations:
      required: true

  - type: textarea
    id: alternatives
    attributes:
      label: 代替案
      description: 検討した他の解決策があれば記述してください
    validations:
      required: false

  - type: textarea
    id: additional
    attributes:
      label: その他の情報
      description: スクリーンショットや参考資料などがあれば追加してください
    validations:
      required: false
```

## テンプレートの特徴と活用ポイント

### バグ報告テンプレート
1. **詳細な情報収集**
   - バグの具体的な説明
   - 再現手順の明確化
   - 期待する動作の明示
   - 環境情報の収集

2. **自動ラベル付与**
   - `labels: ["bug"]`で自動的にバグラベルを付与

### 機能リクエストテンプレート
1. **構造化された提案**
   - 現状の問題点
   - 具体的な解決策
   - 代替案の検討
   - 補足資料の添付

2. **自動ラベル付与**
   - `labels: ["enhancement"]`で機能追加ラベルを付与

## 導入効果

1. **情報の標準化**
   - 必要な情報を漏れなく収集
   - フォーマットの統一による可読性向上

2. **効率的なトリアージ**
   - 自動ラベル付与による分類
   - 優先度判断に必要な情報の確実な取得

3. **コミュニケーションの円滑化**
   - 追加情報の問い合わせ減少
   - 解決までの時間短縮

## まとめ

適切に設定されたIssueテンプレートは、プロジェクトの課題管理を大きく改善します。バグ報告と機能リクエストの2つのテンプレートを使い分けることで、より効率的な課題管理が実現できます。

## 参考資料
- [GitHub Docs - Issue テンプレートについて](https://docs.github.com/ja/communities/using-templates-to-encourage-useful-issues-and-pull-requests/about-issue-and-pull-request-templates)
- [GitHub Docs - フォーム形式のIssueテンプレートの構文](https://docs.github.com/ja/communities/using-templates-to-encourage-useful-issues-and-pull-requests/syntax-for-issue-forms)