はじめに

今回から数回にわたって、Azureが提供するチーム開発のためのサービス群であるAzure DevOpsについて紹介します。今回はAzure DevOpsの概要説明と、実際に手を動かしてAzure DevOpsの一部分に触れてみたいと思います。

Azure DevOpsとは

Azure DevOpsはソフトウェア開発チームのための、システムの開発と運用を行う上で必要となるサービスが集約されたチーム開発支援のためのプラットフォームです。

サービスにはソースコードのバージョン管理システム、チケットやバグ等のタスク管理システム、CI/CDツール、成果物管理システム、テスト管理ツールといったものが含まれており、それらを総称してAzure DevOpsと呼びます。なおAzure DevOpsは「Visual Studio Team Services」という名前で提供されていたサービスの後継にあたります。

DevOpsとは

まずはサービス名に冠されている「DevOps」について簡単に説明します。 DevOpsとは、Development(開発)とOperations(運用)をかけ合わせた造語で、近年注目されているソフトウェアの開発手法の一つです。

従来、開発者と運用者はそれぞれ「システムへの新たな機能追加」と「システムの安定稼働」といった相反する責務を持つことで対立的な立場にありました。DevOpsの概念では、双方の考え方を対立させるのではなく協力によって両立させることを目指しています。DevOpsをはじめに提唱した写真共有サービスのFlickrでは、DevとOpsの協力のために「ツール」と「組織文化」の観点から以下の項目を必要な要素として挙げています。

ツール

1.インフラストラクチャの自動化
 ChefやAnsible、Dockerなどのインフラ構築自動化ツールを用いてインフラ構築を自動化する

2.バージョン管理システムの共有
 Gitなどのバージョン管理システムをDevとOpsで共有して使用する

3.ビルドとデプロイのワンステップ化
 手動でのビルドやデプロイは行わず、JenkinsなどのCI(継続的インテグレーション)ツールを使ってビルドやデプロイ作業を自動化する

4.フィーチャーフラグ
 機能の有効・無効化を設定ファイルによってコントロールする。これによってリリースタイミングと機能の追加タイミングが分離できるようになる

5.メトリクスの共有
 ログやアラートといったシステムのメトリクスをDevとOpsで共有する

6.チャットツールの活用
 SlackやHipChatなどのチャットツールのbot機能を用いて、ビルドやデプロイの結果を通知する

組織文化

1.お互いを尊重する
 役割が異なる相手を心から思いやること。一人ひとりが優秀であることを認め、能力や功績を評価する

2.お互いを信頼する
 自分以外の皆が優秀であると認め、信頼して仕事を任せる

3.失敗を責めず健全な態度を取る
 新しいことへの挑戦には失敗が伴うものと理解し、他者の失敗を責めない

4.相手を非難しない
 問題の当事者を非難するのではなく、同じ問題を繰り返さないように一緒になって考える

これらのツールと組織文化は最初から全て備わっているわけではなく、日々改善して必要があります。この改善活動の実践こそがDevOpsであるとされています。

Azure DevOpsが提供するサービス

Azure DevOpsは、上記のDevOpsにおけるツールと組織文化の改善をサポートするためのサービスと捉えることができます。Azure DevOpsは以下の5つのサービスを包括したサービスの呼称です。それぞれのサービスは単体で使用することが可能ですが、組み合わせて使用することでよりDevOpsを円滑に推進できるようになります。

・Azure Boards
 アジャイル開発やスクラムにおけるタスク管理システムである「カンバン」を提供するサービス。

・Azure Repos
 Gitベースのソースコードバージョン管理のためのサービス。

・Azure Pipelines
 アプリケーションのビルドやデプロイを自動化するCI/CDサービス。

・Azure Artifacts
 自身で作成したライブラリ、パッケージをチームで共有するためのホスティングサービス。

