👕

Azure Boards でTシャツ見積もりやってみた!~導入手順とチームへの変化~

2024/08/06に公開

こんにちは、Thinkings 技術研究チームの石井です。

Thinkings では、sonar ATS の開発にスクラムを採用しています。過去にもスクラム開発を導入しての振り返りというエントリを公開しています。sonar ATS の開発はいくつかのチームに分かれて行っており、それぞれのチームにあったツールや手段を採用しています。

今回は、私の所属するチームで実際にあった問題とその解決手段として「Tシャツ見積もり」を採用するためにやったこと、チームがどのように変化したかについて説明します。

チームについて

まずは私の所属する技術研究チームについて軽く触れておきます。チームの役割や特性などがこの後の説明の土台になります。

技術研究チームとは?

技術研究チームとは製品開発における技術的負債を解消することを目的に設立されました。sonar ATS は10年以上の歴史があり、その中で多くの技術的負債が蓄積されています。それらの問題を解消して、エンジニアメンバーがより速くより品質の高い製品を作れるようにすることが最重要ミッションです。

多くの技術的負債を解消するために、チームメンバーが一人でタスクを進めることが多いです。

チームで抱えていた問題点

プロダクト バックログ アイテム(以下、PBI)にやるべきことをまとめて管理していましたが、いつ終わるのか、全体でどの程度の進捗率か分かりづらいという問題がありました。前述の通り、チームメンバーが一人でタスクを進めることが多いため、他の人が何をやっていていつ頃終わるのか分かりづらくなっていました。

スクラムの導入でスプリントゴールやプランニングで共有される情報が増えたため、目的や何をやっているかについてはある程度解消しました。しかし、いつ頃終わるかについてはスクラムだけでは解消されませんでした。

もう一つの問題として、PBI の工数を見積もる際に人によって精度に差異が出ることです。ほかメンバーの作業の重みが自分と比較してどの程度なのか、わからないことも影響していました。スプリントが進むことで不明点が明確になり、見積もり精度は上がりますが、序盤の段階では先のことが見えないため問題も検出しづらい状況になっていました。

チームで出した解決策

問題点についてレトロスペクティブで話し合った結果、いつまで完了するかを概算で出してみようということになりました。序盤のスプリントでは、不明点が多いため見積もり精度が低くなることは避けられませんが、概算レベルでも良いので大筋の着地点は明らかにしたい、ということが目的です。

概算見積もりを行う上でいくつか手段はありますが、今回は特にメジャーなTシャツ見積もりをやってみることにしました。選定理由はいくつかありますが、特にネット上に情報が多いという点を重視しました。

サービスに落とし込みたい

Tシャツ見積もりを実施するうえで、もう一つ問題がありました。それは Azure Boards でTシャツ見積もりができるかどうかという点です。

技術研究チームではプロダクト管理に Azure DevOps の Azure Boards を使用しています。当時、Azure Boards ではスクラムの各種イベントを共有したり、Features や PBI を管理するくらいしか利用できていませんでした。Azure Boards では、Tシャツ見積もりという入力項目が無いため、カスタマイズして利用する必要があります。

今回は折角見積もりもするので、ベロシティも出してみたいという要件も出てきました。技術研究チームでスクラムを始める際に「まずはスクラムに慣れる」を目標としていたため、スクラムガイドに記載されている最低限の内容のみ実践していました。そのためベロシティの算出はやっていませんでした。

次章以降では、Azure Boards をカスタマイズしてTシャツ見積もりを実施し、進捗状況の確認やベロシティの算出もやってみます。

Azure DevOps の概要

Azure DevOps とは、Microsoft が提供するソフトウェア開発のためのプラットフォームです。Git ホスティングサービスの Azure Repos、プロジェクト管理の Azure Boards、CI/CD の Azure Pipelines など、ソフトウェア開発を行うために必要なひと通りの機能を兼ね備えています。類似サービスに GitHub などがあります。
https://learn.microsoft.com/ja-jp/azure/devops/user-guide/what-is-azure-devops?view=azure-devops

Azure DevOps に含まれる Azure Boards はアジャイルに特化していて、スクラムを始める際も必要な機能がある程度用意されています。私自身、過去に利用した経験があったこともあり、Azure DevOps を使用しています。

Azure Boards でTシャツ見積もりをやってみる

Azure Boards はアジャイルに特化していますが、Tシャツ見積もりは標準ではできません。そのため、まずはTシャツ見積もりができるようにカスタマイズする必要があります。ここでは、Azure Boards でTシャツ見積もりができる状態にして、進捗状況やベロシティを共有できる状態にするための手順について説明します。

Tシャツ見積もりを実施するための設定

Azure Boards でTシャツ見積もりを実施するための設定手順について説明します。ここでは予めTシャツ見積もりに必要なサイズは、チームで話し合って決定しているものとします。Tシャツ見積もりについてご存じない方は以下のページを参照してください。
https://asana.com/ja/resources/t-shirt-sizing

次の手順で Azure Boards のカスタマイズを行います。基本的な流れはカスタマイズしたプロセスを作って、そこに"Tシャツ見積もり"用の入力と計算用フィールドを追加します。

  1. カスタムプロセスを作る
  2. Tシャツ見積もり用フィールドを追加する
  3. ルールを設定する

カスタムプロセスを作る

まずはカスタムプロセスを作ります。Azure Boards では、複数のプロセスが存在しています。必要に応じて適切なプロセスを選択するのが最初のステップですが、今回のように新しくフィールドを追加する場合、カスタマイズしたプロセスを作ることもできます。

