
みなさんこんにちは。
Microsoft Learnでは開発者のためにサンプルがさまざま公開されており、新しく提供されたサービスや新機能の確認のためサンプルを活用しているという方もいらっしゃるかと思います。
Microsoft 開発者ツールのサンプル コード
https://learn.microsoft.com/ja-jp/samples/browse/
こちらでAzureに関するサンプルを探すことも可能です。 サンプルで扱われるAzureリソースや言語などは個々に異なりますが、サンプルを眺めていると「Azure Developer CLI」という言葉をよく目にします。
Azureを操作するためのコマンドラインツールである「Azure CLI」と名前が似ていますが、Azure Developer CLIはAzure CLIとは全く異なるものです。 以前にご紹介したBicepと同様、概要を知っておくだけでもキャッチアップに役立つことがあるかもしれません。
Azure Developer CLIを利用するにはBicep(またはTerraform)やアプリに関連した知識が必要ですが、今回は「手っ取り早くAzure Developer CLIの概要や仕組みを把握したい」という方向けに概念的な内容を中心にご説明します。
※ BicepはAzureリソースを扱うためのツール(言語)です。 ご説明の都合上、一部Bicepに関する記述がございます。 よろしければBicepの初歩的な内容をご紹介した以前のブログ記事もご覧ください。
Azure Developer CLIとは
Azure Developer CLI (azd)はAzureにおけるリソース作成やアプリのデプロイを一貫して行うことができるツールです。 GitHub ActionsやAzure 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に触れる場合は、既存のテンプレートで簡単なものを探して触れてみるのもよいでしょう。
以下のコマンドを実行すると既存のテンプレートを探すことが可能です。
azd template list
このテンプレート一覧は「azd テンプレートソース」をもとに表示されています。 以下のコマンドでテンプレートソースを確認することが可能です。 テンプレートソースは既定で「Awesome AZD」が登録されています。
azd template source list
Locationにはテンプレートソースの場所が表示されており、このJSONファイルには利用できるテンプレートの名前やソースコードへのパスなどが記述されています。
テンプレートソースは追加・削除が可能です。 詳細についてはこちらをご参照ください。
テンプレートの構造を確認
テンプレートの構造を確認するために、ここでは既存のテンプレートではなく新規にテンプレートを作成してみます。 はじめに以下のコマンドでプロジェクトを初期化します。(ここではVisual Studio Codeのターミナルでコマンドを実行しています。)
azd init
"Create a minimal project"を選択します。
任意の環境名を入力します。
これで最小構成のテンプレートができました。
「.azure」にはAzureの構成や環境に関する情報が含まれます。(環境変数が「.env」ファイルに格納され、先程入力した環境名がAZURE_ENV_NAMEとして扱われています。)
「infra」フォルダにはインフラの定義を含めます。 自動的にBicepファイル「main.bicep」が作成されますが、BicepではなくTerraformを利用することも可能です。「main.bicep」にはリソースグループの定義が存在しています。例えばAzure App Serviceなどリソースの定義を加えることが可能です。(以下はAzure App Service に関する定義をBicepのモジュールとして扱っている例です。)
初期状態ではアプリのコードが含まれていないため、新しくフォルダを作成してコードを追加することで、インフラの作成に加えてアプリのデプロイも行うことが可能です。 例としてここでは「src」フォルダを作成してアプリのコードを追加しました。(内容はFlaskを使用したごく簡単なPythonのコードです。)
次に、インフラとアプリのコードを関連付ける必要があります。 このためには構成ファイルである「azure.yaml」を利用します。
「src」フォルダのコードをAzure App ServiceのWebアプリとしてデプロイしたい場合、「azure.yaml」へ以下のように記述を追加します。
services: web: language: py project: ./src host: appservice
こちらは「web」というサービスがあり、Python (language: py)によるソースコードが 「./src」に格納されているということを示しています。さらに、このサービスはAzure App Service (host: appservice)でホストされるという指定になっています。(azure.yamlの詳細についてはこちらをご参照ください。)
なお、azdではリソースのazd-service-nameタグの値を目印にコードをデプロイするリソースが特定されます。 上記の例の場合、アプリのデプロイ先であるWebアプリのリソース定義(「infra」内のBicepファイルにおけるリソース定義)にタグを指定しておきます。
resource webApp 'Microsoft.Web/sites@2024-04-01' = { name: webAppName location: location tags: { 'azd-service-name' : 'web' } ... }
リソース作成とアプリのデプロイ
テンプレートを利用したリソースの作成、アプリケーションのデプロイの様子をご紹介します。 まずは以下のコマンドでAzureへログインします。
azd auth login
以下のコマンドを実行するとAzureリソースの作成とアプリケーションのデプロイが行われます。
azd up
利用するAzureサブスクリプションや場所が問われた場合は適宜選択し、完了までしばらく待機します。 途中でURLが提示されますので、こちらでデプロイの状況を確認することも可能です。
コマンド実行完了後にAzure Portalを開くと、以下のように新しいリソースグループとAzure App Serviceに関するリソースが作成されていることが確認できます。Webサイトにアクセスして動作を確認してみます。
azdで後片付け
azdで作成したリソースは以下のコマンドで削除が可能です。
azd down
続行するか問われた際は「y」を入力すると削除が行われます。なお、Azureからログアウトする場合は以下のコマンドを実行します。
azd auth logout
既存テンプレートに関する補足
前述の通り既存の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課
中原 佳澄