次の方法で共有


チームのカスタマイズを構成する

Microsoft Dev Box カスタマイズ機能を使用して、クラウドベースの開発環境の設定を効率化します。 新しいプロジェクトを開始したり、新しいチームに参加したりすると、複雑で時間がかかる場合があります。 チームのカスタマイズでは、イメージ定義ファイル (imagedefinition.yaml) を使用して、ツールのプレインストール、リポジトリの複製、プール内のすべての開発ボックスの設定を行います。 チームのカスタマイズにより、管理者は、アプリ、ツール、リポジトリ、コード ライブラリ、パッケージ、ビルド スクリプトを使用して、すぐにコードを記述できるワークステーションを提供できます。 この記事では、Visual Studio Code で開発ボックスのイメージ定義ファイルを作成、テスト、編集する方法について説明します。

Dev Box では、2 つの方法でカスタマイズを使用できます。 チームのカスタマイズにより、チームの共有構成が作成されます。 ユーザーのカスタマイズにより、 個々の開発者向けの個人用構成が作成されます。 次の一覧は、これらのカスタマイズの種類の違いをまとめたものです。

  • チームのカスタマイズ: 一度定義すれば、カタログ内の imagedefinition.yaml を介してプール内のすべての開発ボックスに適用されます。
  • ユーザーのカスタマイズ: ボックスの作成時にアップロードされた個人用 YAML は、その 1 つのボックスにのみ影響します。
  • 一貫性とコンプライアンスのために team を使用し、個人の好みに合わせるために user を使用します。

詳細については、「Microsoft Dev Box のカスタマイズ」をご覧ください。

次の手順に従って、チームのカスタマイズを構成します。

Microsoft Dev Box でのチーム カスタマイズの 5 段階のワークフローを示す図。

[前提条件]

Product Requirements
Microsoft Dev Box - 開発ボックスを作成できるように、 デベロッパー センターを設定し、開発ボックス プールと開発ボックス プロジェクト を構成します。
- イメージ定義ファイルで使用できるタスクを含むカタログを、デベロッパー センターにアタッチします。 カタログがない場合は、「 GitHub または Azure Repos からカタログを追加して構成する」を参照してください。
- アクセス許可
- 開発ボックスを作成するには: 少なくとも 1 つのプロジェクトの Dev Box Users セキュリティ グループに参加します。
- デベロッパー センターのプロジェクト レベルのカタログを有効にするには: サブスクリプションに対する書き込みアクセス権を持つプラットフォーム エンジニア。
- プロジェクトのカタログ同期設定を有効にするには: サブスクリプションに対する書き込みアクセス権を持つプラットフォーム エンジニア。
- プロジェクトにカタログをアタッチするには: プロジェクトに対するデベロッパー センター プロジェクト管理者または共同作成者のアクセス許可。
Visual Studio Code - 最新バージョンをインストールする

イメージの定義を作成する

チームが必要とするツール、パッケージ、構成を定義するには、開発ボックス環境に必要なタスクを一覧表示する YAML 形式のイメージ定義ファイルを作成します。

カスタム タスクに組み込みタスクまたはカタログを使用する

タスクは、組み込みのプリミティブ (WinGet、PowerShell、Git-Clone) またはデベロッパー センター プロジェクトにアタッチするカタログから取得される再利用可能なアクションです。 カスタマイズのニーズとプロジェクトの要件に最も適したソースを選択します。

  • WinGet、PowerShell、Git-Clone 組み込みタスクを使用します。 Dev Box デベロッパー センターでは、PowerShell タスクと WinGet タスクがすぐにサポートされます。 カスタマイズに PowerShell、WinGet、または Git-Clone のみが必要な場合は、これらの組み込みタスクを開始し、イメージ定義ファイルを作成できます。 詳細については、「 イメージ定義ファイルの作成」を参照してください。

    Important

    WinGet 組み込みタスクは、WinGet 実行可能ファイルと同じではありません。 WinGet 組み込みタスクは、PowerShell WinGet コマンドレットに基づいています。

  • カタログを使用してカスタム タスクを定義します。 独自のカスタム タスクを作成します。 組織全体でカスタム タスクを使用できるようにするには、カスタム タスク定義を含むカタログをデベロッパー センターにアタッチします。 Dev Box では、Azure Repos と GitHub カタログがサポートされています。 タスクはデベロッパー センターでのみ定義されるため、タスクとイメージ定義を別々のリポジトリに格納します。

    カスタム タスクの定義の詳細については、「Dev Box カスタマイズのタスクを構成する」をご覧ください。