・Azure Test Plans
 探索的テストを実行するためのサービス。探索的テストは事前に作成したテストケースをもとにテストを実施する記述式テストとは異なり、テストを実施しながらシステムの振る舞いに応じて次のテストを考えるテストです。

これら5つのサービスについては、次回以降の連載で詳しく紹介していく予定です。

Azure DevOpsを使ってみよう

ここからは実際にAzure DevOpsを使用してみて、どのようなことができるサービスなのかを確認していきましょう。

DevOpsプロジェクトの作成

Azure DevOpsでは、プロジェクトという単位で対象となるシステムやアプリケーションを分割して管理します。 プロジェクトを作成するためには、Azureポータルにログインして左側のメニューから「すべてのサービス」を選択し、検索ボックスに「devops」と入力して表示される「DevOps Projects」を選択します。

  • Azure DevOps Projectsを選択する

    Azure DevOps Projectsを選択する

画面上の「追加」または「DevOps Projectsの作成」を選択し、作成するプロジェクトの言語を選択します。今回は「.NET」を選択して「Next」を選択します。

  • プロジェクトの言語を選択する

    プロジェクトの言語を選択する

なお、既にアプリケーションを作成済みでソースコードをGitHubなどのGitリポジトリで管理している場合は、この画面下部にある「Bring your own code」を選択することで既存のソースコードを使ってDevOpsプロジェクトを作成できます。

次に、使用するフレームワークを選択します。言語ごとに選択できるフレームワークが異なりますので、プロジェクトに合ったフレームワークを選択して下さい。ここでは、.NETのフレームワークとして「ASP.NET Core」を選択します。.NETプロジェクトの場合はここでSQL Databaseの追加を行うこともできます。今回はデータベースを使用しませんので、何もしない(トグルスイッチがオフになっている)状態で「Next」を選択します。

  • プロジェクトのフレームワークを選択する

    プロジェクトのフレームワークを選択する

次はアプリケーションのデプロイ先となるAzureのサービスを選択します。今回はWebアプリのホスティングPaaSであるAppServiceのWindows版の「Windows Web App」を選択して「Next」を選択します。

  • デプロイするAzureサービスを選択する

    デプロイするAzureサービスを選択する

最後に、プロジェクトの作成に必要な名称の入力などを行います。「Project name」には任意のプロジェクト名を入力します。「Azure DevOps Organization」はAzure DevOpsにおける組織と呼ばれるリソースで、複数のプロジェクトを組織に含めることができます。こちらも任意の名称を入力します。「Subscription」はお手持ちのものを選択します。「Web app name」は公開されるWebアプリケーションの名称となるもので、こちらも任意の名称を入力します。「Location」はAppServiceの配置場所を指します。今回は「Japan East」を選択します。ここまでの入力例は以下の図の通りです。

  • プロジェクトの作成画面

    プロジェクトの作成画面

最後に「Additional settings」を選択して追加の設定情報を入力していきます。「DevOps project」セクションの「Location」では、このプロジェクトをホスティングするAzureマシンの場所を指定します。今回は「East Asia」を選択します。「Web App on Windows」セクションではAppServiceに関する追加の情報を入力します。「Resource group」にはAppServiceが所属するリソースグループ名を入力します。「Pricing tier」ではAppServiceのマシンサイズを選択します。今回は無料プランにあたる「F1 Free」を選択します。「Application Insights Location」では、ログやアラート等の情報を収集するメトリクスツールである「Application Insights」の配置場所を選択します。ここでは「Southeast Asia」を選択しています。

  • プロジェクトの追加設定画面

    プロジェクトの追加設定画面

プロジェクトの追加設定の入力が完了したら、「OK」ボタンを選択し、さらにプロジェクト作成画面の「Done」ボタンを選択してプロジェクトの作成を開始させます。しばらく待つとプロジェクトの作成が完了します。

プロジェクトのステータスを確認する

