Azure Boards の小ネタをいくつか

> 本記事は [Azure DevOps | Advent Calendar 2022 - Qiita](https://qiita.com/advent-calendar/2022/azuredevops) の 5 日目の記事です。

Azure Boards は高機能なので知られざる機能的なものが多いです。今回はその中でもたまーーに使えそうな機能をいくつか紹介します。小ネタレベルなので頭の片隅にでも置いといてもらえれば！

## 右クリック

実はいろんな場所で右クリックが使えます。例えば Backlogs メニューで右クリックすると [...] と同じメニューが表示されます。ほとんどの画面で [...] と同じなので、なんかこれできないかな？みたいなときにとりあえず押してみるとよいですね。

[![Image from Gyazo](https://i.gyazo.com/6b987b5e585d1d74b3696c6563e0d199.png)](https://gyazo.com/6b987b5e585d1d74b3696c6563e0d199)

## Work item Attachments のリンク

Attachments を右クリックすると [Copy attachment link] が選択できます。これを選択するとクリップボードにリンクがコピーされるので、 Work item の Discussion に貼り付けることができます。ファイル添付したから見といてーみたいなときに使えますね。

[![Image from Gyazo](https://i.gyazo.com/987e68747e8d7b91dc67743ff0e748dc.png)](https://gyazo.com/987e68747e8d7b91dc67743ff0e748dc)
[![Image from Gyazo](https://i.gyazo.com/31f4a31efa4d6dc9144a8e361e336b2c.png)](https://gyazo.com/31f4a31efa4d6dc9144a8e361e336b2c)

## Work item state の初期値

Work item state には初期値がありますが、この初期値はプロセスで定義されている一番上の値です。例えば Agile > User Story は規定で [New] が設定されます。
Work item state の初期値を変更したい場合はちょっとめんどくさいのですがカスタムプロセスを作って、定義されている一番上の値を変更することです。元のプロセスで定義されている state は削除できないので [Hide] に設定し、新しい state を追加すれば OK です。ちなみに [Proposed] を全部 Hide 状態にすると初期値で [In Progress] の一番上の値になります。

**[既定の Agile > User Story]**
[![Image from Gyazo](https://i.gyazo.com/8be0e0c7cb1a5240eecce302e98ef8d4.png)](https://gyazo.com/8be0e0c7cb1a5240eecce302e98ef8d4)

**[State の初期値が First になるようにカスタマイズした User Story]**
[![Image from Gyazo](https://i.gyazo.com/7e50952e62cc28ce1086212f53904170.png)](https://gyazo.com/7e50952e62cc28ce1086212f53904170)

[Process customization and inherited processes - Azure DevOps Services | Microsoft Learn](https://learn.microsoft.com/en-us/azure/devops/organizations/settings/work/inheritance-process-model?view=azure-devops&tabs=agile-process)

## CSV インポート時のモード（新規追加・更新）

CSV インポート機能は実は 2 種類の新規追加と更新モードがあります。新規追加モードの場合は新しく Work items を作成することができ、更新モードのときは既存の Work items を更新することができます。
CSV インポート時にどうやって判定しているのかというと ID 列の有無で判断しています。 ID 列がない場合は新規追加、 ID 列がある場合は更新モードになります。

[Import or update work items in bulk by using CSV files - Azure Boards | Microsoft Learn](https://learn.microsoft.com/en-us/azure/devops/boards/queries/import-work-items-from-csv?view=azure-devops)

**[ID 列がない場合は新規追加モード]**
[![Image from Gyazo](https://i.gyazo.com/9b1f494d4d4fbe3b223e8ea7ca3faea6.png)](https://gyazo.com/9b1f494d4d4fbe3b223e8ea7ca3faea6)
[![Image from Gyazo](https://i.gyazo.com/afdac05d39c1d326114a4ce32527c2e8.png)](https://gyazo.com/afdac05d39c1d326114a4ce32527c2e8)

補足: 新規追加モードでは Work item を新規追加するので、 Work item state の初期値以外が設定されているとエラーになります。初期規定値以外の Work item state を設定したい場合は更新モードしかできないので、一度 CSV インポートしてからエクスポートして、再度 ID 付きの CSV をインポートすれば OK ですね。

**[ID 列がある場合は更新モード]**
[![Image from Gyazo](https://i.gyazo.com/f850be3f5136cb403e0f1abb60f9889a.png)](https://gyazo.com/f850be3f5136cb403e0f1abb60f9889a)
[![Image from Gyazo](https://i.gyazo.com/cd0e4eaa5d05a19d84dafb6df09eb318.png)](https://gyazo.com/cd0e4eaa5d05a19d84dafb6df09eb318)

## Query のマクロとチャート

Query にはいくつかのマクロがあって、これを使うと現在のイテレーションを返すような Query にしたり、最近メンションがあった Query を作成することできます。

[![Image from Gyazo](https://i.gyazo.com/74f1e0509bc970ee9603ed2d5626f8a5.png)](https://gyazo.com/74f1e0509bc970ee9603ed2d5626f8a5)

[Query macros or variables / Query fields, operators, macros, and variables - Azure Boards | Microsoft Learn](https://learn.microsoft.com/en-us/azure/devops/boards/queries/query-operators-variables?view=azure-devops#query-macros-or-variables)

Query では チャートも作ることができるのですが、 Query 結果をもとに Dashboard でもチャートを作ることが出来るのでこっちのほうが使っている方が多いと思います。

**[Query のチャート]**
[![Image from Gyazo](https://i.gyazo.com/e01c2a0983d9dcbce2b594a17b3e828a.png)](https://gyazo.com/e01c2a0983d9dcbce2b594a17b3e828a)

**[Dashboard のチャート]**
[![Image from Gyazo](https://i.gyazo.com/25da0519209fb8bbd6654a51b715c9e2.png)](https://gyazo.com/25da0519209fb8bbd6654a51b715c9e2)

[Status and trend work item, query-based charts - Azure DevOps | Microsoft Learn](https://learn.microsoft.com/en-us/azure/devops/report/dashboards/charts?toc=%2Fazure%2Fdevops%2Fboards%2Ftoc.json&view=azure-devops)