KYな雑記帳

個人的なメモ帳

Github Projectsでissueの可視化を試してみる

また可視化の話です。
だってまずはチームを把握するために可視化する必要があるから…

チームの状態を把握するためには、どんなタスクが、どれくらい、どの状況で残っているのか?を知る必要があります。
今まではJIRAのようなタスク管理ツールを使っていたのですが、現在のチームでは社外の人とも一緒に開発しているのもあって、Githubのissueでのタスク管理になっていました。
issueの一覧だけだと、そのissueが自分たちのチームに関係あるissueなのかどうか、気がついたらissueが閉じられていてどの期間で終了したのか分かりにくいと思います。
だからと言って別のタスク管理ツールを使うと、そのツールとGithubで二重管理になってしまうので良くないです。

調べてみると、GithubにはProjectsというタスク管理機能がある事を知ったので使って見ることにしました。
Github ProjectsはGithubが提供しているカンバン機能です。

カンバンとは?

カンバンとはタスク管理の方法の一つで、誰がどんなタスクをどの状態で持っているか?を一覧できるので、タスク進捗の可視化に役立ちます。
元々はトヨタが開発した生産管理システムのことらしいです。(この記事を書くために調べて初めて知りました)

カンバンでは、タスクなどをカード化してリストと呼ばれる縦の列に入れます。リストは自由に作れます。
例えば、「ToDo」「Doing」「Done」と作業工程に分けたり、これらに「Review」や「Pending」を追加したり。

カンバン方式のタスク管理ツールとしては、TrelloやJIRAやRedmineなどがあります。

カンバンのメリット

カンバンのメリットしてプロジェクトの状態がすぐに分かる利便性があります。
誰がどんなタスクを抱えているか、タスクがどれくらい積まれているのか、タスクがどのくらい終わっているか、という状態がぱっと見て一目で分かります。
さらに、カードを見ることでタスクの重複や、定期的に見ることで遅れているタスクや、カードを並び替えることで優先度などがひと目でみれるようになります。

Github Projectsを使ってみる

という感じでGithub Projectsで提供されているカンバン機能が、自分がやりたい事(チームに関係あるタスクの一覧と進行状況の把握)に適しているので、Github Projectsを使ってみることにしました。

今回この記事では、会社で実際に使っているものではなく、自分のアカウントでRepositoryやProjectsを作って書いていきます。

Github Projectsの作り方

Projectsを作りたいGithubのRepositoryに移動します。
タブの中に「Projects」というのがあるので選択します。
すると、現在動いているProjectsが一覧で表示されます。
今回は新しいProjectsを作ってみます。
「New Project」という緑色のボタンを押すと以下の画像のように表示されます。

f:id:QBMK_IQU:20200116124949p:plain

  • Project board name : 名前です
  • Description (optional) : 必要ならば説明を記入できます
  • Project template : テンプレートです
    • Basic kanban : 「To do」「In progress 」「Done」のリストが最初から追加されています
    • Automated kanban : 「To do」「In progress 」「Done」のリストが最初から追加されており、カードが自動でリストを移動します
    • Automated kanban with review : 「To do」「In progress 」「Done」のリストが最初から追加されており、カードが自動でリストを移動します。プルリクエストのレビューもトリガーにして移動します。
    • Bug triage : 「To do」「High priority」「Low priority」「Closed」が最初から追加されており、バグの優先順位をつけれます。

今回はissueをカンバンで管理したいので、「Automated kanban」を使います。
作られたカンバンは以下のようになっています。

f:id:QBMK_IQU:20200116140531p:plain

Projectにissueを追加する

Projectにissueを追加する方法は2つあります。
1つがProject上で操作してissueをカード化する方法、もう1つはissueを作成時にProjectに追加する方法です。

Project上でissueをカード化する

Projectを開いて「Add cards」を押すと、issueやPullrequestの一覧が出てきます。
そこから好きなものをドラッグ・アンド・ドロップで、好きなリストに移動することで、Projectに追加できます。