Dev Box では、GitHub Copilot エージェント モードを使用したエージェント ワークフローがサポートされています。 自然言語プロンプトを使用して、イメージ定義ファイル (imagedefinition.yaml) を生成します。 GitHub Copilot を使用すると、YAML ファイルを手動で作成する代わりに、ニーズを会話形式で記述できるため、Dev Box 環境を簡単に設定できます。

Dev Box エージェント ワークフローを使用すると、次のことができます。

  • 現在の開発環境を模倣する - 現在のマシンの構成に一致する定義を生成または変更します。
  • リポジトリ コンテキストを使用する - 特定の GitHub リポジトリのコンテキストで定義を作成または変更します。
  • 自然言語命令を使用する - 必要な開発環境を記述してイメージ定義ファイルを生成します。

エージェント ワークフローでは、WinGet、PowerShell、Git-Clone などの Dev Box プリミティブ タスクのみがサポートされます。

イメージ定義ファイルを生成する

  1. Visual Studio Code を開きます。

  2. Dev Box 拡張機能をインストールします。

    拡張機能を開き (Ctrl + Shift + X)、「Dev Box」を検索して拡張機能をインストールします。

    Visual Studio Code の [拡張機能] ウィンドウのスクリーンショット。Dev Box 拡張機能が表示されています。

  3. VS Code で設定された GitHub Copilot 拡張機能をインストールします。

  4. 設定エディターchat.agent.enabled を設定して、エージェント モードが有効になっていることを確認します。 この設定には、Visual Studio Code 1.99 以降が必要です。

  5. VS Code で Copilot Chat を開きます。

    • [ツールの選択]Dev Box ツールが事前に選択されていることを確認します。

      Visual Studio Code の [Copilot Chat] ウィンドウのスクリーンショット。Dev Box ツールが事前に選択されています。

      Visual Studio Code の Copilot Chat インターフェイスのスクリーンショット。

    • [エージェント モード] を選択し、モデル Claude 3.5 Sonnet を選択します。

      Copilot Chat のエージェント モード選択のスクリーンショット。Claude 3.5 Sonnet モデルが表示されています。

  6. 次のような自然言語プロンプトを提供します

    • "この [リポジトリ名] リポジトリで動作するために必要なすべてのツールとパッケージを含む開発ボックスを設定したいと考えています。"

    • "開発ボックスに Visual Studio 2022 Enterprise、Visual Studio Code、Git、.NET SDK 8、Node.js LTS、Docker Desktop をプレインストールし、チームのリポジトリ [URL] を開発ボックスに複製する必要があります。"

    • "現在のマシンにインストールされているすべての開発ツールとパッケージを含む開発ボックスを設定する必要があります。"

    ヒント

    リポジトリのコンテキストで定義を生成する場合は、Visual Studio Code で特定のリポジトリを複製して開きます。

  7. プロンプトに従ってパッケージを構成します。

    • メッセージが表示されたら、[続行] を選択してパッケージのセットアップを続行します。

    • Copilot は imagedefinition.yaml ファイルを生成します。

  8. 追加のプロンプトで改善します。

    • 必要なツールとパッケージがファイルに表示されるまで、エージェントとの対話を続行します。

イメージ定義ファイルをリポジトリにアップロードする

GitHub または Azure Repos リポジトリをカタログとして使用して、開発ボックス プロジェクトからイメージ定義ファイルにアクセスできるようにします。 各プロジェクトには、複数のイメージ定義ファイルを格納するカタログを用意できます。これは、開発者チームのニーズに合わせてプールで構成できます。

使用するイメージ定義ファイルを作成したら、カタログにアップロードします。 次のセクションでは、カタログをプロジェクトにアタッチし、開発ボックス プールを構成するときにイメージ定義を選択できるようにする方法について説明します。

プロジェクト レベルでイメージ定義を構成する

プロジェクトは、Dev Box リソースを効率的に管理するのに役立ちます。 各開発者チームに独自のプロジェクトを割り当てて、リソースを効果的に整理できます。 プロジェクト内で異なる開発チームを対象にするため、各フォルダーに分けて複数のイメージ定義をカタログ リポジトリに作成します。

プロジェクト レベルのカタログを有効にする

