M2 Macbook Air で x86 アプリをビルドする

仕事

私の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 プロセッサ搭載デバイスの Visual Studio - Visual Studio (Windows)
サポートされているワークロードやリモート ターゲットなど、Arm ベースのプロセッサを搭載したデバイス上で Visual Studio を使うための推奨事項を確認します。

もしかしたら前から(ARM版VisualStudioがx64エミュレーションだった時から)対応してたのかも知れないけど、これは行けるかも知れない…ということでさっそく Parallels Desktop お試し版をインストールして試してみることに。

環境構築へ

めっちゃ簡単です。公式サイトからダウンロードしてインストールするだけ。

最初のVMはオプションで有効にしてたら別途どっかからダウンロードの手間なく、勝手に Windows11 のイメージ取ってきて作られます。簡単!

M2 Macbook で Windows を動かす

あとは作った Windows仮想環境からARMネイティブなVisualStudioをダウンロードしてインストールするだけ。

ちなみに私の M2 Macbook Air は最小構成なのでメモリ8GBでストレージ256GBという仮想環境には心配になるレベルのスペック。

初期設定ではVM側のメモリ割り当てが3GBだったので、ここだけ手動で4GBに変更しました。

VM側のメモリを変更

.NET Framework とプラットフォームを整える

Windowsフォームアプリを作りたい(Windows10で動作するやつ)ので、.NET Framework のバージョンに注意しながら必要なものを準備します。

サポート対象は .NET 4.7.2 以降くらいっぽいので、とりあえず .NET 4.7.2 と 4.8 を使えるようにインストール。

ちなみに .NET Core とか .NET 6 とか 7 は勝手に入ってました。

テキトーにプロジェクトを新規作成(せっかくなのでVB)して構成マネージャーからプラットフォームを見てみると…

新しいプラットフォームで x86 系を選べる

x64 と x86 あるやん!

時代は進んでるんですね〜需要あるか知らんけど

テキトーなアプリをビルドして試す

ここまで来たらテキトーにアプリをビルドしてガチWindowsでの動作を確認してみます。

ちなみに .NET 4.7.2 とかをターゲットにフォームアプリケーションを作りたいときは「Windows フォーム アプリ」ではなく「Windows フォーム アプリケーション(.NET Framework)」を選びましょう。

フォームアプリの罠

ややこしいですが「Windows フォーム アプリ」は .NET 6 か 7 しか選べませんので…

VB.NET でテキトーなソースを書いて Release の x86 に変更しビルドして Windows で実行してみると…

Hello Mac

動いてる~!!
(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%オフなので正式版購入しました。

コメント

  1. […] ユーザー単位ではなくホストそのものに導入したい場合は Machine wide を選択しましょう。MシリーズMacでParallels Desktopなど利用してWindows使っている人はARM64版で。 […]

  2. みやした より:

    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ゲームも増えるかも知れません!

  3. […] ちなみに記事ではM2 Macbook Air で x86 アプリをビルドするがいちばん読まれたやつでしたね…意外と需要があったのか…? […]

タイトルとURLをコピーしました