プロジェクトの作成が完了したら、完了通知に表示されている「リソースに移動」ボタンや、Azureポータルの左側メニューの「すべてのサービス」からDevOps Projectsを選択し、一覧画面から作成したプロジェクトを選択します。

  • 作成したプロジェクトの選択

    作成したプロジェクトの選択

プロジェクト選択すると、プロジェクトのダッシュボード画面が表示されます。ここでは、現在のプロジェクト内のリソースの状況を確認することができます。

  • プロジェクトのダッシュボード

    プロジェクトのダッシュボード

プロジェクトのダッシュボード画面には、大きく4つのブロックがあります。 「CI/CD pipeline」では、最新のビルドやデプロイの状況を確認することができます。「Code」、「Build」、「dev」の順に矢印で繋がっているのは、「ソースコードのコミット」→「コミットされた最新コードのビルド」→「ビルドしたアプリのAzureへのデプロイ」が時系列順に発生していることを表しています。Azure DevOpsでは、既存のGitリポジトリを選択しないでプロジェクトを作成した場合に、選択した言語とフレームワークに沿ったサンプルコードが「Azure Repos」にあらかじめコミットされており、プロジェクトの作成完了後に自動的に「Azure Pipelines」によってビルド・デプロイされるようになっています。

上図では、「Build」および「dev」にそれぞれ緑色のチェックマークが表示されています。「Build」にはビルド成功と自動テスト成功の2つのチェックが、「dev」にはリリース成功のチェックマークが付いています。この状態で、「Azure resources」ブロック内のに表示されている「Application endpoint」に表示されているURLまたは「Browse」ボタンを選択すると、デプロイされたWebサイトを確認することができます。

  • デプロイされたWebサイト

    デプロイされたWebサイト

「Repository」のブロックには、このプロジェクトで使用している「Azure Repos」のGitリポジトリが表示されています。「Code」ボタンを選択することで、リポジトリに移動することができます。

「Application Insights」のブロックでは、Webサイトのメトリクスとして成功・失敗したリクエストの情報が表示されています。プロジェクト名を選択するとApplication Insightsのページに遷移し、より詳細なメトリクスを確認することもできます。

DevOps専用ダッシュボードを表示する

プロジェクトのダッシュボードでは、プロジェクトのステータスを簡単に確認することができました。しかしながらAzure DevOpsには、Azureポータルから独立した専用のダッシュボードが用意されており、基本的にはそちらを使用していくことになります。 DevOps専用ダッシュボードへは、プロジェクトのダッシュボード上から遷移することができます。画面上部の「Project homepage」を選択すると、専用ダッシュボードが表示されます。

  • DevOps専用ダッシュボードへ移動する

    DevOps専用ダッシュボードへ移動する

専用ダッシュボードを見ると、左側のメニュー部分に「Boards」、「Repos」、「Pipelines」、「Test Plans」、「Artifacts」というAzure DevOpsの主要5サービスが表示されています。

  • DevOps専用ダッシュボード

    DevOps専用ダッシュボード

DevOps専用ダッシュボードに主要5サービスが集約されているため、各プロジェクトメンバーはこのダッシュボード上で様々なタスクを一元管理することができるようになっています。

Azure DevOpsで自動デプロイを体験しよう

本稿の最後に、DevOpsダッシュボードから「Azure Repos」を使ってコードを編集し、「Azure Pipelines」でビルドとデプロイが自動的に実行される様子を体験していきましょう。

Azure Reposでコードを編集する

DevOpsダッシュボードを表示した状態で、左側のメニューから「Repos」を選択します。するとGitリポジトリにコミットされているファイルを確認することができるエクスプローラーが画面中央に表示されます。

ここでは例として、Webサイトのトップページに表示されている文言を変更してみたいと思います。エクスプローラーに表示されているフォルダを、「Application」→「aspnet-core-dotnet-core」→「Views」→「Home」の順に展開していき、「Index.cshtml」ファイルを選択します。ファイルを選択すると、コードが画面に表示されます。

  • Azure Reposのファイルエクスプローラー

    Azure Reposのファイルエクスプローラー