使用しているプロセスはScrumだったので、このプロセスを継承したScrum Customを作ります。作成済みのProjectもこのScrum Customを使用するように設定します。

Tシャツ見積もり用フィールドを追加する

Scrum CustomプロセスにTシャツ見積もりのフィールドを追加します。今回追加するのは「入力用」と「計算用」の2つです。

見積もりサイズは人間が入力するため、S, M, L などのサイズ標記にします。しかし、ベロシティを算出するにはアルファベット標記では計算できないため、数値に変換する必要があります。それぞれのフィールドは次のように定義します。

  • 入力用: Tシャツ見積もり
  • 計算用: Tシャツサイズ

カスタムフィールドを追加する手順は以下ページを参考にします。
https://learn.microsoft.com/ja-jp/azure/devops/organizations/settings/work/add-custom-field?view=azure-devops

設定した結果は次のようになりました。

フィールドは選択肢が出るようにPicklist itemsにしています。ただ、これだとアルファベット標記では L, M, S と昇順に表示されるため、プリフィックスに数値を設定しています。

計算用フィールドは入力用フィールドが選択されると自動入力されるようにカスタムルールで設定します。設定した値を間違って操作されると困るので、画面上からは非表示になるように設定しました。

ルールを設定する

Tシャツ見積もり(入力用フィールド)を変更するとTシャツサイズ(計算用フィールド)が自動更新されるように設定します。こうすることで見積もりさえしておけば、後は自動的に進捗状況やベロシティを計算できるようになります。

なお、Azure Boards でカスタムルールを設定する方法は以下ページに記載されています。これと同じ手順で入力用と計算用を設定します。
https://learn.microsoft.com/ja-jp/azure/devops/organizations/settings/work/rule-samples?view=azure-devops&tabs=inheritance#set-a-dependent-field-value

今回は以下のように設定してみました。Tシャツ見積もりの設定値ごとにサイズの値を設定します。サイズの値も事前にチームで認識合わせしておく必要があります。

入力してみる

実際に使用する場合、Tシャツ見積もりフィールドを設定することになります。Sprints 画面で PBI を表示すると次のようになります。Tシャツサイズは非表示にしているので、ここでは見れません。

Azure Boards では、Sprints や Boards 画面で Work Items に表示するフィールドを変更できます。プランニングやデイリースクラムで全体の PBI を確認したい場合にTシャツ見積もりの設定値を表示しても良さそうです。

進捗状況やベロシティの確認

設定ができたので、次は可視化する手順に進みます。当初の目的であった進捗状況とベロシティを可視化する手順について説明します。

進捗状況を確認できるようにする

進捗状況を確認するには、以下ページにあるロールアップの機能を使用します。基本的に以下ページの手順を実施するだけです。
https://learn.microsoft.com/ja-jp/azure/devops/boards/backlogs/display-rollup?view=azure-devops&tabs=agile-process

まずは Backlogs 画面でColumn optionsメニューを開きます。Configure custom rollupメニューを選択し、Column Metricを以下のようにSum - Tシャツサイズを設定して OK ボタンを押します。

後は Features に切り替えて表示することで以下のように進捗状況が可視化できます。Configure custom rollupメニューでSelect rollup columnRollup as Totalとすることで、Tシャツサイズの合計値も集計できます。

後はスプリントを進めていけば、自動的に進捗状況が更新されるようになります。

ベロシティを可視化する

ベロシティを可視化するには、以下ページにある機能を使用します。今回はメンバーの誰でもいつでも確認しやすいように Dashboards にウィジェットを配置する方法を採用します。
https://learn.microsoft.com/ja-jp/azure/devops/report/dashboards/team-velocity?view=azure-devops&tabs=widget

Dashboards 画面でEditボタンを押して、Velocityを選択します。

追加されたウィジェットの設定ボタンを押して、Configurationを次のように変更します。Titleは任意で良いですが、Velocityは"Sum of Tシャツサイズ"とします。

これでウィジェットが表示されるようになりました。右上にある数値がTシャツサイズで計算されたベロシティの値です。デイリースクラムやレトロスペクティブなどで、この値を確認しつつスクラムを進めることができます。

ベロシティもスプリントを進めていけば自動更新されます。なお、このウィジェットひとつでプランニング時点のTシャツサイズの合計(水色部分)やスプリント終了時点の合計(緑色部分)も確認できます。便利ですね。

チームへの影響

実際にここまでの手順を実施してチーム内でどのような変化があったか振り返ってみました。その結果、チーム内では次のようなフィードバックがありました。

✅良かった

  • もともとは時間単位で工数を見積もる必要があり、時間もかかるし精度もまちまちだったが、概算で見積もりできるので楽になった。また、意外と見積もりと実績のズレがない。
  • プランニング時点でベロシティとそのスプリントのTシャツサイズ合計が比較できるので、計画が完了できそうかどうか判断できるようになった。また、デイリースクラムでベロシティのウィジェットを見ることで、必要なら PBI やスプリントゴールの調整もできるようになった。
  • 自分が終わらせられるサイズで PBI を作成できるようになった。

❗改善したい

  • 自分が PBI に設定した見積もりと他の人の設定した見積もりが本当に一致しているかわからないことがある。PBI によってはもう少し調整が必要そうに感じることもある。

全体的に良くなった感覚がありますが、まだ課題も残っていそうです。課題が検知できているということはスクラムとして機能しているということですね!

今回はTシャツ見積もりを題材にしましたが、他の見積もり手法や今後新たに見積もり手法が生まれたとしても、今回の応用で進捗状況やベロシティを可視化することができます。ぜひ、参考にしてみてください!

Thinkingsテックブログ

Discussion