はじめに
ソフトウェア開発において、コードを書くだけでなく「何を作るか」「誰が担当するか」「いつまでに完成させるか」を管理することは非常に重要です。GitHub IssuesとProjectsは、これらのタスク管理とプロジェクト運営を効率化するための強力な機能を提供しています。
本記事では、GitHub Issuesの作成と管理方法、ラベルやマイルストーンを使った分類と進捗管理、GitHub Projectsでのカンバン管理、そしてIssueとPull Requestを連携させて自動的にタスクをクローズする方法までを体系的に解説します。この記事を読み終えると、以下のことができるようになります。
- GitHub Issueを作成し、適切に管理できる
- ラベルを活用してIssueを分類・整理できる
- マイルストーンでリリース計画と進捗を管理できる
- GitHub Projectsでカンバンボードを使ったタスク管理ができる
- Pull RequestとIssueを連携させ、マージ時に自動クローズできる
実行環境と前提条件
本記事の内容は、以下の環境で動作確認を行っています。
| 項目 | 要件 |
|---|---|
| Git | 2.40以上 |
| OS | Windows 10/11、macOS 12以上、Ubuntu 22.04以上 |
| ターミナル | コマンドプロンプト、PowerShell、Terminal.app、bash等 |
| エディタ | VS Code推奨 |
前提条件として、以下の知識があることを想定しています。
- コマンドライン操作の基礎知識(
cd、ls/dir、mkdir等) - テキストエディタの基本操作
- GitHubアカウントの作成とリポジトリの基本操作
- Pull Requestの基本的な理解
Gitのバージョンは以下のコマンドで確認できます。
|
|
GitHub Issuesとは
Issueの基本概念
GitHub Issueは、プロジェクトにおけるタスク、バグ報告、機能要望、質問などを追跡・管理するための機能です。単なるタスクリストではなく、議論の場としても活用でき、チームメンバー間のコミュニケーションを促進します。
Issueの主な用途は以下のとおりです。
- バグ報告: 発見したバグの詳細を記録し、修正を追跡する
- 機能要望: 新機能のアイデアを提案し、実装の可否を議論する
- タスク管理: 作業項目を細分化し、担当者や期限を設定する
- 質問・議論: 技術的な質問や設計方針についてチーム内で議論する
- ドキュメント改善: ドキュメントの不備や改善点を報告する
Issueの構成要素
Issueは以下の要素で構成されています。
|
|
Issueの作成と管理
Issueの作成手順
Issueを作成するには、リポジトリの「Issues」タブから「New issue」をクリックします。効果的なIssueを作成するポイントは以下のとおりです。
- 明確なタイトル: 何についてのIssueか一目でわかるタイトルをつける
- 詳細な説明: 背景、現状、期待される結果を記述する
- 再現手順(バグの場合): 問題を再現するための具体的な手順を記載する
- 環境情報: OS、ブラウザ、バージョン等の情報を含める
効果的なIssue記述のテンプレート
バグ報告用のIssueテンプレートの例を示します。
|
|
機能要望用のIssueテンプレートの例を示します。
|
|
Issueの状態管理
Issueには「Open」と「Closed」の2つの状態があります。
| 状態 | 説明 |
|---|---|
| Open | 作業中または未着手のIssue |
| Closed | 完了または対応不要となったIssue |
Issueをクローズする方法は以下のとおりです。
- Issue画面下部の「Close issue」ボタンをクリック
- 「Close as completed」: 作業完了
- 「Close as not planned」: 対応しないことを決定
また、後述するPull Requestとの連携により、自動的にクローズすることも可能です。
ラベルによるIssueの分類
ラベルの基本
ラベルは、Issueを分類・整理するための色付きタグです。適切にラベルを活用することで、Issueの検索性が向上し、プロジェクトの状況を一目で把握できるようになります。
デフォルトラベル
GitHubは新しいリポジトリに以下のデフォルトラベルを提供しています。
| ラベル | 説明 |
|---|---|
| bug | 予期しない動作やバグを示す |
| documentation | ドキュメントの改善や追加が必要 |
| duplicate | 類似のIssueが既に存在する |
| enhancement | 新機能の要望 |
| good first issue | 初めてのコントリビューターに適したIssue |
| help wanted | メンテナーが助けを求めている |
| invalid | 無効または関連性がなくなった |
| question | 追加情報や説明が必要 |
| wontfix | 対応しないことを決定した |
カスタムラベルの作成
プロジェクトに合わせてカスタムラベルを作成できます。「Issues」タブから「Labels」をクリックし、「New label」で新しいラベルを作成します。
推奨されるカスタムラベルの例を示します。
|
|
ラベルの適用とフィルタリング
Issueにラベルを適用するには、Issue画面右側のサイドバーで「Labels」をクリックし、該当するラベルを選択します。
ラベルでIssueをフィルタリングするには、以下の方法があります。
- Issues一覧のフィルター: 「Labels」ドロップダウンからラベルを選択
- 検索クエリ:
label:bugやlabel:"good first issue"を使用
複数ラベルの組み合わせ検索も可能です。
|
|
マイルストーンによる進捗管理
マイルストーンとは
マイルストーンは、関連するIssueやPull Requestをグループ化し、リリースやスプリントの進捗を追跡するための機能です。期日を設定することで、プロジェクトのスケジュール管理にも活用できます。
マイルストーンの活用例を示します。
- バージョンリリース: v1.0.0、v1.1.0、v2.0.0
- スプリント: Sprint 1、Sprint 2、Sprint 3
- フェーズ: MVP、Beta、GA(General Availability)
- 四半期目標: 2026 Q1、2026 Q2
マイルストーンの作成
マイルストーンを作成する手順は以下のとおりです。
- リポジトリの「Issues」タブを開く
- 「Milestones」をクリック
- 「New milestone」をクリック
- 以下の情報を入力
- Title: マイルストーン名(例: v1.0.0)
- Due date: 期日(オプション)
- Description: 概要や目標
Issueへのマイルストーン設定
Issueにマイルストーンを設定するには、Issue画面右側のサイドバーで「Milestone」をクリックし、該当するマイルストーンを選択します。
進捗の確認
マイルストーンページでは、以下の情報を確認できます。
- 完了率(プログレスバーで視覚的に表示)
- Open/ClosedのIssue数
- 期日までの残り日数
- 関連するIssueとPull Requestの一覧
|
|
GitHub Projectsによるカンバン管理
GitHub Projectsとは
GitHub Projectsは、IssueやPull Requestを視覚的に管理するためのプロジェクト管理ツールです。テーブルビュー、カンバンボード、ロードマップなど複数のビューを切り替えながら、柔軟にタスクを管理できます。
Projectの作成
新しいProjectを作成する手順は以下のとおりです。
- リポジトリまたは Organization のページを開く
- 「Projects」タブをクリック
- 「New project」をクリック
- テンプレートを選択(または空白から開始)
- Table: スプレッドシート形式
- Board: カンバンボード形式
- Roadmap: タイムライン形式
- プロジェクト名を入力して作成
カンバンボードの活用
カンバンボードは、タスクの状態を列(カラム)で表現し、カードを移動させることで進捗を管理する手法です。
一般的なカンバンボードの構成を示します。
|
|
ビューのカスタマイズ
GitHub Projectsでは、目的に応じて複数のビューを作成できます。
テーブルビュー スプレッドシート形式で、カスタムフィールドを追加してデータを管理できます。
|
|
ボードビュー カンバン形式で、ステータス列ごとにカードを配置します。
ロードマップビュー タイムライン形式で、イテレーションや日付フィールドに基づいてアイテムを配置します。
カスタムフィールドの追加
Projectsでは、標準フィールド以外にカスタムフィールドを追加できます。
| フィールドタイプ | 用途例 |
|---|---|
| Text | メモ、リンク |
| Number | 見積もり工数、ストーリーポイント |
| Date | 開始日、終了日 |
| Single select | 優先度、カテゴリ |
| Iteration | スプリント、イテレーション |
フィールドを追加するには、テーブルビューの右端にある「+」をクリックし、「New field」を選択します。
自動化(Workflows)
GitHub Projectsには、ビルトインの自動化機能があります。「Settings」から以下のワークフローを有効化できます。
| ワークフロー | 動作 |
|---|---|
| Item added to project | アイテム追加時にステータスを設定 |
| Item reopened | 再オープン時にステータスを変更 |
| Item closed | クローズ時にステータスを「Done」に変更 |
| Pull request merged | PRマージ時にステータスを「Done」に変更 |
| Auto-add to project | 特定条件のIssue/PRを自動追加 |
IssueとPull Requestの連携
キーワードによる自動クローズ
Pull RequestとIssueを連携させる最も便利な機能が、キーワードによる自動クローズです。PRの説明文やコミットメッセージに特定のキーワードとIssue番号を記述することで、PRがマージされた際にIssueを自動的にクローズできます。
使用可能なキーワードは以下のとおりです。
| キーワード | バリエーション |
|---|---|
| close | close, closes, closed |
| fix | fix, fixes, fixed |
| resolve | resolve, resolves, resolved |
同一リポジトリ内のIssue連携
同じリポジトリ内のIssueを参照する場合の記述例を示します。
|
|
複数のIssueをクローズする場合は以下のように記述します。
|
|
異なるリポジトリのIssue連携
異なるリポジトリのIssueを参照する場合は、完全な参照形式を使用します。
|
|
コミットメッセージでの連携
PRの説明文だけでなく、コミットメッセージでもIssueを参照できます。
|
|
ただし、コミットメッセージで参照した場合、Issueはクローズされますが、PRとIssueのリンクは表示されません。PRの説明文での参照を推奨します。
手動でのリンク
キーワードを使わずにIssueに言及するだけの場合は、#42のように番号のみを記述します。この場合、自動クローズは行われませんが、IssueとPRが相互にリンクされます。
|
|
Development セクションの活用
Issue画面右側の「Development」セクションでは、以下の操作が可能です。
- ブランチの作成: Issueから直接作業用ブランチを作成
- PRのリンク: 関連するPRを手動でリンク
- ステータス確認: リンクされたPR/ブランチの状態を確認
Issueからブランチを作成すると、ブランチ名が自動的に42-login-validationのような形式で生成され、IssueとPRの追跡が容易になります。
実践的なワークフロー例
個人プロジェクトでのタスク管理
個人プロジェクトでは、シンプルなワークフローを推奨します。
|
|
チーム開発でのワークフロー
チーム開発では、より構造化されたワークフローを採用します。
|
|
Issue テンプレートの設定
チームで一貫したIssue運用を行うために、テンプレートを設定することを推奨します。リポジトリに.github/ISSUE_TEMPLATE/ディレクトリを作成し、テンプレートファイルを配置します。
|
|
注意点とベストプラクティス
Issue運用の注意点
| 注意点 | 説明 |
|---|---|
| 1 Issue 1 タスク | 複数のタスクを1つのIssueにまとめない |
| 適切な粒度 | 大きすぎるIssueは分割する |
| 定期的な棚卸し | 古いIssueは定期的にレビューしてクローズまたは更新 |
| 重複確認 | 新しいIssue作成前に類似のIssueがないか確認 |
ラベル運用のベストプラクティス
| ベストプラクティス | 説明 |
|---|---|
| 命名規則の統一 | プレフィックス(type:、priority:等)で分類 |
| 色の一貫性 | 同じカテゴリのラベルは同系色に |
| 説明の追加 | ラベルの用途を説明文に記載 |
| 定期的な見直し | 使われないラベルは削除または統合 |
Project運用のベストプラクティス
| ベストプラクティス | 説明 |
|---|---|
| 適切なビュー選択 | 目的に応じてBoard/Table/Roadmapを使い分け |
| WIP制限の意識 | In Progressのアイテム数を制限する |
| フィルターの活用 | 担当者別、ラベル別のビューを作成 |
| 自動化の活用 | ビルトインワークフローを有効化 |
PR連携の注意点
キーワードによる自動クローズは、デフォルトブランチへのマージ時のみ動作します。feature ブランチへのマージでは、キーワードがあってもIssueはクローズされません。
|
|
まとめ
本記事では、GitHub IssuesとProjectsを活用したタスク管理とプロジェクト運営について解説しました。
学んだ内容を振り返ります。
- GitHub Issues: タスク、バグ、機能要望を追跡・管理
- ラベル: Issueを分類・整理し、検索性を向上
- マイルストーン: リリース計画と進捗の可視化
- GitHub Projects: カンバンボードによる視覚的なタスク管理
- PR連携:
Closes #番号でマージ時に自動クローズ
これらの機能を組み合わせることで、個人プロジェクトからチーム開発まで、効率的なプロジェクト運営が実現できます。まずは小規模なプロジェクトで試してみて、徐々にチームの運用に合わせてカスタマイズしていくことをお勧めします。