Azure Developer CLI で GitHub Copilot を使用する

Azure Developer CLI (azd) は GitHub Copilot と統合され、 azd init 中の AI 支援プロジェクト スキャフォールディングと、コマンドが失敗した場合のインテリジェントなエラートラブルシューティングを提供します。

azd initを実行すると、azdは [Set up with GitHub Copilot (Preview)] オプションを表示します。 選択した場合、Copilot はコードベースを分析し、コードの言語、フレームワーク、依存関係に基づいて azure.yaml、インフラストラクチャ テンプレート、デプロイ構成を生成します。 Copilot を利用した init では、新規プロジェクトと既存プロジェクトの両方がサポートされます。

azd コマンドが失敗した場合、azdは Copilot を使用してエラーを分析し、修正プログラムを提案し、必要に応じて自動的に適用できます。

[前提条件]

これらの機能を使用するには、次のものが必要です。

  • azd 1.23.11 以降azd version を実行して確認するか、 azd update して最新の情報を取得します。
  • GitHub Copilot アクセス — アクティブな GitHub Copilot サブスクリプション (個人、ビジネス、またはエンタープライズ)。
  • GitHub CLI (gh)azd は、必要に応じて自動的にログインを確認し、プロンプトを表示します。
  • GitHub CLI (gh) - GitHub CLI をインストールしますazd は、 gh 認証を自動的にチェックし、必要に応じてログインを求めます。

Copilot を使用してプロジェクトを準備し、azd init

次の例では、Copilot を利用した init を使用して、PostgreSQL 依存関係を持つ Express API プロジェクトをスキャフォールディングする方法を示します。

変更を加える前に、フローはプレフライト チェックを実行します。 Git 作業ディレクトリがクリーンであることが確認されるため、コミットされていない作業は危険にさらされません。 また、モデル コンテキスト プロトコル (MCP) サーバー ツールの同意を事前に求めるメッセージが表示されるので、Copilot がアクセスするツールを確認できます。

  1. azd init実行し、[Set up with GitHub Copilot (Preview)]\(GitHub Copilot でセットアップする (プレビュー)\) を選択します。

    azd init
    # Select: "Set up with GitHub Copilot (Preview)"
    
  2. Copilot はプロジェクト構造を調べ、プロジェクト ファイルから Express フレームワークと PostgreSQL の依存関係を検出します。

  3. Copilot は、サービスの適切な host の種類 (containerapp) と language (js) を決定します。

  4. Copilot は、正しいサービス構成で azure.yaml を生成します。

  5. Copilot は、検出された依存関係に基づいて、Azure Container Apps と Azure Database for PostgreSQL 用の Bicep モジュールを作成します。

  6. 生成されたファイルをディスクに書き込む前に確認して承認します。

スキャフォールディングが完了したら、通常どおり azd up 実行してプロジェクトをプロビジョニングしてデプロイします。

azd up

azd up ワークフローの詳細については、「azd up ワークフローの探索」を参照してください。

AI 支援エラーのトラブルシューティング

azd コマンドが失敗した場合、azdは Copilot を使用してエラーを分析し、修正を提案できます。 Copilot では、プロジェクト構成とエラーの詳細を使用して、コンテキスト固有のトラブルシューティングをターミナルで直接提供します。 いくつかの対話型オプションから選択するか、既定の動作を構成するか、Copilot の自動修正と再試行を行うことができます。

Copilot のトラブルシューティング オプション

コマンドが失敗すると、 azd は 4 つのオプションを含む対話型プロンプトを表示します。 方向キーを使用してオプションを選択し、 Enter キーを押します。

  • 説明 — 問題が発生した内容について、プレーンな言語で説明します。
  • ガイダンス - 問題を解決するための詳細な手順を受け取ります。
  • 診断とガイド - 発生した内容、エラーが発生した理由、および修正方法に関するトラブルシューティング手順を取得します。 Copilot に修正プログラムを適用し (承認を得て)、必要に応じて失敗したコマンドを再試行します。
  • Skip — エラーを無視して手動で処理します。
? How would you like to proceed?  [Use arrows to move, type to filter]
> Explain
  Guidance
  Diagnose and Guide
  Skip

Copilot は、プロジェクト構成、失敗したコマンド、エラーの詳細を使用して、状況に固有の提案を提供します。

既定のエラー処理動作を設定する

同じオプションを一貫して使用する場合は、対話型プロンプトをスキップする azd config で既定値を設定します。

azd config set copilot.errorHandling.category troubleshoot

copilot.errorHandling.categoryで使用できる値:

価値 Behavior
explain プレーン言語の説明を自動的に取得します。
guidance ステップ バイ ステップの修正手順を自動的に取得します。
troubleshoot 自動的に診断してガイドします。
fix 修正プログラムを自動的に適用します。
skip Copilot のトラブルシューティングは常にスキップしてください。

自動修正と再試行を有効にして、Copilot が修正プログラムを適用し、失敗したコマンドを自動的に再実行することもできます。

azd config set copilot.errorHandling.fix allow

既定の対話型プロンプトにリセットするには、構成の設定を解除します。

azd config unset copilot.errorHandling.category

Copilot が役立つ一般的な Azure デプロイ エラー

次の例は、一般的な Azure デプロイ エラーと、Copilot によるトラブルシューティングがそれらを解決するのにどのように役立つのかを示しています。

MissingSubscriptionRegistration — リソース プロバイダーが登録されていません

サブスクリプションへの初めてのデプロイは、多くの場合、次の場合に失敗します。

ERROR: deployment failed: MissingSubscriptionRegistration:
The subscription is not registered to use namespace 'Microsoft.App'.

Azure では、特定のリソースの種類を作成する前に、リソース プロバイダーを登録する必要があります。 このコンテナー アプリのデプロイが特定のサブスクリプションの最初のデプロイである場合、 Microsoft.App はまだ登録されていません。 [トラブルシューティング] オプションを使用すると、プロバイダーを登録し、デプロイを自動的に再実行できます。

SkuNotAvailable / OperationNotAllowed — SKU またはクォータの制限

SKU の可用性エラーが発生する可能性があります。

ERROR: deployment failed: SkuNotAvailable:
The requested VM size 'Standard_D2s_v3' is not available in location 'westus'.

または、クオータバリアント:

ERROR: deployment failed: OperationNotAllowed:
Operation results in exceeding quota limits of Core.
Maximum allowed: 4, Current in use: 4, Additional requested: 2.

これらのエラーは、リージョンが容量に制約されているか、サブスクリプションが vCPU の制限に達した場合に一般的です。 Copilot の Explain オプションでは、どの SKU またはクォータがブロックされているかが明確になり、 ガイダンス では、使用可能な代替リージョンまたは仮想マシン (VM) サイズを提案するか、クォータの引き上げを要求する方法を示します。

StorageAccountAlreadyTaken — グローバルに一意の名前の競合

ERROR: deployment failed: StorageAccountAlreadyTaken:
The storage account named 'myappstorage' is already taken.

ストレージ アカウント名は、すべての Azure で一意である必要があります。 Copilot は、Bicep パラメーターまたは azure.yaml 環境変数を一意の名前で更新することを提案します。多くの場合、環境名またはランダムサフィックスを追加してから、デプロイを再試行します。

ヘルプを要求する

Azure Developer CLI のバグの報告、ヘルプの要求、または新機能の提案の方法については、トラブルシューティングとサポートページを参照してください。