プロジェクトにカタログを追加する前に、デベロッパー センター レベルでプロジェクト レベルのカタログを有効にします。 デベロッパー センター レベルでプロジェクト レベルのカタログを有効にするには:

  1. Azure portal で自分のデベロッパー センターに移動します。

  2. 左側のメニューの [設定] で、[デベロッパー センターの設定] を選択します。

  3. [ プロジェクト レベルのカタログ] で、[ プロジェクトごとにカタログを有効にする] を選択し、[ 適用] を選択します。

    [プロジェクト レベル カタログ] ウィンドウが開き、[プロジェクトごとのカタログを有効にする] オプションが選択されているデベロッパー センター設定ページのスクリーンショット。

プロジェクトにカタログを追加する方法の詳細については、「 GitHub または Azure Repos からのカタログの追加と構成」を参照してください。

プロジェクトのカタログ同期設定を構成する

カタログからイメージ定義を同期するためのプロジェクトを設定します。 この設定により、カタログのイメージ定義を使用して開発ボックス プールを作成できます。

  1. Azure portal にサインインします。

  2. 検索ボックスに「プロジェクト」と入力します。 結果一覧から、[プロジェクト] を選択します。

  3. カタログ同期設定を設定する Dev Box プロジェクトを開きます。

  4. [カタログ] を選択します。

  5. 同期設定を選択します。

    [同期] 設定のボタンが強調表示された Azure portal の [カタログ] ペインのスクリーンショット。

  6. [同期設定] ウィンドウで [イメージ定義] を選択し、[保存] を選択します。

    Azure portal の [同期設定] ウィンドウのスクリーンショット。イメージ定義のチェック ボックスが強調表示されています。

イメージ定義ファイルを含むカタログをアタッチする

イメージ定義ファイルを使用するには、そのファイルを含むカタログをプロジェクトにアタッチします。 これにより、開発ボックス プールを構成するときにイメージ定義を選択できるようになります。

[イメージ定義] ウィンドウには、プロジェクトで使用できるイメージ定義が表示されます。

プロジェクトで使用できるイメージ定義を示す Azure portal ウィンドウのスクリーンショット。

カタログをアタッチする方法については、「GitHub または Azure Repos からカタログを追加して構成する」をご覧ください。

イメージ定義を使用するように開発ボックス プールを構成する

イメージ定義ファイルを使って開発ボックス プールをセットアップし、開発チームがカスタマイズを利用できるようにします。 イメージ定義ファイルを、プロジェクトにリンクされたリポジトリにカタログとして格納します。 このファイルをプールのイメージ定義として指定すると、カスタマイズが新しい開発ボックスに適用されます。

開発ボックス プールを作成し、イメージ定義を指定するには、次の手順に従います。

  1. Azure portal にサインインします。

  2. 検索ボックスに「プロジェクト」と入力します。 結果一覧から、[プロジェクト] を選択します。

  3. 新しい開発ボックス プールを関連付ける Dev Box プロジェクトを開きます。

  4. [開発ボックス プール] を選択してから、[作成] を選択します。

  5. [開発ボックス プールの作成] ペインで、次の値を入力します。

    設定 価値
    名前 プールの名前を入力します。 プール名は、開発者が開発ボックスを作成するときに表示されます。 これは、プロジェクト内で一意にする必要があります。
    定義 このボックスに、アクセス可能なカタログと開発ボックスの定義からのイメージ定義が一覧表示されます。 イメージ定義ファイルを選択します。
    ネットワーク接続 [Microsoft ホステッド ネットワークにデプロイする] を選択するか、既存のネットワーク接続を使用します。
    シングル サインオンを有効にする [はい] を選択して、このプール内の開発ボックスにシングル サインオンできるようにします。 組織に対してシングル サインオンを設定する必要があります。 詳細については、「開発ボックスのシングル サインオンを有効にする」を参照してください。
    Dev box Creator Privileges (開発ボックス作成者の特権) [ローカル管理者] または [標準ユーザー] を選択します。
    自動停止を有効にする [はい] が既定値です。 自動ストップ スケジュールをオフにするには、[いいえ] を選択します。 プールの作成後に自動ストップ スケジュールを設定できます。
    停止時刻 プール内のすべての開発ボックスを停止する時間を選びます。
    タイム ゾーン 停止時間のタイム ゾーンを選びます。
    ライセンス このプール内の開発ボックスに適用する Azure ハイブリッド特典ライセンスが組織にあることを確認するには、このチェック ボックスをオンにします。

    開発ボックス プールを作成するためのウィンドウを示すスクリーンショット。

  6. を選択してを作成します。

  7. 新しい開発ボックス プールがリストに表示されることを確認します。 場合によっては、画面を最新の情報に更新する必要があります。

