GitHub Projects v2 ハンズオンガイド¶
関連issue: #91, #137 作成日: 2026-03-10
目次¶
- GitHub Projects v2 とは
- ハンズオン: プロジェクトの作成と基本操作
- 3つのビューを使いこなす
- カスタムフィールド
- イテレーション管理
- Sub-issuesでタスクを分割する
- 自動化ワークフロー
- GitHub Actionsとの連携(上級)
- MyLabプロジェクトでの実践設計
- 参考資料
1. GitHub Projects v2 とは¶
概要¶
GitHub Projects v2は、GitHub上でタスク管理・プロジェクト管理を行うための統合ツール。IssueやPull Requestをカード化し、ボード、テーブル、ロードマップの3つのビューで管理できる。
3つのビュー = 3つのタスク管理手法¶
| ビュー | 対応する手法 | 主な用途 |
|---|---|---|
| テーブル | WBS的 | タスク一覧、カスタムフィールド管理、スプレッドシート感覚 |
| ボード | カンバン | 日々の進捗管理、ドラッグ&ドロップ操作 |
| ロードマップ | ガントチャート風 | スケジュール管理、タイムライン表示 |
2025年の重要アップデート¶
| 機能 | 説明 |
|---|---|
| Sub-issues | 最大8階層のネスト構造。進捗バーで完了率を可視化 |
| Issue Types | Bug / Feature / Task 等の標準的な分類 |
| 依存関係 | blocked by / blocking でIssue間の依存関係を明示 |
| アイテム上限 | 1プロジェクトあたり最大50,000アイテム |
| REST API | 2025年9月よりREST APIもサポート(従来はGraphQLのみ) |
2. ハンズオン: プロジェクトの作成と基本操作¶
Step 1: プロジェクトを作成する¶
- GitHub で自分のリポジトリを開く
- 「Projects」タブをクリック
- 「Link a project」→「New project」をクリック
- テンプレートを選択:
- Board: カンバンボード(おすすめ)
- Table: スプレッドシート形式
- Roadmap: タイムライン形式
- Blank: 白紙から
- プロジェクト名を入力して「Create project」
Step 2: Issueを追加する¶
既存のIssueを追加する¶
- テーブルビューまたはボードビューで「+ Add item」をクリック
#を入力するとリポジトリのIssue一覧が表示される- 追加したいIssueを選択
新しいIssueを直接作成する¶
- 「+ Add item」をクリック
- テキストを入力してEnter
- 作成されたドラフトアイテムをクリック → 「Convert to issue」でIssue化
複数リポジトリのIssueを1つのプロジェクトで管理¶
Organization配下の複数リポジトリ、または個人の複数リポジトリのIssueをまとめて管理できる。
Step 3: カードを操作する¶
- 移動: ドラッグ&ドロップで列間を移動(ボードビュー)
- 詳細表示: カードをクリックすると右サイドパネルが開く
- フィールド編集: サイドパネルまたはテーブルビューで直接編集
- アーカイブ: 不要になったアイテムはアーカイブ(削除ではない)
3. 3つのビューを使いこなす¶
ビューの追加方法¶
- プロジェクト画面上部の「+」(New view)をクリック
- レイアウト(Board / Table / Roadmap)を選択
- ビュー名を設定
1つのプロジェクトに複数のビューを作成できる。目的別にビューを使い分けるのがベストプラクティス。
テーブルビュー(WBS的な活用)¶
スプレッドシートのような見た目。カスタムフィールドを列として表示できる。
活用シーン¶
- タスクの全体一覧を把握したい
- カスタムフィールド(見積もり、優先度等)を一覧で編集したい
- フィルタやソートで条件絞り込みをしたい
設定例¶
タイトル | ステータス | 担当者 | 優先度 | 見積もり | イテレーション
---------|-----------|--------|--------|---------|-------------
WBS学習 | In Progress| @me | High | 4h | Sprint 1
ガント学習| Todo | @me | Medium | 3h | Sprint 1
カンバン | Todo | @me | Medium | 3h | Sprint 2
フィルタの使い方¶
テーブルビュー上部のフィルタバーで条件を指定:
# 自分に割り当てられたタスクだけ表示
assignee:@me
# 特定のステータスのみ
status:"In Progress"
# ラベルで絞り込み
label:learning
# 複合条件
assignee:@me status:"In Progress","Todo"
グループ化¶
「Group by」で特定のフィールドごとにグループ化できる:
- ステータスでグループ化 → 進捗状況が一目で分かる
- イテレーションでグループ化 → スプリント別に整理
- 担当者でグループ化 → 誰が何をやっているか把握
ボードビュー(カンバン)¶
ドラッグ&ドロップでカードを列間で移動できるカンバンボード。
活用シーン¶
- 日々のタスク進捗管理
- チームのタスク状況を俯瞰
- WIP制限を意識した運用
設定例¶
列(ステータス)の構成:
列のカスタマイズ¶
- ボードビューで列ヘッダーの「...」をクリック
- 列名の変更、色の設定、説明の追加ができる
- 列の並び替えはドラッグ&ドロップ
カードに表示するフィールド¶
ボードビューの設定(歯車アイコン)で、カードに表示するフィールドを選択できる:
- 担当者のアバター
- ラベル
- カスタムフィールド(優先度、見積もり等)
ロードマップビュー(ガントチャート風)¶
タスクをタイムライン上に表示。スケジュール管理に使う。
活用シーン¶
- プロジェクト全体のスケジュールを俯瞰
- マイルストーンや期限を可視化
- チームメンバーの作業期間の重なりを確認
設定手順¶
- 新しいビューを追加し、レイアウトを「Roadmap」に設定
- 日付フィールドを設定:
- 「Start date」: 開始日のフィールドを選択
- 「Target date」: 目標日のフィールドを選択
- ズームレベルを調整(月 / 四半期 / 年)
- マーカー(重要な日付の縦線)を追加可能
制約事項¶
- タスク間の依存関係を矢印で表示できない
- クリティカルパスの自動計算ができない
- 進捗率のバー表示がない
本格的なガントチャートが必要な場合は、GanttProject等の専用ツールと併用する。
4. カスタムフィールド¶
フィールドの追加方法¶
- テーブルビューで右端の「+」をクリック
- 「New field」を選択
- フィールド名とタイプを設定
フィールドタイプ一覧¶
| タイプ | 説明 | 使用例 |
|---|---|---|
| Text | 自由テキスト | メモ、備考 |
| Number | 数値 | 見積もり工数、ストーリーポイント |
| Date | 日付 | 開始日、目標日 |
| Single select | 単一選択 | 優先度(High/Medium/Low)、カテゴリ |
| Iteration | イテレーション | Sprint 1, Sprint 2, ... |
| Tracks / Tracked by | 追跡関係 | Sub-issuesの進捗追跡 |
おすすめフィールド構成¶
個人開発プロジェクト向け:
| フィールド名 | タイプ | 選択肢 |
|---|---|---|
| Status | Single select | Backlog, Todo, In Progress, Review, Done |
| Priority | Single select | High, Medium, Low |
| Estimate | Number | 時間単位(1, 2, 4, 8...) |
| Start Date | Date | - |
| Target Date | Date | - |
| Iteration | Iteration | 2週間スプリント |
| Category | Single select | Feature, Bug, Learning, Docs, Chore |
5. イテレーション管理¶
イテレーションとは¶
一定期間(通常1〜4週間)を1つのサイクルとし、その期間内に完了させるタスクを計画・実行する仕組み。スクラムの「スプリント」に相当する。
イテレーションフィールドの設定¶
- テーブルビューで「+」→「New field」
- タイプ「Iteration」を選択
- 設定:
- 開始日: イテレーション1の開始日
- 期間: 1週間 / 2週間 / 3週間 / 4週間 / カスタム
- 「Save」で保存
イテレーションの運用¶
フィルタで現在のイテレーションを表示¶
ブレーク(休止期間)の挿入¶
祝日や休暇期間をブレークとして設定できる:
- イテレーションフィールドの設定を開く
- 「Add break」をクリック
- 休止期間の開始日と終了日を設定
イテレーションビューの作成¶
- 新しいテーブルビューを作成
- フィルタ:
iteration:@current - ビュー名: 「今週のスプリント」
- グループ化: ステータスでグループ化
これで「今のイテレーションでやるべきタスク」が一覧で見える。
個人開発でのイテレーション活用¶
個人開発では厳密なスプリント運用は不要だが、以下のような使い方が有効:
- 1週間単位でタスクを計画する
- 週の始めに「今週やること」をイテレーションに割り当てる
- 週の終わりに完了/未完了を振り返る
- 未完了タスクは次のイテレーションに繰り越す
6. Sub-issuesでタスクを分割する¶
Sub-issuesとは¶
Issue内に子Issue(Sub-issue)を作成し、階層構造でタスクを管理する機能。最大8階層までネスト可能。WBSの階層構造をそのままGitHub上で表現できる。
Sub-issueの作成方法¶
方法1: Issue画面から作成¶
- 親Issueを開く
- 「Sub-issues」セクションの「Create sub-issue」をクリック
- タイトルを入力してEnter
方法2: 既存のIssueをSub-issueにする¶
- 親Issueを開く
- 「Sub-issues」セクションの「Add sub-issue」をクリック
- 既存のIssueを検索して追加
方法3: チェックリストからSub-issueに変換¶
- Issue本文にチェックリスト(
- [ ] タスク名)を記載 - チェックリスト項目の右側に表示される「Convert to sub-issue」をクリック
進捗バーの表示¶
親Issueには子Issueの完了率が進捗バーとして表示される:
#91 タスク管理ハンズオン学習 [████████░░░░░░░░] 50%
├── #134 WBS学習 ✅ (Closed)
├── #135 ガントチャート学習 ✅ (Closed)
├── #136 カンバン学習 (Open)
└── #137 GitHub Projects v2 学習 (Open)
WBSとの対応¶
| WBSレベル | GitHub上の表現 |
|---|---|
| レベル0(プロジェクト) | 親Issue(例: #91) |
| レベル1(フェーズ) | Sub-issue(例: #134〜#137) |
| レベル2(作業) | Sub-issueのSub-issue、またはチェックリスト |
| レベル3(ワークパッケージ) | チェックリスト項目 |
ベストプラクティス¶
- 大きなIssueは必ずSub-issuesで分割する - 1つのIssueが大きすぎると進捗が見えない
- Sub-issueは独立して完了可能な単位にする - 他のSub-issueに依存しすぎない
- 3階層程度に留める - 深すぎる階層は管理コストが増える
- 進捗バーを活用する - 親Issueを見るだけで全体の進捗が分かる
7. 自動化ワークフロー¶
ビルトイン自動化¶
GitHub Projectsには組み込みの自動化ワークフローがある。設定はGUIで行える。
設定方法¶
- プロジェクト画面右上の「...」→「Workflows」をクリック
- 使いたいワークフローのトグルをONにする
- 必要に応じて条件(ステータスの移動先等)をカスタマイズ
利用可能なワークフロー¶
| ワークフロー | トリガー | アクション |
|---|---|---|
| Item added to project | Issueがプロジェクトに追加された | ステータスを設定(例: Backlog) |
| Item reopened | IssueがReopenされた | ステータスを設定(例: Todo) |
| Item closed | IssueがCloseされた | ステータスを設定(例: Done) |
| Code changes requested | PRにChanges requestedレビュー | ステータスを設定 |
| Code review approved | PRがApproveされた | ステータスを設定 |
| Pull request merged | PRがマージされた | ステータスを設定(例: Done) |
| Auto-add to project | 特定の条件でIssue/PRが作成された | 自動でプロジェクトに追加 |
| Auto-archive items | 一定期間Doneのまま | 自動でアーカイブ |
おすすめの自動化設定¶
1. Item added to project → Status: "Backlog"
→ 新しいIssueは自動的にBacklogに配置
2. Item closed → Status: "Done"
→ IssueをCloseしたら自動でDoneに移動
3. Item reopened → Status: "Todo"
→ 再オープンしたらTodoに戻す
4. Auto-add to project
→ ラベル "learning" が付いたIssueを自動追加
→ フィルタ: is:issue label:learning
5. Auto-archive items
→ 14日間Doneのままのアイテムを自動アーカイブ
Auto-addの設定例¶
特定の条件に合うIssueを自動でプロジェクトに追加する:
- Workflows → 「Auto-add to project」
- フィルタを設定:
- これで
learningラベルが付いた新しいIssueが自動的にプロジェクトに追加される
8. GitHub Actionsとの連携(上級)¶
公式Action: actions/add-to-project¶
Issueが作成されたときに自動でプロジェクトに追加するAction。
ワークフロー例¶
# .github/workflows/add-to-project.yml
name: Add to Project
on:
issues:
types: [opened]
jobs:
add-to-project:
runs-on: ubuntu-latest
steps:
- uses: actions/add-to-project@v1
with:
project-url: https://github.com/users/YOUR_USERNAME/projects/PROJECT_NUMBER
github-token: ${{ secrets.ADD_TO_PROJECT_PAT }}
labeled: learning, task-management
label-operator: OR
必要な設定¶
- Personal Access Token(PAT)を作成:
- Settings → Developer settings → Personal access tokens → Fine-grained tokens
- 必要な権限:
project(read/write),issues(read) - リポジトリのSecretsにPATを登録:
- Settings → Secrets and variables → Actions →
ADD_TO_PROJECT_PAT
ステータス自動変更(GraphQL API活用)¶
PRがマージされたときにIssueのステータスを自動変更するActionの例:
# .github/workflows/update-project-status.yml
name: Update Project Status on PR Merge
on:
pull_request:
types: [closed]
jobs:
update-status:
if: github.event.pull_request.merged == true
runs-on: ubuntu-latest
steps:
- name: Update project item status
uses: actions/github-script@v7
with:
github-token: ${{ secrets.ADD_TO_PROJECT_PAT }}
script: |
// PRに紐づくIssueのステータスを "Done" に変更する処理
// 実装はGraphQL APIを使用
console.log('PR merged, updating project status...');
注意点¶
- GitHub Actionsの自動化は、まずビルトイン自動化で十分か確認してから導入する
- PATの管理に注意(有効期限の設定、最小権限の原則)
- 複雑な自動化はメンテナンスコストも考慮する
9. MyLabプロジェクトでの実践設計¶
推奨プロジェクト構成¶
MyLabリポジトリ用のGitHub Projectsを以下のように設計する:
プロジェクト名: 「MyLab タスク管理」¶
ビュー構成¶
| ビュー名 | レイアウト | 用途 | フィルタ |
|---|---|---|---|
| カンバン | Board | 日々のタスク管理 | - |
| 全タスク一覧 | Table | 全体把握・フィールド編集 | - |
| 今週のスプリント | Table | 今週やることに集中 | iteration:@current |
| ロードマップ | Roadmap | スケジュール俯瞰 | - |
| 学習タスク | Table | 学習系に絞り込み | label:learning |
カスタムフィールド¶
| フィールド | タイプ | 選択肢 |
|---|---|---|
| Status | Single select | Backlog, Todo, In Progress, Done |
| Priority | Single select | High, Medium, Low |
| Estimate (h) | Number | - |
| Start Date | Date | - |
| Target Date | Date | - |
| Iteration | Iteration | 1週間単位 |
| Category | Single select | Feature, Bug, Learning, Docs, Infra |
自動化ワークフロー¶
ON: Item added to project → Status: Backlog
ON: Item closed → Status: Done
ON: Item reopened → Status: Todo
ON: Auto-archive → 14日後にDoneアイテムをアーカイブ
Issue設計との連携¶
MyLabの既存Issue構造との対応:
GitHub Projects ビュー
│
├── 親issue #91: タスク管理ハンズオン学習
│ ├── Sub-issue #134: WBS学習
│ ├── Sub-issue #135: ガントチャート学習
│ ├── Sub-issue #136: カンバン学習
│ └── Sub-issue #137: GitHub Projects v2学習
│
├── 親issue #92: Discord Bot統合
│ ├── Sub-issue: ...
│ └── Sub-issue: ...
│
└── ...(他のプロジェクト)
テーブルビューでグループ化(親Issue別)すると、プロジェクト横断的にタスクを管理できる。
週次運用フロー¶
月曜日(週の始め):
1. 「今週のスプリント」ビューを開く
2. Backlogから今週やるタスクを選び、イテレーションを設定
3. 優先度を確認・調整
毎日:
4. 「カンバン」ビューでタスクを移動
5. In Progress は3つまで(WIP制限)
金曜日(週の終わり):
6. 完了タスクを確認
7. 未完了タスクは次のイテレーションに繰り越し
8. 振り返り(何がうまくいったか、改善点は何か)
10. 参考資料¶
公式ドキュメント¶
- Quickstart for Projects - まずここから
- About Projects
- Customizing the board layout
- Customizing the roadmap layout
- About iteration fields
- Adding sub-issues
- Built-in automations
- Best practices for Projects
無料学習プラットフォーム¶
- Microsoft Learn: Manage your work with GitHub Projects - ハンズオン形式の体系的入門
- GitHub Blog: GitHub for Beginners - 公式ブログの入門記事
2025年の最新情報¶
- Evolving GitHub Issues and Projects(2025/04) - Sub-issues, Issue Types等のGA発表
- REST API for GitHub Projects(2025/09)
- Introducing sub-issues(技術ブログ)
実践記事¶
- CARTA TECH BLOG: GitHub Projectsを3Q使ったプラクティス
- Zenn: GitHub Projectを最高のToDo管理ツールにする
- Zenn: GitHub Projects v2 API完全攻略
関連ガイド¶
- WBS基礎と実践ガイド - タスクの洗い出し方法
- ガントチャート実践ガイド - スケジュール可視化
- カンバン運用ガイド - 日々の進捗管理