3
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

カバー株式会社Advent Calendar 2024

Day 18

Windows Sandboxの利用方法

Last updated at Posted at 2024-12-18

今回はWindows Sandboxと、その活用法について紹介していきます。「過去に使おうとしたが制約が多く断念した」という方にも、近年のバージョンで変わってきた事もありますから、お役に立てるかもしれません。

概要

Windows SandboxはWindows OS Proエディション以上であれば使える仮想化機能の一つです。以下は起動直後のスクショです。
image.png
……単なるWindowsの画面ですが、タイトルバーが見えますね。Sandboxを実行すると、クリーンインストールされたWindows1がかなり早く立ち上がります。
サンドボックスなので、終了すると環境は破棄され、次回起動時はまた真っ新な環境として起動します。

活用例としては、一般的なサンドボックス同様、リスクのあるコマンドやアプリケーションの実行などもありますが、開発環境では汚れがちな環境変数やデバッグランタイムのインストールも無いため、作成したプログラムが自身以外の環境で正常に動作するか確認したり、1から環境構築するドキュメント作成時にシミュレーションやスクショ作成に使ったりもしています。

インストールから起動まで

おもむろにスタートメニューから開いていきましょう。
設定システムオプション機能
image.png
Windows のその他の機能
image.png
Windows サンドボックスにチェックを入れて再起動します。2
image.png

再起動後

スタートメニューの中にアプリケーションの一つとしてインストールされています。クリックで起動します。
image.png

ホストとのファイル共有

タイトルバーの右上にある・・・を押すとメニューが表示され、Share folderを選択するとホストPC側でフォルダ選択が出ますので、そちらで選んだフォルダがサンドボックス環境のデスクトップに出現します。
image.png
こちらはサンドボックス側からも読み書きが出来るフォルダなので注意して下さい。

.wsbファイルの使い方

.wsbファイルは起動パラメータを記述するXMLファイルです。テキストエディタで編集後、ダブルクリックでSandboxが起動します。

my_sandbox.wsd
<Configuration>
</Configuration>

ホストにあるディレクトリのマウント

先にファイル共有の説明しましたが、Sandboxを立ち上げる度にメニューから選択するのは面倒です。そこで.wsbにファイルパスを設定することで、起動のたびに自動的にホストにあるディレクトリをマウントする事ができます。

<Configuration>
  <MappedFolders>
    <MappedFolder>
      <HostFolder>d:\sandbox</HostFolder>
      <SandboxFolder>c:\host_sandbox</SandboxFolder>
      <ReadOnly>true</ReadOnly>
    </MappedFolder>
    <MappedFolder>
      ...
    </MappedFolder>
  </MappedFolders>
</Configuration>

Configurationの子ノードにMappedFolders、さらにその子ノードにMappedFolderを記述して指定することができます。

  • HostFolderにはホスト側からサンドボックスに見せたいディレクトリを記述します
  • SandboxFolderにはサンドボックスのどのパスにHostFolderをマウントするかを記述します
  • ReadOnlytrueに設定することでサンドボックス側から編集出来なくします

その他のパラメータ

大半の機能はデフォルト有効化されているため、アプリケーションのテストとして制限環境の再現や、よりセキュアなサンドボックスの構築に使用しましょう。こちらもConfigurationの子ノードに記述します。多いので、よく使うものを一部だけ紹介します。

GPUの無効化

<vGPU>Disable</vGPU>
GPUを無効化しても画面が映らなくなるといった事はなく、WindowsにはWindows Advanced Rasterization Platformと呼ばれる代替コンポーネントによってCPUが描画を担うため、CUDA(GPGPU)を使ってるでもない限りは、動かなくなるアプリケーションは殆ど無いと思います(逆に言えばそういったプログラムのフォールバックを試せます)

ネットワークの無効化

<Networking>Disable</Networking>
インターネットが繋がらなくなるだけでなく、ネットワークアダプタが一つもない状態になるので、たまに初期化に失敗するアプリケーションが出てきます(アダプタをforして1つ取り出すみたいな処理を書いてる等)

メモリ量の調整

<MemoryInMB>4096</MemoryInMB>
昨今はドライバでも書かない限りはあまり気にする必要は無いですが、Windows 11の最低要件以下(1GBくらいならギリギリ)でも動くので、Out Of Memoryの挙動確認に使うことが出来るでしょう。

起動直後に実行するコマンド

<LogonCommand>
  <Command>c:\host_sandbox\dotnet-sdk-9.0.101-win-x64.exe /install /quiet /norestart</Command>
</LogonCommand>

例として.NET Runtimeのサイレントインストールの例を書いてみました。MappedFoldersで設定されたディレクトリにインストーラーを設置し、サイレントインストールを整備しておけば、Sandboxを起動後に、環境再現あれこれの操作を一々行う必要はありません。
Commandは複数書けますが、.batを指定することもできるので、Sandboxに利用するだけでなく、環境構築は積極的にスクリプト化したいですね。

最後に

他のOSにあるサンドボックス環境同様、Windowsのアプリケーション開発に必要な機能が揃っていると思います。またこの機能がとてもスマートな形で実現されている事がMicrosoft Learnに掲載されていますので、ご興味がある方はぜひご一読下さい。

  1. 以前までは英語版のWindowsが立ち上がっていた為、日本語で起動するのにひと手間必要でしたが、現在のSandboxはデフォルトでホストOSと同じ言語で立ち上がります

  2. 再起動直後のインストールは「機能をカスタマイズしています。」が表示されたまま地味に時間が掛かるのでお気を付け下さい

3
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?