実際に Azure Developer CLI を使ってみて良かった点や、参考となるサイトについて纏めます。
Azure Developer CLI とは
Azure Developer CLI (以下、azd
) は、Azure 上でクラウドアプリをビルドするプロセスを高速化するオープンソースツールです。
規定のディレクトリ構造をもつテンプレートプロジェクトを指定して、azd
コマンドを実行することでテンプレートを Azure 上にデプロイできます。
これらのテンプレートは、アプリケーションコード・IaC ファイル(Bicep
or Terraform
)・プロジェクト構造を記述する azure.yaml
ファイルから構成されます。
こちらでは簡単な使い方が紹介されています。
azd
を使うとテンプレートのアプリケーションを簡単かつ再現性のある形でデプロイできます。
やりたいことに近しいプロジェクトのテンプレートを探して、そこから設定変更やソースコードの微修正していくと、開発工数が大幅に削減できます。
Azure/awesome-azdには azd 関連のブログ記事や動画などの情報がまとまっています。
azd
互換なテンプレートは以下のリンクから探せます。
- Awesome AZD Templates Gallery: azd 互換なテンプレートが検索可能なサイト
- Azure Developer CLI templates: GitHub で
Azure Developer CLI templates
topic がついているもの
Azure Developer CLI のハンズオン
ハンズオンといってもツールのインストールとコマンドの実行だけなので数分で完結します。
まずは azd
をインストールします。
Azure Developer CLIをインストールする (プレビュー) を参考に、開発環境の OS に応じたインストール手順を実行し、azd
コマンドが通ることを確認してください。
たとえば Linux/macOS の場合は以下のコマンドでインストールできます。
$ curl -fsSL https://aka.ms/install-azd.sh | bash
次に azd
コマンドを使って Azure にログインし、認証情報を取得します。
以下のコマンドを実行するとブラウザからログインできます。
$ azd login
Logged in to Azure.
適当なテンプレートを指定して azd
で Azure にデプロイします。
ここでは Azure-Samples/todo-nodejs-mongo-terraform を指定します。
azd up
でプロジェクトの初期化、プロビジョニング、デプロイを実行します。
$ azd up --template todo-nodejs-mongo-terraform
Initializing a new project (azd init)
(✓) Done: Initialized git repository
(✓) Done: Downloading template code to: ...
? Please enter a new environment name: handson_test
? Please enter a new environment name: handson_test
? Please select an Azure Subscription to use:
? Please select an Azure location to use: 9. (Asia Pacific) Japan East (japaneast)
Provisioning Azure resources (azd provision)
Provisioning Azure resources can take some time
...
--template
の指定方法は、Azure-Samples/
配下のサンプルであれば上記のようにリポジトリ名だけで実行できます。また、https://github.com/Azure-Samples/todo-nodejs-mongo-terraform
のように URI をフルで指定もできます。
なお、azd up
は以下のコマンドを個別に実行することと等価です。
$ azd init
$ azd provision
$ azd deploy
公式の VS Code extension もあるので、VS Code 上の操作で azd
の各種コマンドを実行できます。
何が嬉しいのか
今時、新規プロジェクト立ち上げようとすると、CI/CD pipeline、dev container、vscode 設定、linter/formatter、IaC など、やることが多いです。
ほとんどの作業は定型的な作業ではあるので、この辺を丸っと抽象化して適切なデフォルト設定をテンプレート側で与えてくれる点が嬉しいポイントです。
テンプレートを取っ掛かりにして、必要な変更をソースコードに入れたり、設定値をチューニングするだけでやりたいことに早く近づけます。
今後さらに azd 互換なテンプレートが増えればその勢いは増していきます。
この手の scaffolding ツールは既に世の中にあり、template repo を fork したり cookiecutter を使うのとほぼ等価ではあります。が、以下の点が azd
ならではのメリットです。
- 利用者は CLI で完結して作業できる
- テンプレートのディレクトリ階層の規約があるので利用者の認知負荷が低い
Azure/reliable-web-app-pattern-dotnet のように production grade なものも開発されています。
Azure ユーザーの生産性を向上させるエコシステムの発展が、より多くのことを少ない手間で実現するための一助になるのではと期待しています。
TODO
azd 互換プロジェクトの作成
azd
conventionsに従ってプロジェクトを作成します。
azd に contribute する
CLI と extension は monorepo 構成でAzure/azure-devにて開発されています。 extension は TypeScript、azd 本体は Go で書かれています。