開発者ポータルを使用して開発ボックスを作成する

イメージ定義ファイルのカスタマイズが適用されていることを確認するには、Dev Box 開発者ポータルで開発ボックスを作成します。 「クイック スタート: Dev Box 開発者ポータルを使用して開発ボックスを作成して接続する」の手順に従います。 次に、新しい開発ボックスに接続し、カスタマイズが期待どおりに動作することを確認します。

イメージ定義ファイルを変更し、新しい開発ボックスを作成してテストします。 カスタマイズが正しいことを確認したら、再利用可能なイメージをビルドします。

Dev Box のカスタマイズでモジュール式のスクリプトとファイルを使用する

PowerShell スクリプト、Desired State Configuration (DSC) ファイル、構成ファイル、テキスト ファイル、イメージなどのモジュール形式のスクリプトとファイルは、共有カタログに格納できるため、複数のイメージ間で Dev Box のカスタマイズを再利用して標準化できます。

これらは、次の目的で設計されています。

  • 複数の Dev Box セットアップ間で再利用を促進する
  • 重複とメンテナンスのオーバーヘッドを削減する
  • 一貫性のある構成プラクティスを有効にする

カタログの構造

imagedefinition.yaml と同じフォルダー内のファイル、またはそのサブフォルダー内のファイルは、作成時に開発ボックスにコピーされます。 これらのファイルは、カスタマイズ タスクを実行するときに使用できます。

次の図は、Dev Box のカスタマイズにおけるモジュール型スクリプトとファイルのカタログ構造を示しています。

イメージ定義フォルダー、Frontend-imagedef および backend-imagedef サブフォルダー、スクリプトとファイルのサブフォルダーを含むカタログ構造を示す図。

最上位レベルには、 イメージ定義 フォルダーがあります。 内部には、 frontend-imagedef や backend-imagedef などのイメージ 定義サブフォルダー があります。 frontend-imagedef フォルダーには、PowerShell スクリプト ファイルがあります。 backend-imagedef フォルダーには、DSC ファイルを含むサブフォルダーが含まれています。 どちらの構造を使用しても、スクリプトやその他のファイルを格納できます。

モジュール式のスクリプトまたはファイルを参照する

イメージ定義ファイルは、システム コンテキストで実行される タスク と、新しい開発ボックスでの最初のサインイン後に実行される userTasks の一覧をユーザー コンテキストで設定します。 タスクの表示名を使用して、各タスクの目的を明確にします。 イメージ定義ファイルで、実行するモジュールスクリプト、または含めるファイルを参照します。


$schema: "1.0"
name: "modular-script"
image: microsoftvisualstudio_visualstudioplustools_vs-2022-ent-general-win11-m365-gen2
description: "This definition shows examples of referencing PowerShell scripts and DSC configuration files."

tasks:
  - name: ~/powershell
    displayName: "Modular Script"
    parameters:
      script: C:\ProgramData\Microsoft\DevBoxAgent\ImageDefinitions\catalog-name\modular-script\contoso.ps1
  - name: ~/winget
    displayName: "Install VS Code"
    parameters:
      configurationFile: C:\ProgramData\Microsoft\DevBoxAgent\ImageDefinitions\catalog-name\modular-script\contoso.dsc.yaml

userTasks:
  - name: ~/winget
    displayName: "Install Insomnia"
    parameters:
      configurationFile: C:\ProgramData\Microsoft\DevBoxAgent\ImageDefinitions\catalog-name\modular-script\contoso-user.dsc.yaml

Dev Box は、すべてのタスクが組み込み (PowerShell や WinGet など) またはデベロッパーセンター レベルで使用可能なタスクを参照していることを検証します。 すべてのイメージ定義ファイルが、関連するタスク ファイルと共に、新しい開発ボックスのセット ディレクトリにダウンロードされます。 次に、ダウンロードしたタスク ディレクトリ内の各タスクを実行し、完了時にタスクの状態をアップロードします。

次のステップ

開発チームの開発ボックスを構成して作成するイメージ定義ファイルが作成されたので、デベロッパー センター イメージングを使用して開発ボックスの作成時間を最適化する方法について説明します。