ニュース

Windowsアプリの開発・配布CLIツール「winapp」、「Windows Sandbox」に対応

「Native AOT」アプリの1コマンド実行、「.NET 10」の単一ファイル機能などもサポート

「Windows App Development CLI」(winapp)

 米Microsoftは9月25日(米国時間)、「Windows App Development CLI」(winapp)のv0.7.0の新機能を発表した。「GitHub」でホストされているオープンソースのコマンドラインツール(ライセンスは「MIT」)で、パッケージングや署名、マニフェストの生成など、Windowsアプリの開発・公開に必要なツールを単一のコマンドにまとめたものだ。現在はパブリックプレビューの段階で、「WinGet」や「npm」からインストールできる。

 v0.7.0の主な新機能は、以下のとおり。

  • 「Windows Sandbox」での実行:アプリを、ホストにインストールせずに「Windows Sandbox」内で実行・デバッグ・UI操作できる
  • 「Native AOT」アプリの実行:「Native AOT」アプリのビルドから、パッケージIDを付けた起動までを1コマンドで実行できる
  • プロジェクトからのパッケージ化:「.NET」プロジェクトから、ビルドや発行を別途実行せずにパッケージ化できる
  • 単一ファイルのアプリ:単一の「.cs」ファイルを、パッケージIDを付けて実行できる
  • winapp find-api:プロジェクトが参照しているAPIの型やメンバーを検索できる
  • 「Reactor」(MVU)テンプレート:XAMLを使わない、C#のみのWinUIアプリを作成できる(試験的機能)
  • UIオートメーションの強化:スコープや型を指定した、より精密な要素の検索に対応

 目玉となるのは、「Windows Sandbox」での実行だ。「winapp run」に「--on sandbox」オプションを付けると、ホスト側でビルドしたアプリが“永続的”な「Windows Sandbox」インスタンスに展開され、その中で登録・起動・ユーザーインターフェイス(UI)の操作などが行われる(その間、「Windows Sandbox」インスタンスは維持され、使いまわされる)。

 つまり、デバッグアプリ(やその実行に必要なランタイムなど)がホストにインストールされることがないため、開発を行っているホスト環境が汚されることがない。また、UIの自動テストでホスト環境での開発作業が妨げられることもなくなる。ゲストの状態確認、ファイルの転送、コマンド実行、デスクトップ全体のスクリーンショットや録画を行う「winapp target」コマンド群も追加された。

 「Native AOT」(Native Ahead-Of-Time)は、中間言語(IL)コードを実行時にJITコンパイルする代わりに、発行時にネイティブコードへ事前コンパイルする手法。「winapp」もこれに対応しており、x64/ARM64プロジェクトで利用可能。プロジェクトに「PublishAot」を設定して「winapp run . --aot」を実行すると、「dotnet publish」の実行から、パッケージIDを付けた起動までを一度に行えるほか、「winapp pack」で「.csproj」を指定すれば、ビルド、パッケージ化、署名(「--cert」指定時)をまとめて実行できる。

 そのほかにも、「.NET 10」の単一ファイル機能(プロジェクトファイルなしで「.cs」ファイルを実行)がサポートされた。「winapp run counter.cs」のように実行すると、「Package.Current」やアプリ通知、「ApplicationData」、オンデバイスAIなどが利用できる。