コンテンツにスキップ

GitHub Projects v2 ハンズオンガイド

関連issue: #91, #137 作成日: 2026-03-10


目次

  1. GitHub Projects v2 とは
  2. ハンズオン: プロジェクトの作成と基本操作
  3. 3つのビューを使いこなす
  4. カスタムフィールド
  5. イテレーション管理
  6. Sub-issuesでタスクを分割する
  7. 自動化ワークフロー
  8. GitHub Actionsとの連携(上級)
  9. MyLabプロジェクトでの実践設計
  10. 参考資料

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: プロジェクトを作成する

  1. GitHub で自分のリポジトリを開く
  2. 「Projects」タブをクリック
  3. 「Link a project」→「New project」をクリック
  4. テンプレートを選択:
  5. Board: カンバンボード(おすすめ)
  6. Table: スプレッドシート形式
  7. Roadmap: タイムライン形式
  8. Blank: 白紙から
  9. プロジェクト名を入力して「Create project」

Step 2: Issueを追加する

既存のIssueを追加する

  1. テーブルビューまたはボードビューで「+ Add item」をクリック
  2. # を入力するとリポジトリのIssue一覧が表示される
  3. 追加したいIssueを選択

新しいIssueを直接作成する

  1. 「+ Add item」をクリック
  2. テキストを入力してEnter
  3. 作成されたドラフトアイテムをクリック → 「Convert to issue」でIssue化

複数リポジトリのIssueを1つのプロジェクトで管理

Organization配下の複数リポジトリ、または個人の複数リポジトリのIssueをまとめて管理できる。

Step 3: カードを操作する

  • 移動: ドラッグ&ドロップで列間を移動(ボードビュー)
  • 詳細表示: カードをクリックすると右サイドパネルが開く
  • フィールド編集: サイドパネルまたはテーブルビューで直接編集
  • アーカイブ: 不要になったアイテムはアーカイブ(削除ではない)

3. 3つのビューを使いこなす

ビューの追加方法

  1. プロジェクト画面上部の「+」(New view)をクリック
  2. レイアウト(Board / Table / Roadmap)を選択
  3. ビュー名を設定

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制限を意識した運用

設定例

列(ステータス)の構成:

Backlog → Todo → In Progress → Review → Done

列のカスタマイズ

  1. ボードビューで列ヘッダーの「...」をクリック
  2. 列名の変更、色の設定、説明の追加ができる
  3. 列の並び替えはドラッグ&ドロップ

カードに表示するフィールド

ボードビューの設定(歯車アイコン)で、カードに表示するフィールドを選択できる:

  • 担当者のアバター
  • ラベル
  • カスタムフィールド(優先度、見積もり等)

ロードマップビュー(ガントチャート風)

タスクをタイムライン上に表示。スケジュール管理に使う。

活用シーン

  • プロジェクト全体のスケジュールを俯瞰
  • マイルストーンや期限を可視化
  • チームメンバーの作業期間の重なりを確認

設定手順

  1. 新しいビューを追加し、レイアウトを「Roadmap」に設定
  2. 日付フィールドを設定:
  3. 「Start date」: 開始日のフィールドを選択
  4. 「Target date」: 目標日のフィールドを選択
  5. ズームレベルを調整(月 / 四半期 / 年)
  6. マーカー(重要な日付の縦線)を追加可能

制約事項

  • タスク間の依存関係を矢印で表示できない
  • クリティカルパスの自動計算ができない
  • 進捗率のバー表示がない

本格的なガントチャートが必要な場合は、GanttProject等の専用ツールと併用する。


4. カスタムフィールド

フィールドの追加方法

  1. テーブルビューで右端の「+」をクリック
  2. 「New field」を選択
  3. フィールド名とタイプを設定

フィールドタイプ一覧

タイプ 説明 使用例
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つのサイクルとし、その期間内に完了させるタスクを計画・実行する仕組み。スクラムの「スプリント」に相当する。

イテレーションフィールドの設定

  1. テーブルビューで「+」→「New field」
  2. タイプ「Iteration」を選択
  3. 設定:
  4. 開始日: イテレーション1の開始日
  5. 期間: 1週間 / 2週間 / 3週間 / 4週間 / カスタム
  6. 「Save」で保存

イテレーションの運用

フィルタで現在のイテレーションを表示

iteration:@current    # 現在のイテレーション
iteration:@next       # 次のイテレーション
iteration:@previous   # 前のイテレーション

ブレーク(休止期間)の挿入

祝日や休暇期間をブレークとして設定できる:

  1. イテレーションフィールドの設定を開く
  2. 「Add break」をクリック
  3. 休止期間の開始日と終了日を設定

イテレーションビューの作成

  1. 新しいテーブルビューを作成
  2. フィルタ: iteration:@current
  3. ビュー名: 「今週のスプリント」
  4. グループ化: ステータスでグループ化

これで「今のイテレーションでやるべきタスク」が一覧で見える。

個人開発でのイテレーション活用

個人開発では厳密なスプリント運用は不要だが、以下のような使い方が有効:

  • 1週間単位でタスクを計画する
  • 週の始めに「今週やること」をイテレーションに割り当てる
  • 週の終わりに完了/未完了を振り返る
  • 未完了タスクは次のイテレーションに繰り越す

6. Sub-issuesでタスクを分割する

Sub-issuesとは

Issue内に子Issue(Sub-issue)を作成し、階層構造でタスクを管理する機能。最大8階層までネスト可能。WBSの階層構造をそのままGitHub上で表現できる。

Sub-issueの作成方法

方法1: Issue画面から作成

  1. 親Issueを開く
  2. 「Sub-issues」セクションの「Create sub-issue」をクリック
  3. タイトルを入力してEnter

方法2: 既存のIssueをSub-issueにする

  1. 親Issueを開く
  2. 「Sub-issues」セクションの「Add sub-issue」をクリック
  3. 既存のIssueを検索して追加

方法3: チェックリストからSub-issueに変換

  1. Issue本文にチェックリスト(- [ ] タスク名)を記載
  2. チェックリスト項目の右側に表示される「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で行える。

設定方法

  1. プロジェクト画面右上の「...」→「Workflows」をクリック
  2. 使いたいワークフローのトグルをONにする
  3. 必要に応じて条件(ステータスの移動先等)をカスタマイズ

利用可能なワークフロー

ワークフロー トリガー アクション
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を自動でプロジェクトに追加する:

  1. Workflows → 「Auto-add to project」
  2. フィルタを設定:
    is:issue is:open label:learning
    
  3. これで 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

必要な設定

  1. Personal Access Token(PAT)を作成:
  2. Settings → Developer settings → Personal access tokens → Fine-grained tokens
  3. 必要な権限: project (read/write), issues (read)
  4. リポジトリのSecretsにPATを登録:
  5. 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. 参考資料

公式ドキュメント

無料学習プラットフォーム

2025年の最新情報

実践記事

関連ガイド