Windowsアプリの開発に必要なビルド、パッケージ化、署名などをまとめて扱えるコマンドラインツール「Windows App Development CLI(winapp)」が、バージョン0.7.0で機能を拡充しました。
今回の更新では、アプリをホスト環境にインストールせずに試せる「Windows Sandbox」への対応をはじめ、Native AOTアプリの実行や、.NET 10の単一ファイル機能などが加わっています。
winappは現在パブリックプレビューとして提供されており、GitHubで公開されているオープンソースのツールです。
winapp v0.7.0の主な変更点
winappは、Windowsアプリの開発から公開までに使う複数のツールや工程を、コマンドラインからまとめて実行できるようにする開発者向けツールです。
v0.7.0では、開発・テストの効率化につながる実行環境の拡充に加え、プロジェクトのビルドやパッケージ化を簡略化する機能が追加されました。
| 機能 | 概要 |
|---|---|
| Windows Sandbox実行 | ホストにアプリをインストールせず、Sandbox内で実行・デバッグできます。 |
| Native AOT | 発行からパッケージID付きの起動までをまとめて実行できます。 |
| プロジェクトのパッケージ化 | .NETプロジェクトのビルドや発行を含めて処理できます。 |
| .NET 10の単一ファイル | 単一のC#ファイルをパッケージID付きで実行できます。 |
| API検索・UI自動化 | 参照APIの検索や、UI要素のより精密な指定に対応します。 |
Windows Sandboxでホスト環境を汚さずにテスト
v0.7.0の大きな追加点は、winapp run --on sandboxによって、アプリをWindows Sandbox内で実行できることです。
アプリはホスト側でビルドされた後、Sandboxに展開され、登録や起動、ユーザーインターフェイスの操作が行われます。
このSandboxは実行のたびに破棄される一時環境ではなく、インスタンスを維持して再利用する仕組みです。
そのため、アプリ本体や実行に必要なランタイムをホストへインストールせずに動作を確認でき、開発環境に不要な変更を加えにくくなります。
UIの自動テストをホスト上で実行する場合と比べ、日常の開発作業とテストの干渉を抑えやすい点も利点です。
あわせて追加されたwinapp targetコマンド群では、ゲスト環境の状態確認、ファイル転送、コマンド実行に加え、デスクトップ全体のスクリーンショットや録画も行えます。
Native AOTやプロジェクトのパッケージ化を簡略化
Native AOTは、アプリの中間言語コードを実行時にコンパイルするのではなく、発行時にネイティブコードへ変換する方式です。
winapp v0.7.0ではx64およびARM64のプロジェクトで利用でき、プロジェクトにPublishAotを設定したうえでwinapp run . --aotを実行すると、発行処理からパッケージID付きの起動までをまとめて行えます。
また、winapp packに.csprojを指定すれば、ビルドとパッケージ化を一連の処理として実行できます。
--certを指定した場合は署名もまとめて実行できるため、個別のコマンドを順番に実行する手間を減らせます。
.NET 10の単一ファイル実行にも対応
新たにサポートされた.NET 10の単一ファイル機能では、プロジェクトファイルを用意せず、1つの.csファイルからアプリを実行できます。
たとえばwinapp run counter.csのように指定すると、パッケージIDを付けて起動できます。
単一ファイルであっても、Package.Currentやアプリ通知、ApplicationData、オンデバイスAIなどの機能を利用できるとされています。
小規模な検証や試作でプロジェクト一式を準備する負担を抑えられるため、APIの動作確認や簡単なサンプル作成にも役立ちます。
開発を支援する追加機能
winapp find-apiは、プロジェクトが参照しているAPIの型やメンバーを検索する機能です。
利用可能なAPIを調べる作業をコマンドラインから行えるため、開発中の情報確認を効率化できます。
試験的な機能として、XAMLを使わずC#のみでWinUIアプリを作成する「Reactor(MVU)」テンプレートも加わりました。
UIオートメーションではスコープや型を指定して要素を検索できるようになり、テスト対象のコントロールをより細かく絞り込めます。
導入前に確認したいポイント
winappはパブリックプレビュー段階のため、正式版と同等の安定性や仕様の固定を前提にせず、利用する環境で動作を確かめることが大切です。
インストールはWinGetまたはnpmから行えますが、対応するコマンドや必要な環境の詳細は、利用前に公式GitHubリポジトリで確認してください。
特にSandbox実行やNative AOTは、既存の開発手順やテスト環境に合わせて、小さなプロジェクトから試すと導入時の影響を把握しやすくなります。
まとめ
winapp v0.7.0では、Windows Sandbox内での安全な実行、Native AOTの一括処理、.NET 10の単一ファイル実行など、開発時の手順を短縮する機能が追加されました。
ホスト環境を保ったままテストしたい開発者や、ビルドからパッケージ化までの工程を簡素化したい開発者にとって、試す価値のあるアップデートです。
