しばやん雑記

Azure とメイドさんが大好きなフリーランスのプログラマーのブログ

Project Volterra 改め Windows 開発キット 2023 を購入した

Build 2022 で発表されてから音沙汰がなかった Windows on ARM 開発 PC である Project Volterra ですが、突然 Windows 開発キット 2023 として発表されて、なんと日本でも発売が開始されたので購入しました。

こういった開発者向けデバイスが最初から日本でも発売されるのは珍しい予感です。

日本の Microsoft Store では価格を巡って混乱がありましたが、どうせキャンセルされると分かり切っていたので、正規の料金になったタイミングで購入したところあっという間に届きました。

あくまでも開発者向けという扱いにいるので外箱は段ボールそのままでしたが、本体は Surface と同様に質感が高く、コンシューマ向けにもそのまま発売して問題ないレベルだと感じています。

スペックについては以下の公式ドキュメントに一通りまとまっていました。最新の Windows 向け Snapdragon 8cx Gen 3 に 32GB LPDDR4x、そして 512GB NVMe SSD からは開発者向けなのを感じます。

Mini DisplayPort よりも USB-C 経由のディスプレイ出力の方が、HBR3 をサポートしているので高解像度に対応していますが、UEFI 周りで少し挙動が異なっているので注意が必要だと感じます。

Build 2021 で発表された Snapdragon Developer Kit for Windows は CPU とストレージは遅く、メモリは少ないという代物で C++ コードのビルドは無理という状態でしたが、Windows 開発キット 2023 では余裕です。

自称 Windows on ARM エンスージアストとしての活動として、メジャーな OSS ライブラリに Windows on ARM のサポートを追加する PR をちょいちょい投げているので、C++ コードのビルド速度は重要です。

完全に余談ですが、直近では OpenCV に対して Windows on ARM のビルドと ARM64 NEON をサポートするパッチを投げたところ、取り込まれて 4.6.0 としてリリースされています。

https://opencv.org/opencv-4-6-0/

今後も Vcpkg 周りで Windows on ARM のビルドをサポートするパッチを投げていければと思っています。

初期セットアップ中に比較的負荷の高い作業として Windows Update と Firmware Update を行いましたが、本体はほんのり温かくなる程度で ARM っぽさを感じました。音がしなかったのでファンレスかと思いましたが、以下の動画で分解されたパーツが紹介されていたので確認したところ、一応ファンは付いていました。

今回はベンチマークを行いませんが、目的が実用的な速度で Windows on ARM 向けアプリの開発とデバッグが行えることなので、そこまでのパフォーマンスを求めていないという事情があります。

しかしデバイスマネージャーは面白かったので簡単に紹介しておきます。特にシステムファームウェアは Surface と名前が付いているので、実質 Surface Pro 9 5G から流用されているのではないかと思います。

Wi-Fi はデバイス名から確認出来るように Wi-Fi 6E に対応しているようですが、例によって日本固有の技適問題によって 6GHz 帯は無効化された状態のようです。技適マークは本体に印字されているので、6GHz 帯の追加対応はほぼ無いと考えておいて良さそうです。

話を戻しますが、開発キットとしてのセットアップを一通り行いました。既に Intel NUC をサンドボックス環境としてリモートデスクトップで使っていますが、今回もリモートデスクトップで画面無しで使います。

Windows on ARM 向けの開発を行うために Visual Studio 2022 Preview をインストールして、ARM64 対応のビルドツールや .NET 7 SDK など一通りセットアップしました。

ARM64 向けで選択できるワークロードはかなり少ないですが、基本はデスクトップアプリケーションの開発が目的なので問題ありませんでした。バージョンを確認すると ARM64 版であることが分かります。

早速ですが GitHub 上で開発している WinQuickLook の次期バージョンを、Windows 開発キット 2023 と Visual Studio 2022 Preview を使って、ARM64 環境下でデバッグ実行を試しておきました。

これまで Visual Studio から ARM64 向けのアプリケーションをデバッグ実行するには、面倒な設定を行ってリモートデバッグを使う必要がありましたが、開発キットのおかげで圧倒的に簡単になりました。

.NET 6 向けに開発しているので x64 環境とそこまで互換性で問題は発生しないのですが、COM Interop などネイティブ連携を利用している場合には、地味に問題となるので実機での動作確認は重要になります。*1

今回 Windows 開発キット 2023 のおかげで ARM64 向け開発ドキュメントを再確認したのですが、エミュレーション向けの ARM64EC と ARM64 を Fat binary としてビルドする ARM64X というものを知りました。

3D 眼鏡での例えは若い人には通じないのではと思いますが、x64 エミュレーションと ARM64EC、そして ARM64X が Windows on ARM の初期にあるとイメージは大きく変わっていたかも知れません。

*1:Microsoft Store の審査プロセスでは ARM64 向け確認をしていない疑惑もある