Microsoft Learn モジュール 概観 - Azure DevOpsを始める

# はじめに

この記事は、Microsoft Learn の下記のモジュールの中から重要と思われる内容を(筆者が勝手に抽出して)書き残しているものです。

- [Get started with Azure DevOps][MSLearn]

上記のモジュールは、2020/5/3 現在、英語でのみ提供されています。日本語の内容を確認されたい方は、こちらを参照してください。※公式のものではありません

- [Azure DevOps - Azure DevOpsを始める Part.1][MyHatena]


# DevOpsとは？

## DevOps は文化

> DevOps is the union of people, process, and products to enable continuous delivery of value to our customers.
> DevOpsとは、人、プロセス、製品が一体となって、顧客に価値あるものを継続的に提供できるようにすることです。

この認識は本当に重要ですね。あるあるな誤解として、`「Dev+Ops だから開発と運用を一緒の人がやることでしょ？」`と言う人が未だに見受けられる。そうじゃない、という話です。

[Effective DevOps][EffectiveDevOps] の第1章、一番最初の文章も、

> devopsはものの考え方であり、仕事の進め方である。ストーリーを共有し、共感を育み、効果的かつ永続的に力を出せるようにする。そのためのフレームワークだ。文化を織りなす要素の一部であり、...
(引用元: Effective DevOps p.3)

と、**devopsはものの考え方**、**文化を織りなす要素の一部** であると述べられている。ここをはじめにきちんと押さえておかないと、いくら スクラムやアジャイル開発、Azure DevOps について学んでも、正しく活用することはできないということです。
なぜこんな話をするかと言うと、モジュール内でも登場するように、以下のようなDevOpsについての認識間違いをしている人が多いからです。

### DevOps は職種じゃない

> Tim: I know someone who just got a job as a DevOps engineer.I think it's more for developers.
> ティム: 知り合いにDevOpsエンジニアとして就職したばかりの人がいます。れは開発者のためのものだと思います。

**DevOpsエンジニアっていう肩書きって何だよ**って話ですね。Twitterでもプロフィールに`DevOpsエンジニア`といった記載をしている人をよく見かけますが、筆者の感想としては、「**あなた本当にDevOpsについて理解をしているの？**」と疑ってしまいます。
\(だって本当に理解しているのなら、自ら DevOps を肩書きにしたりしないですから...\)

> Mara: DevOps isn't a job title.
> マーラ: DevOpsは職種ではありません。

### DevOps はツールじゃない

> Amita: Is there any software program we can get that will help us along, or a template? 
> アミタ: それに沿って助けてくれるソフトウェアプログラムやテンプレートはありますか？

これもあるあるですね。Azure DevOps をはじめ、Circle CI や Jenkins、Backlog などの`ツールを導入することが DevOpsだ`と思ってしまう案件ですね。前回の記事でも触れたように、**ツールはあくまで手段であって目的ではない** ということです。ツールを導入しても、DevOps のプラクティスを組織文化として根付かせることができなければ、意味がないですよね。

> Mara: DevOps isn't a piece of software.
> マーラ: DevOpsはソフトウェアの一部ではありません。

### DevOps は方法論じゃない

> Andy: It's more like a methodology.
> アンディ: どちらかというと方法論に近いですね。

うーん、まあ言いたいことはわかります。正直、**DevOps に正しい実践方法なんてない** ですから。それぞれの組織に、それぞれの DevOps 文化があります。それはある意味、devops という方法論から導き出された各組織としてのベストプラクティス、と言えなくもない。
でもそうなると、`方法論という正しい devops があるのか`という話になります。答えは No です。

> Mara: Not really.
> マーラ: そうでもないです。

他のアンチパターンについても、[Effective DevOps][EffectiveDevOps] では紹介されているので、一度読んでみるといいと思います。


# Azure DevOpsとは？

[DevOps とは？](#devopsとは) について学んだところで、その前に Azure がついた **Azure DevOps** は何なのか、という話ですね。

Azure DevOps については、[目次ページ][Qiita-AzureDevOpsAgenda] でも触れた通りですが、モジュール内では以下のように説明されています。

> Azure DevOps is a suite of services that provide a solution for anyone who wants an enterprise-grade tool chain. Those tools will help us implement all the practices we just talked about.
> Azure DevOpsは、エンタープライズグレードのツールチェーンを望む人のためのソリューションを提供する一連のサービスです。これらのツールは、先ほど説明したすべてのプラクティスを実装するのに役立ちます。

この`先ほど説明したすべてのプラクティス`というのは、以下の通りです。

| 内容 | 説明 |
| :--- | :--- |
| **アジャイル計画** | チーム内や管理職の誰もが見られるような仕事のバックログを一緒に作成します。私たちは、最初に何に取り組む必要があるのかがわかるように、項目に優先順位をつけます。バックログには、ユーザーストーリー、バグ、その他の情報を含めることができます。 |
| **継続的インティグレーション(CI)** | コードのビルドとテストを自動化します。チームメンバーがバージョン管理に変更をコミットするたびに実行します。 |
| **継続的デリバリー(CD)** | 継続的デリバリーは、ビルドからQAや本番環境へのテスト、設定、デプロイをどのように行うかです。 |
| **モニタリング** | テレメトリを使用して、アプリケーションのパフォーマンスと使用パターンに関する情報を取得します。その情報を利用して、反復しながら改善することができます。 |

Azure DevOps のサービスは、上記の DevOps プラクティスを達成するために提供されているサービスということですね。


# 演習

ここでは、実際に以下の作業を行っています。

- 無料のAzure DevOpsの組織を作成する (テナントのようなもの)
- 組織を作成する (Azure DevOps の Organization)

日本語訳した記事を順に実施してもらえればと思います。


# さいごに

このモジュールは、実際に Azure DevOps Service の組織や Organization を作成するためのモジュールのため、実作業に照らし合わせると、ほんの数分で完了してしまうレベルの作業です。ただ、DevOps とは、といった基本的な部分を一緒に学べるいいモジュールでした。

**DevOpsはソフトウェアの一部ではありません**。そう言っているのにいきなりツールの話ばかりしたら、確かに本末転倒ですね。ぜひ、ゆっくりモジュールを読み直してみてください。

---

[MSLearn]:https://docs.microsoft.com/ja-jp/learn/modules/get-started-with-devops/
[MyHatena]:https://mappie-kochi.hatenablog.jp/entry/2020/05/03/000000
[Qiita-AzureDevOpsAgenda]:https://qiita.com/ymasaoka/items/c43ac02e0bc9cbdadd65

[EffectiveDevOps]:https://www.oreilly.co.jp/books/9784873118352/