
【Jira:自動化】ストーリーやタスクの数値フィールドを集計して親エピックに設定する
本noteは、Jiraの自動化についての説明です。
Jiraでプロジェクト管理をしていると、ストーリーやタスクに設定した数値フィールドの集計結果を、親エピックの数値フィールドに表示したいケースがでてきます。作業時間やレビュー指摘数などですね。それをJiraの自動化機能で実現する方法について説明します。
※このやり方はベストプラクティスではないかもしれませんが、このやり方で一応やりたいことの実現はできます。他にやり方がわからない人は試してみてください。
■変更履歴
2024.07.14 新規公開
今回Jiraの自動化でやりたいこと

課題の関係は以下となります。
親:エピック1
子:ストーリー1、ストーリー2、タスク1、タスク2
ストーリーとタスクは並列、それぞれの親にエピック1が設定されています。ストーリー1やタスク1の数値フィールドを更新したとき、エピック1の子であるストーリー1、ストーリー2、タスク1、タスク2の数値フィールドを合計してエピック1の数値フィールドに設定する、というのをJiraの自動化機能を使って実現します。
前提とする価格プラン

Jiraには4つの価格プランが設定されており、使える機能にも差があります。今回説明する自動化のやり方は、僕がFreeプランで試して実行できているものなので、基本的にどのプランでも使用可能だと思います。
前提とするプロジェクトタイプ

Jiraでプロジェクトを新規作成する際に、プロジェクトタイプを選択する画面がでてきます。「チーム管理対象プロジェクト」か「企業管理対象プロジェクト」かの2択で、各種設定や表示のスコープに違いがでるようです。今回説明する自動化のやり方は、チーム管理対象プロジェクトで試して実行できたやり方ですが、カスタムフィールドの設定さえできてしまえば自動化のやり方は企業管理対象プロジェクトでも同じです。
自動化の設定手順
設定の流れはこちらになります。
課題タイプに集計対象となる数値フィールドを新設
自動化の設定
自動化のテスト
それでは1つずつやっていきましょう。
1.課題タイプに集計対象となる数値フィールドを新設
①プロジェクト設定画面へ遷移
使用するテンプレートによって「プロジェクト設定」のリンク位置が少し変わるみたいですが、ソフトウェアプロジェクトの場合は、画面左側のナビゲーションメニューの一番下にあります。

②プロジェクト設定メニューから「課題タイプ」を選択
「課題タイプ」を選択するとこんな画面が表示されます。エピックを選択します。

③画面右側の「フィールドを作成」エリアから「番号」を選択
「番号」という日本語に違和感がありますが、これが数値フィールドになります。小数の入力も可能です。

④Field Nameに「作業時間_分」を設定
表示する説明文も「作業時間を分単位で入力する」などと説明を入力して、完了したら「変更を保存」ボタンを押します。これでエピックに「作業時間_分」が設定されました。

⑤課題タイプ「ストーリー」「タスク」にも「作業時間_分」を追加
画面右側のフィールドエリアを下のほうまでスクロールしていくと、先ほどエピックに追加した「作業時間_分」が提案されたフィールドに並んでいます。これをドラッグしてストーリーに追加します

要約の下に「作業時間_分」を追加しました。追加したら「変更を保存」を押します。課題タイプ「タスク」にも同様の手順で「作業時間_分」を追加したら準備は完了です。

⑥プロジェクトに戻り「作業時間_分」が追加されていることを確認
プロジェクトに戻りエピック、ストーリー、タスクの各画面に「作業時間_分」が追加されており、入力できるようになっていることを確認します。

2.自動化の設定
①プロジェクト設定画面の「自動化」へ移動
はじめて自動化の設定を行う場合は、このような画面が表示されます。「ルールの作成」を押して、新規で自動化ルールの作成を行います。

②トリガーの設定
最初にこの自動化ルールが動くためのトリガーとなるアクションを設定します。今回やりたいのは『ストーリー、タスクの作業時間_分が更新されたら、集計して親エピックの作業時間_分に設定する』ということなので、トリガーは「フィールド値の変更時」で、変化を監視するためのフィールドに「作業時間_分」を設定します。プルダウンリストに表示されない場合は、直接入力すると表示されます。入力できたら「次へ」を押します。

