🔎

trocco+JIRAで完成の定義を記入していない課題一覧をBigQueryに同期してデータポータルで可視化する

2022/03/07に公開

モチベーション

スクラムでは完成の定義とはプロダクトバックログアイテムが品質基準を満たしたインクリメントであることを示す記述です。

リファインメント時にプロダクトオーナーと開発者が合意を取った上で記入してから、スプリントで着手するのが理想ですが、記入が完了していないまま着手に取り掛かってしまっている課題が無いかを確認したいことがありました。

今回はそのためにやったことを残します。

対象読者

  • 既にtroccoを導入している方

最終イメージ


こんな感じでアクティブスプリント内で完成の定義の記入が終わっていない課題の内容を可視化することができます。

カスタムフィールドのIDを確認



カスタムフィールドが用意できたら、タイトルから詳細を編集をクリックします。

https://xxxxx.atlassian.net/secure/admin/EditCustomField!default.jspa?id=[ID]

すると上記のようなURLになりますが、idパラメータがカスタムフィールドのIDになります。
この値をtrocco側で利用するのでメモしておきます。

JQLでアクティブスプリントの課題一覧を同期

troccoではJQLを使って課題の絞り込みを行うことができます。

これが非常に便利で、他にAirbyteも検討したのですが、JQLに対応していなかった(2022.03.07現在)ためtroccoを利用しています。

sprint in openSprints() 

上記のようにするとアクティブスプリント内の課題のみに絞り込むことができます。

JQLで完成の定義を記入済の課題一覧を同期

sprint in openSprints() AND cf[コピーしたID] is NOT NULL

先程コピーしたカスタムフィールドのIDを使って、完成の定義を記入済の課題一覧を絞り込みします。
IDの部分は適時置き換えてください。

直接記入していない課題一覧を抽出しても良いのですが、BigQueryに転送する時に対象件数が0件だとエラーになってしまうので、記入済の課題を全件から引く形で実現しています。

スケジュールと失敗時の通知設定

スケジュールと失敗時の通知設定は行っておきましょう。

データポータルのカスタムクエリで可視化

こんな感じのSQLで記入が完了していない課題一覧を抽出できます。

SELECT
  summary, # タイトル
  key, # URL用の課題ID
  json_value(assignee, '$.displayName') AS displayName # 担当者
FROM
  `test.active_sprint_tasks`
WHERE
  id NOT IN(
  SELECT
    id,
  FROM
    `test.active_sprint_tasks_seted_dod`)

課題の情報はJSONで渡されてくるので、json_valueを使って文字列を取得しています。

従来のjson_extract_XXXの関数はBigQueryではサポートされていますが、今度無くなる可能性もあるので、標準準拠のこちらの関数を使うようにしましょう。
https://cloud.google.com/bigquery/docs/reference/standard-sql/json_functions#standard_json_extraction_functions_recommended

さいごに

JQLを使えると汎用性が高くて便利ですね。BigQueryではJSONも扱えるので、これも使いやすかったです。

今回はアクティブスプリント内で完成の定義が終わっていない課題を抽出しましたが、
常に実装に着手できるプロダクトバックログアイテムを用意するようにしていきたいですね。

参考資料

https://qiita.com/hiro_koba_jp/items/5010b182a5c34f1f7186

Discussion