💻

Azure Virtual Machine で Arm CPU な Windows 11 Pro を試す

2024/06/17に公開

Arm 版の Windows の時代がやってくるのか?

先日開催された Microsoft Build 2024 に合わせて、Copilot+ PC が発表され、Microsoft Surface を筆頭にハードウェアベンダー各社から、Arm アーキテクチャの CPU である Qaulcomm Snapdragon X Elite や Plus を搭載した Windows PC が発表されました。Arm アーキテクチャ CPU を搭載した Windows PC は、過去にも Surface WindowsRT 版 (2012年) や Surface Pro X (2019年) がリリースされていますが (他にも開発者向けの Windows DevKit 2023 とか)、当時は結局流行らずに終わった印象があります。しかし今年 2024 年は、もしかしてもしかすると、今後は普通に、x86-64 系の Intel および AMD の CPU と並んで、Arm 系統の CPU の Windows PC も、PC メーカー各社の製品ラインナップに含まれるようになるのかも、と予感させられました。

既存のアプリケーション資産との互換性はどうなの?

しかしそのいっぽうで、Arm 版 Windows の懸念事項としてよく言われるのが、既存のアプリケーションの互換性です。つまり、同じ Windows OS といえども、CPU アーキテクチャが異なるハードウェアでの動作となりますから、これまで x64 アーキテクチャ CPU 用として配付されてきたバイナリは当然、そのままでは Arm アーキテクチャ CPU 上では動作しないわけで、これが既存のアプリケーション資産が使えないのではないかという心配につながっています。

とはいえ、Arm 用 Windows 上では、x64 アーキテクチャのアプリケーションをエミュレーションで動作させる仕組みが備わっており、且つ、そのエミュレーションの処理速度も、かなり高速であると伝え聞いています。しかも昨今は Windows 向け各種アプリケーションも、x64 向けのみならず Arm ネイティブ版のバイナリも同時に配付されることも増えているように聞きます。

ただ、そうは言っても、実際に試してみないことにはわからないことも多いです。しかしだからといって、いきなり Arm 版の Windows PC 実機を購入して試すのも、自分にはその予算と勇気がありませんでした。

Azure Virtual Machine で Arm 版 Windows を試してみよう

そこで思いついたのが、パブリッククラウドサービス上で Arm 版 Windows の仮想マシンを構築し、そこでいくつか自分がよく使うアプリケーションをインストールして試してみる、という方法です。自分はパブリッククラウドサービスとしては Azure を使い慣れているので、Azure の仮想マシンサービスを利用して、Arm 版 Windows の仮想マシンを構築して試してみることにしました。

Azure 上に Arm 版の Windows 仮想マシンを構築する手順については、以下のリンク先が参考になります。

https://learn.microsoft.com/ja-jp/windows/arm/create-arm-vm

自分は上記手順を参考にしつつ、Windows 11 Pro 23H2 のイメージで仮想マシンを構築しました。仮想マシンのサイズは、4 vCPU 16GB RAM としました。なお、仮想マシンの構築にあたっては、適切な Windows の使用ライセンスが必要だったはずです。その点はご注意ください。

ちなみに、この投稿を作成している 2024年6月現在、Azure の Arm 版仮想マシンの CPU は、Qualcomm Snapdragon X ではなく Ampere Altra というプロセッサーであり、Copilot+ PC のような AI 機能を利用することはできません。しかし今回は、そのような新機能を試したいのではなく、あくまでも既存アプリケーションの互換性と使用感を確かめたいだけなので、何ら問題ありません。

実際に試してみた結果

Web アプリ開発用途の多くが Arm ネイティブ対応してた

さて、実際に試してみた結果ですが、まず自分は、C# による Web アプリケーション開発をすることが多いので、その目的で、以下のアプリケーションを、Azure 上の Arm 版 Windows 11 Pro 仮想マシンにインストールし、軽くではありますが、試用してみました。結論としては、以下のアプリケーションにおいては、とくに問題に感じるところはありませんでした。

  • Microsoft Edge
  • Mozilla Firefox
  • Google Chrome
  • Visual Studio Code
  • Visual Studio 2022 Community
  • Node.js
  • .NET 8.0 SDK
  • Git for Windows
  • PostgreSQL
  • PowerToys (FancyZones および File Locksmith)
  • DevToys
  • Microsoft 365 Office (Microsoft Word/Excel/PowerPoint)

いずれのアプリケーションも、PowerToys と DevToys を Microsoft Store アプリからインストールしたのを除いて、それぞれ公式のダウンロードサイトからインストーラーをダウンロードして実行するという手順でインストールしました (winget や chocolately は使いませんでした)。
インストールの手順も取り立てて Arm 版ならでは、ということもありませんでした。強いて言うなら、x64 版ではなく Arm 版のインストーラーをダウンロードするように注意するくらいでした。

