Azure Developer CLI(azd)が、バージョン1.23.11からGitHub Copilotと統合されました。

Azureへのデプロイで手が止まりがちな場面が2つあります。「インフラ構成ファイルを一から書く初期設定」と「エラーメッセージを調べてコマンドを打ち直す繰り返し」です。azdとGitHub Copilotの統合は、この両方を端末内で完結させます。

この記事でわかること:

  • azd initでコードからインフラ構成を自動生成する手順
  • デプロイ失敗時にCopilotが提示する4つの選択肢と使い分け
  • よく遭遇するAzureエラーをCopilotがどう解決するか
  • デフォルト動作をカスタマイズする設定方法

https://devblogs.microsoft.com/azure-sdk/azd-copilot-integration/

azd initがコードを読んでインフラ構成を生成する

azd initを実行すると、「Set up with GitHub Copilot (Preview)」という選択肢が表示されます。これを選ぶと、Copilotがプロジェクトのコードを解析し、azure.yamlとBicepのインフラテンプレートを自動生成します。

従来の手順と比べると、手間の差は明確です。たとえばExpress APIにPostgreSQLを使うNode.jsアプリをAzureにデプロイする場合、これまでは次の作業が必要でした。

  • ドキュメントを参照して適切なホスト種別(Container Apps・App Service・Functionsのどれか)を判断する
  • azure.yamllanguagehostbuildを正しく記述する
  • アプリ用・データベース用・ネットワーク用のBicepモジュールを手書きする

Copilot統合では、ExpressフレームワークとPostgreSQLの依存関係を検出し、Azure Container Apps用のBicepモジュールとAzure Database for PostgreSQL用のBicepモジュールを生成します。変更内容はディスクへの書き込み前にレビューと承認が求められるため、意図しない変更が加わることはありません。

実行コマンドは1行です。

azd init
# 「Set up with GitHub Copilot (Preview)」を選択

Copilotは作業前にgitの作業ディレクトリがクリーンかどうかの確認と、MCP(Model Context Protocol)サーバーへのアクセス同意を求めます。コミットしていない変更があれば先にコミットが必要です。

デプロイエラーに4つの選択肢で対処する

azd provisionazd upが失敗した後、従来の対処フローはこうなります。エラーメッセージをコピーしてドキュメントやStack Overflowで検索し、修正用のAzure CLIコマンドを実行して再デプロイする。このループには時間がかかります。

Copilot統合では、azdコマンドが失敗すると端末上に4つの選択肢が表示されます。

  • Explain — 何が起きたかを平易な言葉で説明する
  • Guidance — 修正手順をステップ形式で提示する
  • Diagnose and Guide — 原因を診断し修正を適用する(承認が必要)。その後、失敗したコマンドを再実行できる
  • Skip — Copilotを使わず自分で対処する

Copilotはプロジェクトの構成・実行したコマンド・エラー詳細を把握した状態で提案するため、汎用的な回答ではなくプロジェクト固有の修正案が出てきます。ブラウザを開く必要はありません。

典型的なAzureエラーをCopilotがどう解決するか

Azureデプロイでよく遭遇するエラーと、Copilotの対処方法を3つ紹介します。

MissingSubscriptionRegistration(リソースプロバイダー未登録)

初めてのサブスクリプションにContainer Appをデプロイすると、Microsoft.Appが未登録で失敗することがあります。Copilotの「Troubleshoot」オプションはプロバイダーの登録を実行し、そのままデプロイを再試行します。

SkuNotAvailable / OperationNotAllowed(SKUまたはクォータ制限)

リージョンのキャパシティ制約やvCPUクォータの上限に達した場合、「Explain」で制限の内容を確認でき、「Guidance」で代替リージョンやVMサイズの候補、クォータ引き上げの手順を提示します。

StorageAccountAlreadyTaken(ストレージアカウント名の重複)

ストレージアカウント名はAzure全体でユニークである必要があります。Copilotは環境名やランダムサフィックスを付加する変更をBicepパラメーターに提案します。

デフォルト動作を設定してプロンプトを省略する

毎回同じ選択肢を選んでいる場合、azd configでデフォルトを固定できます。

# エラー時に自動で診断と修正ガイドを実行する
azd config set copilot.errorHandling.category troubleshoot

# 自動修正と再実行を許可する
azd config set copilot.errorHandling.fix allow

# 設定を元に戻す
azd config unset copilot.errorHandling.category

copilot.errorHandling.categoryに指定できる値はexplainguidancetroubleshootfixskipの5種類です。fix allowを設定すると、Copilotが修正を適用して失敗したコマンドを自動で再実行します。

使用に必要な環境

この機能を使うには次の3つが必要です。

  • azd 1.23.11以降azd versionで確認、古ければazd updateで更新
  • GitHub Copilotのサブスクリプション — Individual・Business・Enterpriseのいずれか
  • GitHub CLI(gh) — azdがログイン状態を自動確認し、未ログインであれば案内が出る

Bicepやazure.yamlの書き方を知らなくても、既存のコードベースからAzureへのデプロイ構成を生成できます。新規プロジェクトを一から立ち上げる場合も同様に、適切なインフラをCopilotが提案します。