SB C&Sの最新技術情報 発信サイト

C&S ENGINEER VOICE

SB C&S

概念的に理解するAzure Developer CLI

パブリッククラウド
2025.03.10

みなさんこんにちは。

Microsoft Learnでは開発者のためにサンプルがさまざま公開されており、新しく提供されたサービスや新機能の確認のためサンプルを活用しているという方もいらっしゃるかと思います。

Microsoft 開発者ツールのサンプル コード
https://learn.microsoft.com/ja-jp/samples/browse/

こちらでAzureに関するサンプルを探すことも可能です。 サンプルで扱われるAzureリソースや言語などは個々に異なりますが、サンプルを眺めていると「Azure Developer CLI」という言葉をよく目にします。

Azureを操作するためのコマンドラインツールである「Azure CLI」と名前が似ていますが、Azure Developer CLIAzure CLIとは全く異なるものです。 以前にご紹介したBicepと同様、概要を知っておくだけでもキャッチアップに役立つことがあるかもしれません。

Azure Developer CLIを利用するにはBicep(またはTerraform)やアプリに関連した知識が必要ですが、今回は「手っ取り早くAzure Developer CLIの概要や仕組みを把握したい」という方向けに概念的な内容を中心にご説明します。

BicepAzureリソースを扱うためのツール(言語)です。 ご説明の都合上、一部Bicepに関する記述がございます。 よろしければBicepの初歩的な内容をご紹介した以前のブログ記事もご覧ください。

 

Azure Developer CLIとは

Azure Developer CLI (azd)Azureにおけるリソース作成やアプリのデプロイを一貫して行うことができるツールです。 GitHub ActionsAzure Pipelinesを使ったCI/CD統合も可能です。 Azureリソース管理のツールとしてBicep以前のブログ記事でご紹介しましたが、azdはリソース作成だけではなくアプリのデプロイやCI/CD統合も扱えるという特徴があります。 また、Bicepではこちらで説明されているようにプレビューならびにGAとなったリソースが全てサポートされますが、azdを使ってアプリのデプロイを行う場合には、アプリをホストするAzureリソース言語・フレームワークがそれぞれazdでサポートされているかどうかを確認する必要があります。

azdのインストール方法はMicrosoft Learn に掲載されています。 Windows / Linux / Mac / Dev Containerのそれぞれでインストール手順が説明されていますので、ご利用の環境に合ったものをご確認ください。 また、各種開発環境のサポート状況についてはこちらをご参照ください。

 

azdテンプレートとは

azdを扱う上では「テンプレート」という概念を理解しておく必要があります。 azdではデプロイするリソースやアプリケーションのコードなどをテンプレートとして扱います。 テンプレートは新規に作成することも可能ですし、既存のテンプレートを利用することも可能です。  初めてazdに触れる場合は、既存のテンプレートで簡単なものを探して触れてみるのもよいでしょう。

以下のコマンドを実行すると既存のテンプレートを探すことが可能です。

Azure Developer CLI
azd template list

azd_1-1.png

このテンプレート一覧は「azd テンプレートソース」をもとに表示されています。 以下のコマンドでテンプレートソースを確認することが可能です。 テンプレートソースは既定で「Awesome AZD」が登録されています。

Azure Developer CLI
azd template source list

azd_1-2.png

Locationにはテンプレートソースの場所が表示されており、このJSONファイルには利用できるテンプレートの名前やソースコードへのパスなどが記述されています。

テンプレートソースは追加・削除が可能です。 詳細についてはこちらをご参照ください。

 

テンプレートの構造を確認

テンプレートの構造を確認するために、ここでは既存のテンプレートではなく新規にテンプレートを作成してみます。 はじめに以下のコマンドでプロジェクトを初期化します。(ここではVisual Studio Codeのターミナルでコマンドを実行しています。)

Azure Developer CLI
azd init

"Create a minimal project"を選択します。

azd_2-1.png

任意の環境名を入力します。 azd_2-2.png

これで最小構成のテンプレートができました。

.azure」にはAzureの構成や環境に関する情報が含まれます。(環境変数が「.env」ファイルに格納され、先程入力した環境名がAZURE_ENV_NAMEとして扱われています。) azd_2-3.png

infra」フォルダにはインフラの定義を含めます。 自動的にBicepファイル「main.bicep」が作成されますが、BicepではなくTerraformを利用することも可能です。「main.bicep」にはリソースグループの定義が存在しています。
azd_2-4.png
例えばAzure App Serviceなどリソースの定義を加えることが可能です。(以下はAzure App Service に関する定義をBicepモジュールとして扱っている例です。)
azd_2-5.png初期状態ではアプリのコードが含まれていないため、新しくフォルダを作成してコードを追加することで、インフラの作成に加えてアプリのデプロイも行うことが可能です。 例としてここでは「src」フォルダを作成してアプリのコードを追加しました。(内容はFlaskを使用したごく簡単なPythonのコードです。)
azd_2-6.png次に、インフラとアプリのコードを関連付ける必要があります。 このためには構成ファイルである「azure.yaml」を利用します。
azd_2-7.png
src」フォルダのコードをAzure App ServiceWebアプリとしてデプロイしたい場合、「azure.yaml」へ以下のように記述を追加します。

