ツリーマップでタスクの規模を可視化するタスク管理ツールを作ってみた

日々のソフトウェア開発でのタスク管理をちょっとでも面白くなればいいなと、タスクツリーマップというのを作ってみた。
タスクの規模によって表示されるタスクの大きさが変わるので、視覚的にタスクの規模や進捗度合いが把握しやすくなるよ。

https://github.com/volpe28v/TaskTreemap
![image.png](https://qiita-image-store.s3.amazonaws.com/0/4195/4a598176-4fae-a9bc-6ec9-62430636887f.png)

使い方を説明するのにデモのプロジェクトで使う様子をシュミレートしてみるよ。
想定チームメンバの数は比較的小規模で 1〜5人くらいだよ。

### プロジェクト開始
まずは適当な id をつけてページを開くよ。
https://tasktreemap.herokuapp.com/?id=example

<img width="1394" alt="スクリーンショット 2017-10-17 23.06.53.png" src="https://qiita-image-store.s3.amazonaws.com/0/4195/d703d6dd-e774-d39d-ab72-889015b26932.png">

スクラムとかいつものやり方で第１イテレーションのタスクを洗い出すよ。
ページ右側のテキストエリアに洗い出したタスク名をどんどん書いていくよ。

```
トップページを作成する
ユーザ一覧を表示する
ユーザの追加ボタンを追加する
ユーザの編集ボタンを追加する
ユーザの編集画面を表示する
ユーザの削除ボタンを追加する
曲一覧を表示する
曲のコードを表示する
コードの編集画面を表示する
```
<img width="1393" alt="スクリーンショット 2017-10-17 23.07.17.png" src="https://qiita-image-store.s3.amazonaws.com/0/4195/471ed6d4-e5b3-34bb-aadd-610bf90f9c5c.png">

左側にそれぞれのタスクが均等な大きさで表示されたね。
次はタスクの規模を入れていくよ。
プランニングポーカーとかでザクザク決めていこう。
規模はポイントでもいいし、人日とか時間とかでもいいよ。

### 規模の入力
```
トップページを作成する 3 Todo
ユーザ一覧を表示する 2 Todo
ユーザの追加ボタンを追加する 3 Todo
ユーザの編集ボタンを追加する 5 Todo
ユーザの編集画面を表示する 3 Todo
ユーザの削除ボタンを追加する 1 Todo
曲一覧を表示する 3 Todo
曲のコードを表示する 1 Todo
コードの編集画面を表示する 5 Todo
```
<img width="1397" alt="スクリーンショット 2017-10-18 0.26.58.png" src="https://qiita-image-store.s3.amazonaws.com/0/4195/2376bfee-f2ab-0859-0303-3ea02148ce5f.png">

こんな感じかな。ついでにタスクの状態(Todo)を書いておいた。
項目の区切りは「スペース」か「タブ」を使えるよ。タブが一つでも存在すると全てタブ区切りとして扱われるから注意してね。現在の区切りモードは右下の「Delimiter [tab or space]」で確認できるよ。(タブ区切りは主にエクセルからの貼り付け用)

右下にバーンダウンチャートっぽい表示が出て来たね。
バーンダウンチャートの1行目はスプリント数を入れるよ。デフォルトで４って入っているけど、今回は3スプリントでやりたいから 3 に変更するよ。
ただ、バーンダウンチャートを使いたくない場合は無視しちゃってもいいよ。
<img width="466" alt="スクリーンショット 2017-10-17 23.15.00.png" src="https://qiita-image-store.s3.amazonaws.com/0/4195/8fb3ad9c-91aa-1bbf-4225-35e88a25ad20.png">

初期タスクが出揃ったら「Apply to initial plan」を押して規模の初期値を反映するよ。
<img width="465" alt="スクリーンショット 2017-10-17 23.16.44.png" src="https://qiita-image-store.s3.amazonaws.com/0/4195/69f6f6dd-e872-58c8-6c86-2318385cca45.png">

次に初回スプリントでタスクにメンバをアサインするよ。

### タスクへのアサイン
```
トップページを作成する 3 Todo まーちん
ユーザ一覧を表示する 2 Todo ぎぶそん
ユーザの追加ボタンを追加する 3 Todo たかみね
ユーザの編集ボタンを追加する 5 Todo
ユーザの編集画面を表示する 3 Todo
ユーザの削除ボタンを追加する 1 Todo ぎぶそん
曲一覧を表示する 3 Todo
曲のコードを表示する 1 Todo
コードの編集画面を表示する 5 Todo
```
<img width="1394" alt="スクリーンショット 2017-10-17 23.22.49.png" src="https://qiita-image-store.s3.amazonaws.com/0/4195/7e82e3f1-1c12-500e-838e-fdd557fb290f.png">

総規模が26で 3 スプリントだからだいたい 1 スプリントで9消化すれば良さそうなので、一人 3ポイントになるようにアサインしてみたよ。

人ごとにアサインされたタスクが集まっているね。

### スプリント開始
さて、いよいよスプリントを開始するよ。
各々、最初に着手するタスクをダブルクリックして Doing の状態にするよ。
変更はリアルタイムに同期されるから自分にアサインされているタスクの状態をどんどん変更しちゃって大丈夫。
<img width="1396" alt="スクリーンショット 2017-10-17 23.24.35.png" src="https://qiita-image-store.s3.amazonaws.com/0/4195/f81aa532-f791-2355-60ac-97b0ca9ef018.png">

タスクの状態はダブルクリックする度に「Doing → Done → Todo」を循環するよ。
タスクの状態ごとに色が違うので、今誰がどのタスクを着手しているのか一目でわかるね。
ちなみに外部要因などで保留になっちゃったタスクはロングクリックすると Waiting 状態にできるよ。

### 第1スプリント終了
<img width="1394" alt="スクリーンショット 2017-10-17 23.31.47.png" src="https://qiita-image-store.s3.amazonaws.com/0/4195/4b45393c-1423-3654-b373-ac36c78ea838.png">

最初に予定していたタスクはほぼ完了しているね。

スプリントのふりかえりなどして完了したタスクの確認を行ったら、「Apply to 1 sprint」をクリックして第1スプリントの進捗をバーンダウンチャートに反映させるよ。
<img width="466" alt="スクリーンショット 2017-10-17 23.34.26.png" src="https://qiita-image-store.s3.amazonaws.com/0/4195/33672142-26a2-65d8-7816-fce7993d1f12.png">

いい感じのバーンダウンチャートになった。
次に第２スプリントの予定を立てるよ。タスクにメンバをアサインしよう。

上に表示されているメンバ名をタスクにドラッグするとアサインできちゃうよ。
<img width="1395" alt="スクリーンショット 2017-10-17 23.38.52.png" src="https://qiita-image-store.s3.amazonaws.com/0/4195/0c1f4c4c-9fa0-f8f8-2f26-a33e08feaa09.png">

あと、作業中に思いついたタスクをいくつか追加してみたよ。
結構増えたけど終わるかちょっと心配になって来た。

### 第3スプリント終了
<img width="1393" alt="スクリーンショット 2017-10-17 23.46.47.png" src="https://qiita-image-store.s3.amazonaws.com/0/4195/bcb67d95-f5aa-6120-8167-f7ad18704fb4.png">

なんだかんだで第3スプリントまで終わったよ。
さらにタスクが増えたけど、当初の予定は概ねやり遂げられたみたい。

残念ながら終えられなかったタスクは次のイテレーションでやることにしよう。

### まとめ
こんな感じでタスクツリーマップを使うとタスクの規模が大きさで可視化されて、全体の規模感の把握とタスク完了時のやった感を味わえる。
複数スプリントに対応したバーンダウンチャートも連動しているので進捗のやばさに早めに気が付けるかも。
入力データは全てテキスト編集可能なので気軽に編集できる。
なるべくエクセルとか使わずに軽めにタスクの見える化と共有ができる。
タスクごとの作業詳細メモとかは別の仕組みを用意する必要があるかも。
（筆者の現場ではチャットと共有メモに DevHub というツールを使っている。 https://github.com/volpe28v/DevHub)


もしタスクツリーマップに興味があれば heroku のデモアプリでお試し可能です。
https://tasktreemap.herokuapp.com/?id=demo

また、自分でサーバ立ち上げる場合も node.js と mongodb の実行環境を整えれば容易に構築可能。

ここまで読んでくれてありがとうございました。楽しいタスク管理ライフを！