Azure CLIでリージョン一覧を取得する

Azure CLIで現在のサブスクリプションでサポートされているリージョンの一覧を取得する方法のメモ。

# 参考ドキュメント
- Azure CLIのリファレンス
    - https://docs.microsoft.com/ja-jp/cli/azure/account?view=azure-cli-latest#az-account-list-locations
- GitHubのIssue
    - https://github.com/Azure/azure-cli/issues/1520
- 逆引きAzure CLI - Qiita
    - https://qiita.com/mutz0623/items/d03cee7232dea18c3620

# コマンドとレスポンス例
基本形とオプションを組み合わせたコマンドとレスポンス例。

## リージョン一覧の詳細情報を出力
オプション無しで実行するとリージョン一覧の詳細情報をデフォルトの形式で出力できる。
デフォルトの出力形式は設定していない場合はJSONになる。

```
$ az account list-locations
[
  {
    "displayName": "East Asia",
    "id": "/subscriptions/12345678-abcd-1234-5678-12345678abcd/locations/eastasia",
    "latitude": "22.267",
    "longitude": "114.188",
    "name": "eastasia",
    "subscriptionId": null
  },
  --- (途中省略) ---
  {
    "displayName": "Germany West Central",
    "id": "/subscriptions/12345678-abcd-1234-5678-12345678abcd/locations/germanywestcentral",
    "latitude": "50.110924",
    "longitude": "8.682127",
    "name": "germanywestcentral",
    "subscriptionId": null
  }
]
```

## `--output -o` オプションで出力形式を指定してリージョン一覧の詳細情報を出力
出力形式を `--output` または `-o` オプションで指定できる。
指定可能な値は `json` `jsonc` `none` `table` `tsv` `yaml` のいずれか。

### JSON形式 `-o json`
```
$ az account list-locations -o json
[
  {
    "displayName": "East Asia",
    "id": "/subscriptions/12345678-abcd-1234-5678-12345678abcd/locations/eastasia",
    "latitude": "22.267",
    "longitude": "114.188",
    "name": "eastasia",
    "subscriptionId": null
  },
  --- (途中省略) ---
  {
    "displayName": "Germany West Central",
    "id": "/subscriptions/12345678-abcd-1234-5678-12345678abcd/locations/germanywestcentral",
    "latitude": "50.110924",
    "longitude": "8.682127",
    "name": "germanywestcentral",
    "subscriptionId": null
  }
]
```

### JSONC形式 `-o jsonc`
色付きのJSON。出力される文字列自体は `-o json` と変わらないため省略。

### 何も表示しない `-o none`
このオプションを付けて実行すると結果が出力されない。

### テーブル形式 `-o table`
```
$ az account list-locations -o table
DisplayName           Latitude    Longitude    Name
--------------------  ----------  -----------  ------------------
East Asia             22.267      114.188      eastasia
Southeast Asia        1.283       103.833      southeastasia
--- (途中省略) ---
Germany North         53.073635   8.806422     germanynorth
Germany West Central  50.110924   8.682127     germanywestcentral
```

### TSV形式 `-o tsv`
```
$ az account list-locations -o tsv
East Asia       /subscriptions/12345678-abcd-1234-5678-12345678abcd/locations/eastasia  22.267     114.188 eastasia        None
--- (途中省略) ---
Germany West Central    /subscriptions/12345678-abcd-1234-5678-12345678abcd/locations/germanywestcentral   50.110924       8.682127        germanywestcentral      None
```

### TSV形式 `-o yaml`
```
$ az account list-locations -o yaml
- displayName: East Asia
  id: /subscriptions/12345678-abcd-1234-5678-12345678abcd/locations/eastasia
  latitude: '22.267'
  longitude: '114.188'
  name: eastasia
  subscriptionId: null
--- (途中省略) ---
- displayName: Germany West Central
  id: /subscriptions/12345678-abcd-1234-5678-12345678abcd/locations/germanywestcentral
  latitude: '50.110924'
  longitude: '8.682127'
  name: germanywestcentral
  subscriptionId: null
```

## `--query` オプションで出力項目を絞り込む
`--query` オプションで出力対象項目の絞り込み、出力名の変更ができる。

### リージョン名 (表示名) とリージョン名を出力
```
$ az account list-locations -o table --query "[].{DisplayName:displayName, Name:name}"
DisplayName           Name
--------------------  ------------------
East Asia             eastasia
Southeast Asia        southeastasia
--- (途中省略) ---
Germany North         germanynorth
Germany West Central  germanywestcentral
```

### リージョン名のみ出力
```
$ az account list-locations -o tsv --query "[].name[]"
eastasia
southeastasia
--- (途中省略) ---
germanynorth
germanywestcentral
```

以上です。