f:id:QBMK_IQU:20200116143045p:plain

issueを作成時にProjectに追加する

issueを作る時に、右側で「Projects」を設定できます。
指定したProjectの「TODO」に追加されます。

f:id:QBMK_IQU:20200116143510p:plain

カードを別のリストに移動する

カードを別のリストに移動する方法は2つあります。
1つがProject上で操作してカードを別のリストに移動する方法、もう1つは自動で移動するトリガーを編集する方法です。

Project上で操作してカードを別のリストに移動する

Projectを開いて、対象のカードをドラッグ・アンド・ドロップで移動したいカードを別のリストに持っていくだけです。

移動のトリガーを編集する

「Manage automation」を編集します。「Manage automation」は各リストの右上の「...」をクリックすると表示されます。
Projectを作るときのtemplateで「Automated 〜」を選択すると、デフォルトで「Manage automation」が設定されています。

Github Projectsを運用してみる

以降は実際にしばらくの間Projectsを使ってみた感想とかです。

新しく追加されたissueを把握するには?

issueを作る時にProjectを指定するとそのProject上からでも確認できるのですが、自分が把握するために試験的に使っていた事もあって、メンバーにはお願いしていませんでした。
なので、自分でissueをProjectに追加していく必要があります。
しかし、Projectを見ることに満足して新しいissueのチェックを忘れる事もありそうです。
そこで自分の場合はブックマークしているプロジェクトへのリンクを開いたら、Add cardの画面が開くようにしました。
その方法は簡単でブックマークしているProjectのリンクに「?add_cards_query=is%3Aopen」をつけるだけです。
例えば、「https://github.com/XXX/XXX/projects/X?add_cards_query=is%3Aopen」みたいな。
Projectを見ようと思ってURLを開いたら、issueやPullrequestのリストが並んでいて、新しいissueは目につくので、どんなissueが新しく追加されたのか、把握しやすくなります。

In progress に自動で移動してくれない

Manage automationを確認すると分かりますが、issueが In progress に移動するトリガーは、closeされてたissueがopenした時です。
issueの状態に「進行中」が分かるものもありませんしね。
こればかりはラベルで「WIP」をつけるとか、朝会などで把握して自分で動かすとか、地道な努力になると思います。
いい方法があったら教えて下さい。

1つのissueが複数のProjectsに存在する場合

複数のProjectに同じissueを入れることができました。
また、あるProjectでそのカードの状態を更新しても、別のProjectではリストの移動はありません。
ちなみに、Projectを閉じても別のProjectにあるカードには影響ありませんでした。
スプリントごとにProjectを作ってタスクの状態を把握したい場合でも、Projects間でissueを移動するのではなく、新しいProjectに対象のissueを突っ込んで、古いProjectは閉じて以降は新しいProjectを使っていけば良さそうです。

まぁ、まだ複数のProjectsは使ってないんですけどね。
自分は評価期間でProjectを変えようと思っているので、次の評価期間になったら新しいProjectを試してみる予定です。

f:id:QBMK_IQU:20200116165510p:plain

まとめ・感想

1ヶ月も経っていませんが「十分使えるレベル」だなというのが感想です。
issueの管理なのでTODOからIn progressに自動で移動してくれず、何が作業中なのかは朝会などで自分で把握してカードを更新する必要がありますが、それさえ気をつけていればどのissueがオープンでどのissueが終了したのかは一目瞭然なのでタスクの進行状況がわかりやすくなりました。
欲を言えばタスクの期限がProject上で分かればさらに嬉しいです。

今回はチームのタスクの状態の可視化で使いましたが、1つのissueは複数のProjectに存在できるので、個人用のProjectを作って一定期間内で自分がやったissue・タスクの可視化とかにも使えそうです。評価の時期になると自己評価を書くためにその期間内で自分がやったタスクを見返すことがありますから、そういった場合でも便利そうかなと思いました。