Azure DevOps Demo Generator を使おう

Azure DevOps Service を使いこなせるようになるには、やはり使って経験を積んでいくのが一番だと思いますが、実戦以外できちんとしたプロジェクトを構成することは難しいし、なにより面倒ですよね。
そこで、今回は Azure DevOps Demo Generator について紹介しようと思います。

# Azure DevOps とは

> モダンな一連の開発サービスを利用して、よりスマートに計画を立て、より効率的に共同作業を行い、より迅速に出荷しましょう。

--- _[Azure DevOps](https://azure.microsoft.com/ja-jp/products/devops) より_

# Azure DevOps Demo Generator とは

## 一次情報

[Azure DevOps Demo Generator](https://learn.microsoft.com/ja-jp/azure/devops/demo-gen/?toc=%2Fazure%2Fdevops%2Fdemo-gen%2Ftoc.json&view=azure-devops)

> Azure DevOps Services Demo Generator は、ソースコード、作業項目、イテレーション、サービス接続を含む事前設定されたサンプル コンテンツを使用して、組織内のプロジェクトをプロビジョニングし、選択したテンプレートに基づいてパイプラインをビルドしてリリースするのに役立つサービスです。

--- _[Azure DevOps Services Demo Generator について](https://learn.microsoft.com/ja-jp/azure/devops/demo-gen/?toc=%2Fazure%2Fdevops%2Fdemo-gen%2Ftoc.json&view=azure-devops) - Azure DevOps Services_

## どこで知ったのか

[MICROSOFT BUILD EDITION The Microsoft Learn Cloud Skills Challenge](https://www.microsoft.com/ja-jp/cloudskillschallenge/build/registration/2023) の AZ-400 に挑戦してラーニング パスを進めていたときに、コンテンツの中で Azure DevOps Demo Generator から指定のプロジェクトを自分の組織にインポートしてください、という指示があり、この時に知りました。

たとえば、[Azure Pipelines エージェントとプールを管理する](https://learn.microsoft.com/ja-jp/training/modules/manage-azure-pipeline-agents-pools/)では、Azure DevOps Demo Generator からプロジェクトをインポートし、このプロジェクトを使ってエージェントとエージェントプールについての演習を行います。

## 良いところ

- 実際にビルド可能なソフトウェア、実行可能なパイプライン、インタラクティブに実践可能なボードなど、実際にプロジェクトを構築するために必要なリソースがセットアップされた状態でインポートされるので、ゼロからプロジェクトの構築をする必要がなく、すぐに実践的な訓練が可能
- 権限の許可さえ与えればプライベートな Azure DevOps Organization にも導入可能なので、パブリックな場所が必要ない
- パイプラインの実行は、Microsoft によってホストされるエージェントやセルフホステッドエージェントなどを自分の環境や予算などの都合に合わせて柔軟に構成して使用できる
- 自社の実際のプロジェクトを元にカスタム テンプレートを作成して社内に展開することなどもできるため、特定の技術スタックやプロジェクト特性を指向したカスタム トレーニングを作成することなどが可能
  - ご参考：[独自のテンプレートを作成する](https://learn.microsoft.com/ja-jp/azure/devops/demo-gen/build-your-own-template?toc=%2Fazure%2Fdevops%2Fdemo-gen%2Ftoc.json&view=azure-devops)

## 便利な使い方を考えてみた

Azure DevOps Demo Generator は非常に有用なサイトだと思うし、自分が Azure DevOps Service を最初に始めるときに知っておきたかったなと思います。
※一応 Microsoft Learn では扱われているので自分が調べ足りなかったのが悪いんですが。

そこで、ちょっと現実的に Azure DevOps Demo Generator を何かに使えないか考えてみました。

### 繰り返し実行するプロジェクトのひな型にする

たとえば、社内では短期・有期で繰り返されるプロジェクト形式の活動もあると思います。
そうした活動を全般的にサポートするために使用することができそうです。
全ての機能を使わなくても問題ないので、タスク管理として Azure Boards を使うだけでも効果がある場面もあるかもしれません。
うまく使えば、プロジェクトの立ち上げが非常にスピーディになる可能性を秘めていると感じます。

#### Azure Boards のプロセス テンプレートとの違い

Azure Boards には、プロジェクトの作成時に Work item process を選択できる機能(プロセス テンプレート)があります。
これは、既存のプロジェクトのプロセスをベースとして、プロセステンプレートを作成することができ、後発のプロジェクトはこのテンプレートを適用することで同一のプロセスを当該プロジェクトに対して簡単に適用できます。
ご参考：[既定のプロセスとプロセス テンプレートについて](https://learn.microsoft.com/ja-jp/azure/devops/boards/work-items/guidance/choose-process?view=azure-devops&tabs=agile-process)
![Work item process の選択画面(『Azure DevOps Service - プロジェクト - プロジェクトを作成する』より)](https://learn.microsoft.com/ja-jp/azure/devops/organizations/projects/media/create-project/create-new-project-form-new-nav.png?view=azure-devops)

ただし、これはあくまでプロジェクトが採用するプロセスのテンプレートなので、実際に作業項目を作成したりはしません。
Work item process だけ決まっていればいいケースではプロセス テンプレートで十分だと思います。
ですが、そうではない場合には Azure DevOps Demo Generator でテンプレートを定義すれば効率化できる可能性があります。カスタム テンプレートにより、プロジェクトの開始時に作成されるべき作業項目を作成したり、プロセスを適用した状態とすることもできます。

#### 社内情報はセンシティブなのでテンプレートを作成して公開したくない？

そんな場合も Extractor を使うことでテンプレートを構築することができそうです。
[Build your own template](https://vstsdemodata.visualstudio.com/AzureDevOpsDemoGenerator/_wiki/wikis/AzureDevOpsGenerator.wiki/58/Build-your-own-template) では、Extractor を使ってテンプレートを作成する手順が公開されています。
この手順を使って作成したテンプレートを読み込むことでセンシティブなプロジェクトデータも安全に扱うことができそうです。
![ado-demo-gen-import-private-project.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3118632/c46591ec-9e15-978c-7f16-c2e3af02f3b3.png)

# まとめ

ここまで簡単に見てきましたが、Azure DevOps Demo Generator は実は結構便利で使いどころもある凄いやつなんじゃないでしょうか？
Azure DevOps Service について実践的に学びたい方や、「実際のところどうなってんの！？」と思われる方は、ぜひ Azure DevOps Demo Generator を使ってデモプロジェクトを作成し、ご自分の手で触って学んでいきましょう。