Azure DevOps Boards（ボード） TeamとIteration(Sprint)とWork Itemの扱い方をざっくりと

Azure DevOps はプロジェクトを推進するための便利なサービスです。
今回は仕事を推進する上でAzure DevOps "Boards(ボード)"の使い方をざっくりと紹介したいと思います。
ここに記載されていることがベストプラクティスだとは言いません。
とはいえ、"叩かれ台" があった方が良いかと思いましたので書いてみます。
プロジェクトのタイプは"Agile"をベースにしています。
プロジェクトのタイプについてはこちら"[Azure DevOps Boards(ボード)で扱うプロセスには種類がある](https://qiita.com/mstakaha1113/items/2c857e85ed6203d93028)"をご確認ください。

# 管理の軸は大きく３つ："作業"，"時間"，"人(チーム)"
プロジェクトをマネジメントする上で必要なものは何でしょうか？
人、モノ、金、時間、気合いと根性、鈍感力、体力、キレイなものも若干気分が滅入るものも含めて、経験や立場によって様々あると思います。

Azure DevOpsでプロジェクトを管理する場合、最初に３つの軸があるとお考え下さい。
それでは３つを各々見ていきましょう。

## 作業 - Work Item
作業は、価値を提供するために必要なものです。Azure DevOpsでは"Work Item"と表現されています。
"Work Item"は、"どんなサービスを実現したいのか" というようなものから、"〇〇画面のデザイン" というようなものまで、粒度は様々あります。
もう少し細かい説明はこちら"[Azure DevOps Boards(ボード)の超概要](https://qiita.com/mstakaha1113/items/44458046d5a8568559b5)"をご確認ください。

Work Itemは最初、漠然とWork Itemです。
誰が実施するかも決まっていませんし、いつ実施するのかも決まっていません。そもそもそういう枠で語らないものも存在しています。
ウォーターフォール開発で言えば、WBSみたいなものでしょうか。

## 時間 - Iteration(Sprint)
時間は、作業を実施する期間です。Azure DevOpsでは"Iteration(Sprint)"と表現されています。
（アジャイル開発ではIteration、Scrum開発ではSprint、ここではIterationでいきます）
"Iteration"は通常2～4週間単位の作業期間を指し、作業はこのIterationごとに完成させていきます。
"完成"は文字通り完成です。どこかの設計工程が終わるとかではなく、提供サービス全体としての完全不完全は別にして、何らかの機能をサービスインできる状態にすることです。
設計から製造、テスト、リリース、すべてが含まれています。
ウォーターフォール開発からアジャイル開発に移行するうえで最も大きな障壁はここにあると思います。
ウォーターフォール開発では、各工程各機能をカンペキにこなしていくことに重点が置かれます。それは時々（いつも？）、開発遅延を引き起こします。これを解消するために納期を延期したり人を追加したりして対処するかと思います。
アジャイル開発では、まず短い期間で縛ります。これをタイムボックスと言います。
この期間の中でできる範囲を明確にして、それを実直にこなし続けるのがアジャイル開発です。
次のIterationを開始するときには、今までのIterationの状況を確認して自分たちができるスピード感を認識して作業ボリュームを決めていきます。このスピード感のことをベロシティと言います。

## 人（チーム） - Team
人（チーム）は、作業を実施する人々です。Azure DevOpsでは"Team"と表現されています。
"Team"は、"どういう価値を提供するか"によってメンバーをグループ分けします。たとえば、"Webアプリ"、"モバイル"、"バックエンド"、"運用"などです。
もう少し細かい説明は、こちら"[Azure DevOps Organization,Project,Team,Areaの扱い](https://qiita.com/mstakaha1113/items/5c9b830f5c21d66a34a9#team)"をご確認ください。

Teamは、誰が参加しているのか(Member)、何をするチームか(Area)、どんな周期や期間で働くのか(Iteration)を設定します。
# ３つの軸を組み合わせる
Work Item、Iteration、Teamという３つの軸を理解したところで、実際に組み合わせてみましょう。
Teamを編成し、TeamにIterationを設定し、Work Itemを割り振るという順番で実施してみたいと思います。

