ZenHubのフィルター機能で何を表現するべきか~Epic, Pipeline, Milestone, Labels~
ZenHubは、GitHubのissueを中心としたプロジェクト管理ツールですがその中で、Issueに付加価値を与えたり、操作できる『フィルター機能』と呼ばれるものがいくつかあります。
- Epic
- Estimate
- Pipeline
- Milestone
- Labels
今回は、これらをどのように配置しissueに付加価値をつけることで良いプロセスが生まれるのかを述べていきます。
問題提起
上であげた4つを適切に配置されていないとどうなるでしょうか?
たとえば、見積もりやスプリント、レーンをLabelsで表現してみましょう。
パット見、単体のissueだけでみるとそのissueがどういった状態のものなのかはわかりやすいですが、これが50~100個のissue、複数人で開発しているとなるとプロジェクト管理ツールとして、管理していくのが難しくなってきます。
ここまでいかなくとも、見積もりやスプリントはLabelsで管理している人は多いのではないでしょうか?
もちろん、正解はないのですがZenHubにはそれぞれの役割に適した機能が提供され、 ZenHubを使った最適な開発プロセスが提供されています。
まずは、それぞれの機能がどういったissueのラベリングに適しているか述べていきます。
※ベースとして、開発プロセスはAgileであることを想定しています。
Epic
Epicとは、issueをある大きな括りでまとめられるものです。このEpicの機能は、ストーリーベースのものをこのEpicとしてそのストーリーに紐づくissueを紐づけていくケースが多いです。issueを単体の存在としてみるのではなく、ひとつ抽象度をあげてストーリーとしてそのissueはどのような位置づけなのかを可視化します。
引用 : Using Epics in ZenHub for projects and user stories : Help Center
Epic = issueを抽象的に見る観点を加える。issue単体ではなく、ストーリーとしてそのissueはどのような位置づけなのかを可視化する
Pipeline
Pipelineは、Issueの流れを表すレーンのことです。例えば、Backlog→Doing→Review→Doneなどです。Pipelineは、そのissueが完了するまでのステータスを表します。
自チームでは以下の独自のレーンを採用しています
Pipeline = issueが完了するまでのステータスを管理する
Estimate
Estimateは、issueに対しての見積もりを紐付けられます。
Estimate = issueの見積もりを紐付けられる
Milestone
Milestoneは、一定の期間を区切ってそこにissueを紐付けられます。Scrumでいえば『スプリント』を作成するのにこの機能を利用していきます。
参考 : Create GitHub Milestones across a multi-repo Board : Help Center
Milestone = イテレーションの枠組みをissueの集合体とラベリングさせる機能
Labels
Labelsは、issueに対して、『そのissueはどんなissueか』を表します。例えば、bugなのかenhancement(機能追加)などです。デフォルトだと以下です。いわば、Labelsとはisssueの種類をラベリングする機能です。
ここではチーム独自でカスタマイズ性をつけられるところです。例えば以下です。
・enhantment・・・機能強化・operations・・・運用・定常業務・spike・・・PBIのreadyの定義を整える・bug・・・バグ対応・refactoring・・・既存機能のリファクタリング・wip ・・・まだ作成途中のissue
デフォルトだと以下です。
Labels = issueの種別をラベリングする機能
まとめ
Labelsはissueを種類をラベリングする機能としての側面があるためどんな情報でも紐付けられるように感じてしまいます。ただ、個人的にはLabelsはそのissueがどんな種別のissueかを判別するだけにとどめて、他の付加価値をつけたい場合、ZenHubの専用機能でそれらをつけて上げると良いと思いました。
Epic = issueを抽象的に見る観点を加える。issue単体ではなく、ストーリーとしてそのissueはどのような位置づけなのかを可視化するEstimate = issueの見積もりを紐付けられるPipeline = issueが完了するまでのステータスを管理するMilestone = イテレーションの枠組みをissueの集合体とラベリングさせる機能Labels = issueの種別をラベリングする機能
以上です。
次回は、これらを落とし込んだ開発プロセスの全体像を述べます。
宣伝
ZenHubのコミュニティーを立ち上げましたのでよかったら、Slackのワークスペースだけでもjoinよろしくおねがいします。