Azure Boardsにタスク等を一括登録する方法

# 概要

[Azure DevOps](https://docs.microsoft.com/ja-jp/azure/devops/user-guide/what-is-azure-devops?view=azure-devops)のサービスの1つとして、[Azure Boards](https://azure.microsoft.com/ja-jp/services/devops/boards/)があります。
Azure Boardsでは、以下の図のようにプロジェクトのタスク等を管理することができます。
![範囲を選択_011.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/441085/8b96b2c1-4b4c-ead8-91ef-acba05998fb9.png)

このボードで扱うタスクを一括で登録する方法について、本記事では述べていきます。

## 一括登録できるとどんなときに役立つか

そもそもどんなときにAzure Boardsへの一括登録をしたいと思うのか、という話なのですが、私の場合は、各Sprintで繰り返し行うタスクなどを登録するときにモチベーションが生まれました。

例えば、定常的に行うScrumの活動をタスクとしてあげるのであれば、毎Sprint以下のようなタスクを登録する必要が生じます。

![範囲を選択_012.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/441085/3a00333e-ee48-2ea5-92a3-ec1b390e25ab.png)

これを手でぽちぽちして登録するのはしんどい。。と思ったら、本記事の方法で少し手間が省けるようになるかもしれません。

## 一括登録する方法

[このページ](https://docs.microsoft.com/en-us/azure/devops/boards/queries/import-work-items-from-csv?view=azure-devops)に従って実施していきます。
上の図でSprint 10のセレモニーを例示しましたが、今回はSprint 11,12のセレモニーを一括登録してみます。

### CSVファイルを作成

以下のようなCSVファイルを作成します。

```
Work Item Type,Title 1,Title 2,Iteration Path,Remaining Work
"Product Backlog Item","セレモニー Sprint 11",,myLife\Sprint 11,
"Task",,"朝会",myLife\Sprint 11,0.25
"Task",,"朝会",myLife\Sprint 11,0.25
"Task",,"朝会",myLife\Sprint 11,0.25
"Task",,"朝会",myLife\Sprint 11,0.25
"Task",,"朝会",myLife\Sprint 11,0.25
"Task",,"Sprint Planning Part1",myLife\Sprint 11,1
"Task",,"Sprint Planning Part2",myLife\Sprint 11,1
"Task",,"Sprint Review",myLife\Sprint 11,1
"Task",,"Sprint Retrospective",myLife\Sprint 11,1
"Task",,"Refinement",myLife\Sprint 11,1
"Product Backlog Item","セレモニー Sprint 12",,myLife\Sprint 12,
"Task",,"朝会",myLife\Sprint 12,0.25
"Task",,"朝会",myLife\Sprint 12,0.25
"Task",,"朝会",myLife\Sprint 12,0.25
"Task",,"朝会",myLife\Sprint 12,0.25
"Task",,"朝会",myLife\Sprint 12,0.25
"Task",,"Sprint Planning Part1",myLife\Sprint 12,1
"Task",,"Sprint Planning Part2",myLife\Sprint 12,1
"Task",,"Sprint Review",myLife\Sprint 12,1
"Task",,"Sprint Retrospective",myLife\Sprint 12,1
"Task",,"Refinement",myLife\Sprint 12,1
```

一番上の行が、その列に存在する値の属性を示すようになっています。
また、今回はProduct Backlog ItemとTaskという親子関係のあるものを一括で登録しています。親側のタイトルをTitle 1列、子側をTitle 2列で表現できます。

### Taskboardにインポート

CSVに記述した情報をAzure Boardsに取り込んでいきます。

まず、Azure DevOpsの画面左から、「Boards」の「Queries」を押下します。
押下後に表示された画面で、「Import Work Items」を押下します。

![範囲を選択_013.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/441085/2594f8fa-ab7e-dadb-e8ab-c84d4b4c1804.png)

----
「ファイルを選択」を押下して、先程作成したCSVファイルを選択し、「Import」を押下します。

![範囲を選択_016.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/441085/599d4b87-89be-7be7-c63e-675ece625f76.png)

---

CSVに不備があった場合は赤字で教えてくれます。
列数があってない、該当のIteration Pathが存在しない、などなどの不備を教えてくれるので、直しましょう。
不備を解消できたら、「Save items」を押下し完了です。

![範囲を選択_017.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/441085/5a0aad55-a169-3c63-3f91-3dbf1e7705f3.png)

---

BoardsのBacklogsから、ちゃんと登録できているか確認してみましょう。

![範囲を選択_018.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/441085/1227d9cc-c965-948e-b5f1-72a0947de6d8.png)

--- 
終わりです。

### 補足

[この記事](https://docs.microsoft.com/en-us/azure/devops/boards/work-items/guidance/choose-process?view=azure-devops&tabs=basic-process)によると、Azure DevOpsにてプロジェクトを作成する際には、Basic・Agile・Scrum・CMMIという4種類のテンプレートを選択することができます。
本記事では具体例として、Scrumを選択した場合でのProduct backlog itemとTaskを一括登録する方法を記述しましたが、今回と同様の方法で他のテンプレートにも一括登録が可能だと思います。

---
今回2階層の親子関係のあるものを登録しましたが、以下のようにして、3階層のものも一括登録できることは確認できました。

```
Work Item Type,Title 1,Title 2,Title 3,Iteration Path,Remaining Work
"Feature","定常",,,myLife,
"Product Backlog Item",,"セレモニー Sprint 10",,myLife\Sprint 10,
"Task",,,"朝会",myLife\Sprint 10,0.25
```