GitHub Projects勉強会を開催しました

こんにちは!ROUTE06 Software Engineerの@yoshida-m-3です。

GitHub Projectsがアップデートを続けていることは知っていましたが、実際のプロジェクトで使用できるかは確証がありませんでした。そこでチーム内でGitHub Projectsの勉強会を開催し、実際に検証することにしました。

見るべき人に見るべき情報を確実に届けたい

プロジェクト情報の管理において、「各関係者に適切な粒度で情報を確実に届けること」が重要だと考えています。 情報の可視化にはカンバンを使うことが多いですが、情報が多いと重要な情報が隠れてしまう可能性があります。
情報の粒度は見るべき人の立場によって異なります。エンジニアはIssue単位の情報が必要ですが、プロダクトオーナー・マネージャーはEpic単位の情報が必要であり、時系列の進捗情報も必要な場合があります。

GitHub ProjectsのTable, Board, Roadmapなどのレイアウトを使って複数のViewを作成することで、見るべき人の立場に合わせた情報の見せ方・粒度をコントロールできます。

それでは、実際の運用フローを機能追加・バグ修正等を行う基本と締切日のあるプロジェクトに大別して見ていきたいと思います。

フロー (基本)

GitHub Projectsの複数のViewを定義する機能を活用し、「見るべき人」と「フェーズ」に着目して、以下のようなフローを定義しました。

新しいIssueが作成されると、Workflowの機能を使って自動的に「New」のViewにIssueを追加します。Issueは日々大量に作成されるため、すべてに手を付けることはできません。直近で対応する優先度の高いIssueを選んでBacklogへ移動し、優先度順に並び替えます。

ユーザーアクション
GitHub Projects View

Backlogには優先順に並んだIssueが表示されます。 優先度を考慮しながら次回のSprintで対応するIssueにIterationを設定します。 Planningでは、チームメンバー間で課題の理解を深め、見積もりを行います。
Boardにはエンジニアの作業に関連するステータスのレーンだけが表示され、タスクに集中することができるようになりました。

フロー (プロジェクト)

締切日が設定されているプロジェクトの場合、プロダクトマネージャーはマイルストーンを作成して、実現するためのEpicを定義します。Epicは、IssueにEpicラベルが付けられたものです。
次に、作成されたEpicを実現するために、プロダクトマネージャーやリーダーがIssueを作成します。RoadmapではEpicが時系列に表示されるため、プロダクトマネージャーは進捗管理のためにこれを参照します。

TaskslistでIssueの親子関係を表示する

Tableでは「Tracked by」フィールドを使ってグループ化することでIssueの親子関係を表示できます。

BoardのカードではTasklistの進捗が表示されます。

View

Viewの定義の詳細は以下の通りです。

💡 New

新しく追加されたIssueをリストで表示し、BacklogのIssueと比較して対応するIssueを選択する。

  • Layout: Table
  • sort: manual
  • filter: no:status

📖 Backlog

優先度が高い順に並び替え、次のIterationで対応するIssueを選択する。

  • Layout: Table
  • group: Milestone
  • sort: manual
  • filter: status:"Backlog"

💬 Planning

Iterationで対応するIssueについてチームで共通理解・Issue分解・見積りを行う。

  • Layout: Table
  • group: Iteration
  • field sum: Count, Estimate
  • sort: manual

📋 Board

Iterationで対応するIssueをカンバンで表示する。
Statusごとにレーンで表示し、Issueの状態を見える化する。

  • Layout: Board
  • column field: Status
  • filter: -label:Epic -no:status iteration:@current
  • Status:Backlog, In Progress, In Review, Icebox, Done

👑 Roadmap

プロジェクトのIssueをタイムラインで表示して進捗を把握する。

  • Layout: Roadmap
  • group: Milestone
  • date fields: Start Date and End Date
  • sort: Start Date-asc
  • filter: -no:milestone label:Epic

😃 Assigned issue

自分自身にAssignされているIssueを表示する。

  • Layout: Table
  • filter: assignee: @me

最後に

以前は、GitHub Projectsは大規模なプロジェクトには機能不足という印象がありましたが、その不安は払拭されました。GitHub Projectsは十分に実用に耐えられそうであり、ROUTE06社内でも積極的に採用される動きが広がっています。

参考