## Teamを編成する
Teamはプロジェクトに対して設定します。
Projectの左下 "Project setting" の "Teams" をクリックします。
![20190701-1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/439826/e7ac8ef7-444b-df40-6785-87fc5025b8b6.png)
デフォルトで１つのチームが出来上がっていると思います。
こちらはプロジェクト生成時に作られるものです。
それではチームを２つ作ります。画面上部の"New team"をクリックします。

![20190701-2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/439826/1c4ce289-35af-a284-2556-6e77dd52b8bc.png)
チーム名、説明、権限、エリア(作業領域名)、管理者権限ユーザーを入力します。
とりあえず作るのであればチーム名だけ入力しましょう。
今回は"チームA"と"チームB"を作成しておきます。

## Iterationを設定する
続いて時間軸です。
IterationもTeam同様、プロジェクトに対して設定します。
Projectの左下 "Project setting" の "Project configuration" をクリックします。
![20190701-3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/439826/202dbff5-fa35-3391-52a6-c75befd452a7.png)
デフォルトで１つ親イテレーションと３つの子イテレーションが出来上がっていると思います。
こちらはプロジェクト生成時に作られるものです。
それでは子イテレーションを５つ作ります。親イテレーションが選択された状態(上図だと"agile-boards-sample"行の背景色が水色の状態)で"New child"をクリックします。

![20190701-4.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/439826/7eec33d0-4348-4998-56cb-86017ddefc72.png)

イテレーション名、開始日、終了日を入力します。
とりあえず作るのであればイテレーション名だけ入力しましょう。
今回は"チームAのイテレーション１（～３）"と"チームBのイテレーション１（～２）"の計５つを作成しておきます。開始日と終了日も適宜登録してみます。
チームAは２週間、チームBは３週間のイテレーションとしてみました。
![20190701-5.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/439826/ab5c5526-7d58-1aa6-5c23-fe3f9b6e0891.png)

## TeamにIterationを紐付ける
どのチームがどういう期間で働くのかを指定します。
Projectの左下 "Project setting" の "Team configuration" をクリックします。
![20190701-6.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/439826/6f93541c-4d32-6f03-6740-f792fc1c6a16.png)
画面の１番上、ナビゲーション用のパンくずが出ています。この１番右側をクリックすると、現在登録されているTeamが選択できるようになっています。
今回は"チームA"を選択します。
出力される画面の上部に"General","Iterations","Areas","Templates"とタブ(文字)が出てきます。"General"が青太字になっていると思いますが、"Iterations"をクリックし青太字になるようにします。
![20190701-7.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/439826/c57a2738-2e1f-a531-855a-09507e0d794c.png)

このTeam（今回は"チームA"）が採用するIterationに関する情報を登録する画面です。
下部の"+ Select iteration(s)"をクリックして、イテレーションを追加します。
![20190701-8.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/439826/c6f49f90-a76d-849b-85d3-44d6b3c78fb5.png)
"+ Iteration" をクリックすれば、複数登録が可能です。"Save and close" をクリックして登録は完了となります。
"チームB"についても同様に登録します。（パンくずで選択、Iterations、+ Select iteration(s)）

## Work Item を作成する
チームができて、作業期間も決まりましたので、最後に実施する作業を登録します。
今回は"Sprints"から登録してみます。
左のペイン、"Boards"の"Sprints"をクリックします。
![20190701-9.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/439826/4c3d3428-a576-323d-f968-95a39a57531c.png)
画面左側上部（青破線部）に現在表示しているチームがどこなのかが表現されています。
チーム名をクリックすれば、他のチームに変更することができます。
画面右側上部（緑点線部）に現在表示しているイテレーションがどこなのか表現されています。
こちらもクリックすれば、他のイテレーションに変更することができます。
"+ New Work Item"をクリックしてWork Itemを追加します。
![20190701-10.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/439826/3172753d-275b-37ac-4826-2b77a226a3d0.png)
内容はともかく、Work Itemを追加することができました。

# まとめ
今回は、"誰がいつ何をするのか"という情報をどうやって登録するのか、簡単に紹介しました。
はじめは、デフォルトの設定を利用してWork Itemの管理から始めても差し支えないと思います。