コンテンツにスキップ

GitHub Projects

この章では、GitHub Projectsを使ったプロジェクト管理について学びます。ボード、テーブル、ロードマップビューと自動化ワークフローを解説します。

GitHub Projectsは、Issue やPR を視覚的に管理するプロジェクト管理ツールです。2022年に大幅リニューアルされ、より柔軟な管理が可能になりました。

  • 複数のビュー(ボード、テーブル、ロードマップ)
  • カスタムフィールド
  • 自動化ワークフロー
  • 複数リポジトリのIssueを統合管理
  1. リポジトリの「Projects」タブ
  2. 「New project」
  3. テンプレートを選択(またはBlank)
  1. プロフィール → Projects
  2. 「New project」
  3. 複数リポジトリを横断して管理可能

カンバン形式でカードを管理:

┌─────────┐ ┌─────────┐ ┌─────────┐ ┌─────────┐
│ Todo │ │In Progress│ │ Review │ │ Done │
├─────────┤ ├─────────┤ ├─────────┤ ├─────────┤
│ Issue 1 │ │ Issue 3 │ │ Issue 5 │ │ Issue 7 │
│ Issue 2 │ │ Issue 4 │ │ Issue 6 │ │ Issue 8 │
└─────────┘ └─────────┘ └─────────┘ └─────────┘

カードをドラッグ&ドロップでステータス変更。

スプレッドシート形式で管理:

TitleStatusAssigneePriorityDue Date
Issue 1Todo@user1High2024-01-15
Issue 2In Progress@user2Medium2024-01-20

Excel/Notion のような操作感。

タイムライン形式で期間を可視化:

January February
|-------- Issue 1 --------|
|---- Issue 2 ----|
|-------- Issue 3 --------|

開始日・終了日フィールドが必要。

タイプ説明
Textテキスト入力メモ、URL
Number数値ストーリーポイント、工数
Date日付期限、開始日
Single select単一選択ステータス、優先度
Iterationイテレーションスプリント
  1. テーブルビューで「+」列をクリック
  2. フィールドタイプを選択
  3. 名前とオプションを設定
Status(単一選択):
- 📋 Todo
- 🔄 In Progress
- 👀 In Review
- ✅ Done
Priority(単一選択):
- 🔴 High
- 🟡 Medium
- 🟢 Low
Story Points(数値):
- 1, 2, 3, 5, 8, 13
Sprint(イテレーション):
- Sprint 1: 2024-01-01 〜 2024-01-14
- Sprint 2: 2024-01-15 〜 2024-01-28

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

Section titled “イテレーションフィールドの設定”
  1. フィールド追加 → Iteration
  2. イテレーション期間を設定(例: 2週間)
  3. 開始日を設定
  1. Issue をイテレーションに割り当て
  2. ボードビューでイテレーションごとにフィルタ
  3. 進捗を追跡

プロジェクト設定 → Workflows:

ワークフロー動作
Item added追加時にステータスを設定
Item reopened再オープン時にステータス変更
Item closedクローズ時にステータスを Done に
PR mergedマージ時にステータスを Done に
Auto-add to project条件に合うIssueを自動追加
フィルタ例:
- is:issue is:open label:bug
- is:pr is:open author:@me
- is:issue is:open milestone:"v1.0"
# Issue作成時にProjectに追加
name: Add to Project
on:
issues:
types: [opened]
jobs:
add-to-project:
runs-on: ubuntu-latest
steps:
- uses: actions/add-to-project@v0.5.0
with:
project-url: https://github.com/orgs/myorg/projects/1
github-token: ${{ secrets.PROJECT_TOKEN }}
  1. プロジェクト → Insights
  2. 「New chart」
  3. チャートタイプを選択
  • Bar chart: ステータス別、担当者別の集計
  • Line chart: 時系列での推移
  • Stacked area: 累積表示
設定:
- X軸: 日付
- Y軸: Open items count
- グループ: なし
ビュー用途
全体ボード全体のステータス把握
マイタスク自分のタスクをフィルタ
今週のスプリント現在のイテレーション
バックログ未着手のアイテム一覧
  1. 「+ New view」をクリック
  2. ビュータイプを選択
  3. フィルタ・グループ化・ソートを設定
  4. ビュー名を設定
# 自分のタスク
assignee:@me
# 高優先度
priority:High
# 今週締め切り
due:<=2024-01-21
# 複合条件
status:"In Progress" assignee:@me

Terminal window
# プロジェクト情報の取得
gh api graphql -f query='
query {
user(login: "username") {
projectV2(number: 1) {
title
items(first: 10) {
nodes {
content {
... on Issue {
title
}
}
}
}
}
}
}
'

既存プロジェクトをコピー:

  1. プロジェクト → Settings → Copy project
  2. ビュー、フィールド、ワークフローが複製される
ショートカット動作
Cmd/Ctrl + Kコマンドパレット
Spaceアイテムを開く
E編集モード
/フィルタ
# Slack通知
name: Project Update Notification
on:
projects_v2_item:
types: [edited]
jobs:
notify:
runs-on: ubuntu-latest
steps:
- name: Notify Slack
run: |
curl -X POST ${{ secrets.SLACK_WEBHOOK }} \
-H 'Content-type: application/json' \
-d '{"text": "Project item updated"}'

機能用途
ボードビューカンバン形式の管理
テーブルビュー詳細な一覧表示
ロードマップスケジュール可視化
カスタムフィールド柔軟なデータ管理
自動化手動作業の削減

次の章では、Discussionsについて学びます。

Q1. GitHub Projects(新版)で利用できるビュー形式でないものはどれですか?

Q2. GitHub Projectsでカスタムフィールドを追加する主な目的は何ですか?

Q3. GitHub Projectsの自動化で利用されるワークフローとは何ですか?