YAML
services:
  web:
    language: py
    project: ./src
    host: appservice

azd_2-8.pngこちらは「web」というサービスがあり、Python (language: py)によるソースコードが 「./src」に格納されているということを示しています。さらに、このサービスはAzure App Service (host: appservice)でホストされるという指定になっています。(azure.yamlの詳細についてはこちらをご参照ください。)

なお、azdではリソースのazd-service-nameタグの値を目印にコードをデプロイするリソースが特定されます。 上記の例の場合、アプリのデプロイ先であるWebアプリのリソース定義(「infra」内のBicepファイルにおけるリソース定義)にタグを指定しておきます。

Bicep
resource webApp 'Microsoft.Web/sites@2024-04-01' = {
  name: webAppName
  location: location
  tags: { 'azd-service-name' : 'web' }
  ...
}

 

リソース作成とアプリのデプロイ

テンプレートを利用したリソースの作成、アプリケーションのデプロイの様子をご紹介します。 まずは以下のコマンドでAzureへログインします。

Azure Developer CLI
azd auth login

azd_3-1.png

以下のコマンドを実行するとAzureリソースの作成とアプリケーションのデプロイが行われます。

Azure Developer CLI
azd up

利用するAzureサブスクリプションや場所が問われた場合は適宜選択し、完了までしばらく待機します。 途中でURLが提示されますので、こちらでデプロイの状況を確認することも可能です。
azd_3-2.png

コマンド実行完了後にAzure Portalを開くと、以下のように新しいリソースグループとAzure App Serviceに関するリソースが作成されていることが確認できます。
azd_3-3.png
Webサイトにアクセスして動作を確認してみます。
azd_3-4.png

azdで後片付け

azdで作成したリソースは以下のコマンドで削除が可能です。

Azure Developer CLI
azd down

続行するか問われた際は「y」を入力すると削除が行われます。
azd_4-1.pngazd_4-2.png
なお、Azureからログアウトする場合は以下のコマンドを実行します。

Azure Developer CLI
azd auth logout

azd_4-3.png

 

既存テンプレートに関する補足

前述の通り既存のazdテンプレートを利用することも可能です。 既存テンプレートをプロジェクトに合うようにカスタマイズすることで、ゼロから構築しなくてよくなる場合もあります。 ただし既存テンプレートを利用する際にはMicrosoft Learnに記載のガイドラインをよく理解することが大切です。 ガイドラインにはMicrosoft社が提供するテンプレートについて保証がされないということも記載されています。 従って、利用にあたってはテンプレートの中身をユーザーが十分に確認しなくてはなりません。 また、既存テンプレートの作成者がMicrosoft社でない場合もあります。 既存テンプレートを利用する際には著作権者やライセンスなども確認しておきましょう。 これらを踏まえ、テンプレートの適切な活用をご検討ください。

 

まとめ

今回はAzure Developer CLI  (azd)の基礎的な情報をご紹介しました。 azdを使用することで、インフラの定義とアプリのコードを一元的に管理することが可能です。 検証など使用したリソースやアプリをテンプレートとして持っておき、また環境を再現したくなった場合にazd upを実行すればよいというのは嬉しいポイントです。 今回は割愛いたしましたが、CI/CD の定義を格納するといった使い方も可能です。 詳細についてはこちらをご参照ください。

なお、今回はazd initで初期化したプロジェクトにごく簡単なWebサイトのコードを追加する例をご紹介しましたが、既に何らかコードが存在している場合には、そちらを使いつつテンプレートを初期化する方法もございます。 この方法はMicrosoft Learnでは「現在のディレクトリのコードを使用する」アプローチと呼ばれています。

さらに、よりさまざまなリソースを扱ったクイックスタートがMicrosoft Learnにて公開されています。 冒頭でもご紹介しました通り、Azureのサンプルがazdテンプレートとして公開されているケースもあります。 azdの基本的な仕組みを理解しておくとAzureのキャッチアップが楽になる場合もあるかもしれません。 既存テンプレートに触れてみたり、本ブログ記事でご紹介したようにテンプレートを自作してみたりと、一度お試しいただければ幸いです。

 

 


Azureを取り扱われているパートナー企業様へ様々なご支援のメニューを用意しております。 メニューの詳細やAzureに関するご相談等につきましては以下の「Azure相談センター」をご確認ください。

Azure相談センター
https://licensecounter.jp/azure/


※ 本ブログ記事は弊社にて把握、確認された内容を基に作成したものであり、サービス・製品の動作や仕様について担保・保証するものではありません。サービス・製品の動作、仕様等に関しては、予告なく変更される場合があります。

Azureに関するブログ記事一覧はこちら

著者紹介

SB C&S株式会社
ICT事業本部 技術本部 第1技術部 4課
中原 佳澄