JMWEアドオンを使って、バーンダウンチャートを見やすくした話

# はじめに
私が属するアジャイル開発のチームでは、進捗管理に「バーンダウンチャート」を使っています。

管理する上で、
「作業は進んでるはずなのに、チャートに変化がなくて進捗がよくわからない！」
「チャートを見積・実績時間で見ようとしているけど、時間の入力は手間がかかる！」
など思ったことはないでしょうか？

今回は、そんな悩みを**JMWEアドオンを使って解決した**事例を紹介します。

# JMWEアドオンとは？
「Jira Misc Workflow Extensions」の略で、アトラシアン公式の有償アドオンです。
名前の通り、JIRAのワークフロー機能を拡張してくれます。

# 問題となっていたこと
### バーンダウンチャートを見ても、進捗がよくわからない・・・
作業はチケットごとに分け、チケット毎に見積を行い、「ストーリーポイント」を割り振ります。
バーンダウンチャートでは、この「ストーリーポイント」の消化状況を見て進捗が遅れているかどうかを確認していました。

しかし、**チケットが完了するまでチャートのグラフに変化がない**ため、
グラフを見ても「・・・これって、進んでるの？遅れてるの？」という判断ができない状態でした。

<img width="780" alt="01_burndownchart_storypoint.png" src="https://qiita-image-store.s3.amazonaws.com/0/238995/79bd76ff-e95e-2e17-7c0a-5adbeba7a36c.png">

### 「ストーリーポイント」以外でチャートを見る方法はないか？
数値項目のカスタムフィールドを作成すれば、その項目を「バーンダウンチャート」の指標として扱うことができます。
ただ・・・、新たに項目に、チケットを移動させるたびに何か値を設定するような運用は、ものすごく手間がかかるため現実的ではありません。

また、見積と実績の時間を入力した上で、それをバーンダウンチャートで見る方法もあります。
この方法は細かく状況を把握するには適していますが、見積時間と実績時間をしっかりと入力しなければいけないため、
多少なりとも手間ですし、入力し忘れに気をつける必要があるなど、開発者への負担かなと思います。。。

### もっと簡単で有用な方法はないか？
目的は、「作業の進捗が開発の途中経過の段階でわかるようにすること」なので、
チケットのステータスが変わるごとに、バーンダウンチャートが変化させることができれば良いはず・・・。

そこで、新たに**「残ストーリーポイント」**というカスタムフィールドを作成し、その項目に**計算式で値を埋める**ことが出来ないか、試して見ました。

（↓選択肢）
<img width="162" alt="08_burndownchart_selecting.png" src="https://qiita-image-store.s3.amazonaws.com/0/238995/4563b038-b14a-096b-18a5-a8660a67b529.png">

例えば、以下のような感じです。
例）
　　＜ワークフロー＞
　　[To Do] → [In Progress] → [In Review] → [Test] → [Done]

　　ストーリーポイントが5ptの作業のステータスを「In Review」に変更した場合、
　　  5pt * 50% = 2.5pt
　　として、残ストーリーポイント項目に「2.5」をセットする。

### ワークフローのトランジションの「事後操作」
JIRAのワークフローでは、チケットの移動（トランジション）を行った後の操作、で様々な処理を行うことができます。（事後操作）
JIRAの標準の設定方法でも、「事後操作」でチケットの値を更新するなどの操作はできます。
ただし、今回やりたいことは、「ストーリーポイントに対する掛け算」のため、**計算式を書く**必要があります。
この場合、JIRA標準の方法では実現ができませんでした。
そこで、JMWEアドオンの出番です。

# JMWEアドオンを使う
## 「事後操作」で、計算式の結果をセットする
ワークフローのトランジションの「事後操作」として、計算式をセットするようにします。

### 手順
1. ワークフロー画面でトランジションを選択した状態で、「事後操作」を選びます。
<img width="1183" alt="02_workflow.png" src="https://qiita-image-store.s3.amazonaws.com/0/238995/0d91502f-e6d6-39d0-d69f-95905bbc65e7.png">

2. トランジションの画面で「事後操作を追加」を選びます。
<img width="1192" alt="03_workflow_transition_setting_view_before.png" src="https://qiita-image-store.s3.amazonaws.com/0/238995/d8efd6aa-1054-7cef-2558-eefc6ae72841.png">

3. 「Set field value (JMWE add-on)」を選びます。
<img width="863" alt="04_workflow_transition_setting_selecting.png" src="https://qiita-image-store.s3.amazonaws.com/0/238995/9ee0e21b-5b4c-e675-fe08-1a8386ab07ca.png">

4. Fieldに「残ストーリーポイント」を選択し、Value欄に計算式を書きます。
例: {{issue.value["Story Point"] * 0.5}}

5. 1〜4の作業を、すべてのトランジションに設定します。

## 設定した後の状態
こうなります！
<img width="1216" alt="setting_after.png" src="https://qiita-image-store.s3.amazonaws.com/0/238995/c02663f4-22ea-0ab8-3e67-bf40283af797.png">


## 設定後・・・
スプリントを開始して、作業を開始しましょう。
チケットのステータスを移動させると、残ストーリーポイント項目の値が自動で変わってくれます。

# 「残ストーリーポイント」でバーンダウンチャートを見てみる
運用開始してから数日経った時点で、**残ストーリーポイントを指標としたバーンダウンチャート**はこんな感じになりました。
<img width="776" alt="07_burndownchart_remaining_story_points.png" src="https://qiita-image-store.s3.amazonaws.com/0/238995/95cdbe39-71e3-f30d-14a4-c21ff96adcd6.png">

**劇的に見やすくなりました！！**

# 注意点
スプリントの途中でストーリーポイントを変更した場合、**残ストーリーポイントの値が変わってくれません**ので、
手動で値を変更する必要があります。
ただし、スプリントの途中でストーリーポイントを変更するというのは、そもそもやらない方が良いことなので、イレギュラーケースとして手動で変更するのは致し方ないのかなと思います。

以上