私のMacbookはM2搭載のMacbook Air(2022)ですが、仕事でWindowsアプリを作る必要があり…なんとかならんかな〜と試してみたら何とかなりました。
どこに需要があるかわからんけど、MシリーズのMacでもWindowsアプリ(x86)作れたよ!というレポートです。
アーキテクチャが違うから無理では?
そもそもMシリーズのCPUはARMであり、通常のWindows環境(IntelとかAMDとか)ではアーキテクチャが違うので「そんなもん無理やろ〜」と思ってました。
MacでWindowsといえば昔から Parallels Desktop 一択みたいな雰囲気でしたが、アーキテクチャの壁は超えられずMシリーズのMacではARM版Windowsしか動作させることができません。
たとえ Visual Studio をインストールしても「ARM64しかビルドできないでしょ」と思ってましたが…
なんと x86 でビルドできるようになってた
Visual Studio 2022 17.4 からネイティブARM64アプリケーションとして対応したようで、このページの真ん中らへんのネイティブ開発者の項目を見ると、ターゲットアーキテクチャに x64 と x86 があるではないですか!
もしかしたら前から(ARM版VisualStudioがx64エミュレーションだった時から)対応してたのかも知れないけど、これは行けるかも知れない…ということでさっそく Parallels Desktop お試し版をインストールして試してみることに。
環境構築へ
めっちゃ簡単です。公式サイトからダウンロードしてインストールするだけ。
最初のVMはオプションで有効にしてたら別途どっかからダウンロードの手間なく、勝手に Windows11 のイメージ取ってきて作られます。簡単!
あとは作った Windows仮想環境からARMネイティブなVisualStudioをダウンロードしてインストールするだけ。
ちなみに私の M2 Macbook Air は最小構成なのでメモリ8GBでストレージ256GBという仮想環境には心配になるレベルのスペック。
初期設定ではVM側のメモリ割り当てが3GBだったので、ここだけ手動で4GBに変更しました。
.NET Framework とプラットフォームを整える
Windowsフォームアプリを作りたい(Windows10で動作するやつ)ので、.NET Framework のバージョンに注意しながら必要なものを準備します。
サポート対象は .NET 4.7.2 以降くらいっぽいので、とりあえず .NET 4.7.2 と 4.8 を使えるようにインストール。
ちなみに .NET Core とか .NET 6 とか 7 は勝手に入ってました。
テキトーにプロジェクトを新規作成(せっかくなのでVB)して構成マネージャーからプラットフォームを見てみると…
x64 と x86 あるやん!
時代は進んでるんですね〜需要あるか知らんけど
テキトーなアプリをビルドして試す
ここまで来たらテキトーにアプリをビルドしてガチWindowsでの動作を確認してみます。
ちなみに .NET 4.7.2 とかをターゲットにフォームアプリケーションを作りたいときは「Windows フォーム アプリ」ではなく「Windows フォーム アプリケーション(.NET Framework)」を選びましょう。
ややこしいですが「Windows フォーム アプリ」は .NET 6 か 7 しか選べませんので…
VB.NET でテキトーなソースを書いて Release の x86 に変更しビルドして Windows で実行してみると…
動いてる~!!
(Hello Mac じゃなくてHello Windows だよね)
タスクマネージャーを見ても、ちゃんと32ビット(x86)アプリケーションとして認識されています。
普通に使えそうな感じ
母体がメモリ8GBという最小スペック構成の Macbook Air でも、そこそこサクサクに動いてくれてます。Parallels Desktop のおかげか、ARM版Windows が軽いのか…?
全てに互換性があるかどうかはビミョーですし、Win32API ゴリゴリだとどうなるのかなど検証は必要ですが、まぁそんな人は素直に Windows 買いましょう。
とはいえ、Macしか手持ちがないよ!ってときにサクッとWindowsアプリ開発できるのは良いかも。x86アーキテクチャのビルドができるということは幅が広がったのかな〜と。こんなことならメモリ16GBとかにしておけば良かったかな…。
私のように自宅は Windows で普通に開発してるけど、モバイル用に Macbook しか持ってなくって、でも出先で Windows開発することになった!みたいなケースの参考になれば…。(そんなことある?)
Parallels Desktop は頻繁にセールしてるので、時々チェックしてキャンペーン狙うのが良いです。私も安いときに正式版にしよっと…
(2023.06.21 追記)
バースデーセールが開始しました!25%オフなので正式版購入しました。
コメント
[…] ユーザー単位ではなくホストそのものに導入したい場合は Machine wide を選択しましょう。MシリーズMacでParallels Desktopなど利用してWindows使っている人はARM64版で。 […]
m2macbookairでvrゲームをやろうとしているものです。どうも調べると、2021年付近のreditにて、m1macとoculusでparallel desktop経由でvrchatやSteam VRをやろうとした結果、VR系統のゲームはたいていx86のためarmでは動かなかった、という結果がよく見られますが、上記の方法なら解決するでしょうか。
コメントありがとうございます!
この記事は「アプリを作るときに(armでも)x86向けにビルドできるようになった」という内容ですので、x86アプリをarmで動かす方法とは異なりますね…。
やはりVR用のゲームなどはx86向けに作られていることが多いので、現状はWindows機のほうが良さそうです。ただ、Apple Vision Proや Arm版Windowsがもっと普及すれば対応したVRゲームも増えるかも知れません!
[…] ちなみに記事ではM2 Macbook Air で x86 アプリをビルドするがいちばん読まれたやつでしたね…意外と需要があったのか…? […]