Azure Reposではファイル参照だけでなく、ファイルの編集もブラウザ上から行うことができるようになっています。コードの上部にある「Edit」ボタンを選択することでファイルが編集可能となります。ここでは16行目のメッセージ(Success!)を別のメッセージに変更します。

  • Azure Repos上でファイルを編集する

    Azure Repos上でファイルを編集する

編集した内容と以前の内容を比較したい場合は「Highlight changes」を選択することで、エクスプローラーが新旧画面で分割されて比較できるようになります。

  • Azure Reposでファイルの新旧比較をする

    Azure Reposでファイルの新旧比較をする

編集内容に問題がなければ、変更内容をGitリポジトリに反映していきます。コード上部の「Commit」を選択するとコミット用ダイアログが表示されるので、「Comment」にコミットコメントとして変更内容を分かりやすく記入します。「Branch name」、「Work items to link」については次回以降で詳しく説明するので今回はデフォルトのままとし、「Commit」ボタンを選択します。

  • Azure Reposでファイルをコミットする

    Azure Reposでファイルをコミットする

コミットが完了したら、Reposのサブメニューにある「Commits」を選択してコミット履歴を確認してみましょう。コミット履歴が2行存在し、先程入力したコミットコメントが表示されていることが確認できます。

  • Azure Reposでコミット履歴を確認する

    Azure Reposでコミット履歴を確認する

またコミットコメントを選択すると、変更内容を確認することもできます。

  • Azure Reposでコミット履歴の詳細を確認する

    Azure Reposでコミット履歴の詳細を確認する

Azure Pipelinesの自動ビルド、デプロイを確認する

続いて、Azure Reposでコミットした内容がAzure Pipelinesを通してビルド・デプロイされることを確認します。

DevOpsダッシュボードの左側メニューから「Pipelines」を選択します。すると「Builds」サブメニューの内容がデフォルトで表示されます。Buildsサブメニューでは、ビルドの状況を確認することができます。以下の図では先程のAzure Reposへのコミットを受けて、新たなビルドが実行中であることが分かります。コミットコメントの右側に表示されている青色のアイコンは、現在ビルドが実行中であることを表しています。

  • Azure Pipelinesでビルドの進捗状況を確認する

    Azure Pipelinesでビルドの進捗状況を確認する

しばらくするとアイコンが青色から緑色のものに変わります。この状態でビルド成功となります。

  • ビルド成功後の進捗状況を確認する

    ビルド成功後の進捗状況を確認する

ビルドが成功したことを確認したら、次はデプロイの状況を確認します。「Pipelines」のサブメニューから「Releases」を選択します。

  • Azure Pipelinesでデプロイの進捗状況を確認する

    Azure Pipelinesでデプロイの進捗状況を確認する

こちらも「Builds」同様に、デプロイの実行中は青色のアイコンが表示されています。しばらく待ち、緑色のアイコンに変わりデプロイが成功することを確認します。

デプロイの成功まで確認ができたら、Webページを更新してトップページのメッセージが変更されていることを確認しましょう。

  • デプロイされたWebサイト

    デプロイされたWebサイト

このように、ちょっとした修正であればAzure DevOpsのダッシュボード上での操作に完結して簡単に行えることが理解できたかと思います。

まとめ

今回はAzure DevOpsおよびDevOpsの概要について説明し、非常に単純な例ではあるものの実際に手を動かしながら確認することで、Azure DevOpsの世界観に触れました。 次回以降では、Azure DevOpsの主要5サービスのそれぞれについて、より詳細に説明していく予定です。

WINGSプロジェクト 秋葉龍一著/山田祥寛監修
<WINGSプロジェクトについて>テクニカル執筆プロジェクト(代表山田祥寛)。海外記事の翻訳から、主にWeb開発分野の書籍・雑誌/Web記事の執筆、講演等を幅広く手がける。一緒に執筆をできる有志を募集中