③if条件を追加
次のコンポーネントを追加する画面になるので、「if条件を追加」を選択

「課題フィールドの条件」を選択し、「課題タイプがストーリー、タスクだった場合」を条件として追加するようにします。この条件を追加していない場合、エピックやその他課題タイプの「作業時間_分」を変更したときもこの自動化ルールが動いてしまいます。設定したら「次へ」を選択。

④FOR EACHブランチを追加
次にコンポーネントの追加から「FOR EACH:ブランチを追加」を選択します。

どのようなブランチを追加するかの選択肢が出ますので、「ルール/関連する課題を分割する」を選択します。

『ストーリー、タスクの作業時間_分が更新されたら、集計して親エピックの作業時間_分に設定する』が今回やりたいことですが、このブランチを追加することで、トリガーとなった課題とは別の課題に対して操作ができるようになります。今回のケースだと、トリガーとなるのはストーリー・タスクですが、集計結果を反映したいのは親であるエピックです。そのため、ブランチを追加して、親であるエピックに対して値を更新できる設定をいれます。

関連課題のタイプから「親」を選択して、「次へ」を押します。

⑤集計対象となる課題を検索
ブランチができて関連課題に「親」が設定されたら、このブランに追加のアクションを設定します。右側の「コンポーネントの追加」から「その場合:アクションを追加する」を選択します。

追加するアクションのリストから「課題を検索」を選択し、集計対象となるストーリー・タスクを検索する条件をJQLで入力します。具体的には「parent = {{issue.key}}」と入力します。今は「親」のブランチ側にいますので「{{issue.key}}」は親のキー、つまりエピックのキーを意味しています。「parent = {{issue.key}}」の条件で検索できるのは、トリガーとなったストーリー・タスクと親が同じ(エピックが同じ)課題で、検索した結果は「{{lookupIssues}}」という名前のリストに設定してくれます。ここまでできたら「次へ」を押します。

⑥「作業時間_分」を集計してエピックに設定
これが自動化設定の最後のステップです。「コンポーネントを追加」からアクションを追加し、「課題の編集」を選択します。

親であるエピックの「作業時間_分」に集計した結果を設定します。設定するフィールドから「作業時間_分」を選択し、設定値として「{{lookupIssues.作業時間_分.sum}}」を入力します。lookupIssuesというのは1つのアクションで検索した課題が入っているリストです。このリストに入っているストーリー・タスクの作業時間_分を合計した結果というのが、この記載方法で取得できます。入力できたら「次へ」を押します。

なお、この記載方法はJiraのスマート値(スマートバリュー)という記載方法らしく、詳細は公式サイトの説明をご参照ください。
⑦作成した自動化ルールに名前を付けて保存
これで設定は完了です。「ルールをオンにする」を押して、この自動化ルールの名前を設定します。

「作業時間の集計」と名前をつけて、「ルールをオンにする」を押します。これでこの自動化ルールがオンになりました。

3.自動化のテスト
それでは作成したルールがうまく動くかテストしてみましょう。

エピック1を開いて、「作業時間_分」に何も設定されていないことを確認します。

エピック1を親としているタスク1を開き、「作業時間_分」に「30」と入力してみます。

入力して数秒待ち、タスク1の画面の右下にあるAutomationをリフレッシュすると、先ほど設定した自動化ルールが動いた履歴が表示されます。

エピック1を表示してみると、先ほどは何も設定されていなかった「作業時間_分」に30と設定されています。

念のためストーリー1の「作業時間_分」に50と入力して数秒待つと、エピック1の「作業時間_分」は80に更新されていました。

まとめ
作業時間を集計する自動化ルールについては、これで作成することができました。今回の方法を応用して、
・途中のif条件を変更する
・課題の検索条件を変更する
・設定するスマート値を変更する
などを組合わせると、様々なスコープでいろいろな集計が可能となりますので、いろいろ試してみてください。
いいなと思ったら応援しよう!