簡単な Blazor アプリケーションや Next.js アプリケーションの構築、ビルド、実行、Visual Studio 2022 や Visual Studio Code によるコーディングも、普通に行なうことができました。

x64 版、x86 版も、特に何もしなくても使えてしまう

上記では、Git for Windows と PostgreSQL だけが Arm ネイティブ版がないのみで、他はいずれも Arm 版が用意されていました。その Arm 版が提供されていない Git for Windows および PostgreSQL も、単純に、x64 版のインストーラーをダウンロードし、エクスプローラー上でダブルクリックして実行、インストーラーのウィザード画面にしたがってポチポチするだけという、x64 版 Windows のときとまったく変わらない手順でインストールが完了しました。且つ、そのまま何もせず普通に、ターミナル内で git コマンドが使えたり、PostgreSQL が Windows サービスとして稼働していました。もちろんこのときは、git コマンドや PostgreSQL はエミュレーションで動作しているわけです。しかし事前にエミュレーションするための準備や設定等が必要だったわけでもなく、使っている側からはまったく自然に git コマンドや PostgreSQL が使えており、そもそもエミュレーションであるかどうかを意識する必要がありませんでした。

この Arm 版 Windows 仮想マシン内では、Selenium および Playwright によるブラウザ自動テストも実行したのですが、これらも普通に動作しました。なお、Selenium の Chrome Driver は Arm ネイティブ版が提供されておらず、x64 または x86 版を使用することになるのですが、こちらも特に何か意識することなく、自然にエミュレーション動作によって使用できていました。

SQL Server 2022 はインストールできなかった

いっぽうで、Microsoft SQL Server 2022 の Express エディションのインストールを試したのですが、こちらは、インストーラー自体は起動してインストール処理を開始することができたものの、インストール処理の終盤にてエラーメッセージが表示され、データベースエンジンはインストールできませんでした。

なお、Visual Studio 2022 Community エディションのインストール時に同時にインストールされた Microsoft SQL Server 2019 LocalDB は、こちらは x64 版になるわけですが、エミュレーションによって動作しました。別途インストールした、Microsoft SQL Server Management Studio v.20 も、こちらは x86 版となりますが、エミュレーションによって動作し、LocalDB に接続して操作することが可能でした。

Docker や WSL については確認できず

ここまで、アプリケーション類については、SQL Server を除けばかなりいい感じで使えてきましたが、仮想化関連が絡む Docker および WSL については、Azure の仮想マシン上では動作を確認することが叶いませんでした。というのも、Azure 仮想マシンの中でさらに仮想化を使用するには、仮想化のネスト、Nested Virtualization の機能が必要になりますが、この Ampere Altra による Azure 仮想マシンは、Nested Virtualization に対応していないためです (下記リンク先参照)。

https://learn.microsoft.com/ja-jp/azure/virtual-machines/dpsv5-dpdsv5-series

なお、Docker for Windows は、Arm サポートがアナウンスされていますのと、Docker for Windows のインストーラーによるインストール、および Microsoft Store アプリからの Ubuntu 22.04 LTS のインストールそれ自体は、この Azure 上の Arm 版 Windows 11 Pro 上で完遂することができました。ただ、インストールされたこれらを起動すると、起動時に「仮想化機能を BIOS で有効にしてください」というエラーになって立ち上がらない次第です。

なので、Arm CPU な Windows PC 実機では普通に使えていた可能性もありそうです。あいにくと自分が知り得ている情報としてはここまでとなります。

まとめ

Qualcomm Snapdragon X Elite や Plus は本当に Intel や AMD 製の CPU と比肩するくらい高性能なのかといった心配や懸念も耳に入ってきていますが、そのあたりは実際に実機を評価したことのない自分には何とも言えません。

いっぽうで、アプリケーションの互換性に関しては、上記のとおり、Azure 上の仮想マシンを利用して Arm 版 Windows 11 Pro を評価することによって、まずまずの感触を掴むことができました。SQL Server 2022 をインストールすることができなかった以外は、Web アプリケーション開発用途のツール類のインストールと使用は、難なく、Arm 版だからといって特別なことなく、できてしまったというのが実際のところです。

なお、Azure 上の仮想マシンでの評価でしたので、さらに入れ子の仮想化機能を必要とする Docker や WSL についての動作確認ができませんでした。この点については引き続き確信が得られていないままですが、各種アナウンスからは普通に動作しそうにも思われましたので、引き続きネット上での情報など注視していきたいと思いました。

Discussion