Windowsは動く?Apple Silicon搭載Macで現時点でわかってること色々まとめ

Apple Silicon搭載Mac

WWDC 2020でついに発表された「Apple Silicon」、今後Macに搭載されていきますが、現時点で判明していることなどを色々まとめてみました。

アプリは「Universal 2」と「Rosetta 2」を使って稼働

Apple Silicon搭載Macでアプリを動かすにはかつてPowerPCからインテルのCPUに移行する時と同じように「Universal」と「Rosetta」を使用。

Universal 2

「Universal 2」はインテルとApple Siliconのそれぞれを1つのバイナリで提供する仕組み。

完全移行となるまではアプリはこの形式で提供されることになります。

Rosetta 2

「Rosetta 2」は既存のインテルCPUでのアプリケーションを自動的にApple Silicon搭載のMacでも動作するようにインストール中も含め変換することで利用できるようになります。

「Rosetta 2」ではx86_64のPCプラットフォームの仮想化アプリは対象外

「Rosetta 2」でインテルベースのMacのアプリはほぼ動くようですが、x86をエミュレートする仮想ソフトなどには対応しない模様。

Rosetta can translate most Intel-based apps, including apps that contain just-in-time (JIT) compilers. However, Rosetta doesn’t translate the following executables:
Kernel extensions
Virtual Machine apps that virtualize x86_64 computer platforms
Rosetta translates all x86_64 instructions, but it doesn’t support the execution of some newer instruction sets and processor features, such as AVX, AVX2, and AVX512 vector instructions.

About the Rosetta Translation Environment | Apple Developer Documentation

Parallels Desktopで動かせるのは現時点では「ARM」環境の仮想化だけ

Appleの仮想化技術「Hypervisor」がアップデートされ、ParallelsがApple Silicon搭載Mac向けの「Parallels Desktop for Mac」を出すことを発表していますが、上記同様CPUが変わるため、対応する仮想環境はApple Siliconと同じARM系の環境のみ。

そのため、今と同じようにWindowsは動かせず、ARM版のLinuxやDockerなどが動作することになります。

ただ、ARM版Windows 10も一応あり、ARM版Windows 10ではエミュレートでx86系のアプリも動作できるため、トリッキーですが、ARM版Windows 10経由でx86系のWindowsアプリを動かすことになるかもしれません。

Parallelsは現時点ではARM版Windows 10のサポートは発表してないので、今後気になるところですね。

これはVMwareも同様となります。(VMWare Fusionのプレビュー版は7月前半に出る予定)

追記:The Vergeの記事によると、マイクロソフトはARM版Windows 10のライセンスはOEMのみらしく、そうあるとARM版Windowsを動かす方法は厳しそうです。

「OpenGL/OpenCL」はApple Silicon搭載Macでも動作するが非推奨

Appleの資料によるとグラフィクスAPI「OpenGL/OpenCL」はApple Silicon搭載Macでも動作するが非推奨でMetalを推奨しています。

Metal on Apple silicon supports the features of both Intel-based Mac computers and iOS devices. If your app adopts Metal features that are found only on Intel-based Mac computers, consider also adopting the iOS-specific features in your arm64 code. Adopting these features can lead to performance improvements for many apps.
If your app uses Metal, OpenGL, or OpenCL, be aware of the following differences:
The GPU and CPU on Apple silicon share memory.
OpenGL is deprecated, but is available on Apple silicon.
OpenCL is deprecated, but is available on Apple silicon when targeting the GPU. The OpenCL CPU device is not available to arm64 apps.
For information about how to update your graphics code, see Porting Your Metal Code to Apple Silicon.

Porting Your macOS Apps to Apple Silicon | Apple Developer Documentation

UnityはApple Siliconに対応するが、OpenGLのサポート外

Apple Silicon Unity

Apple Silicon に対応へ – Unity Technologies Blog

ゲームエンジンのUnityはApple Siliconに対応を表明、Apple Silicon上でのUnity画面も公開しています。

MonoとIL2CPPのスクリプティングバックエンドをサポートしますが、OpenGLは未サポート、Metalを使用することになります。

Mono、Blenderなど各オープンソースプロジェクトにもApple Silicon向けのパッチを提供

Platforms State of the Union」でMono、Blender、OpenCV、OpenJDKなど著名なオープンソースのソフト、ライブラリなどもApple Silicon向けのパッチを提供することを言及しています。

Mac App Store外での野良アプリもインストール・実行が可能

Apple Silicon搭載MacでもMac App Store外で配布されている野良アプリをインストール・実行は可能なようです。

Apple Siliconの開発キット(DTK)は500ドルで貸し出し

Apple Siliconの開発キット(DTK)

Apple Siliconへのアプリの移行、開発検証のための開発キット(DTK)は500ドルで貸し出しとなっていて、Apple Developer Programのメンバーである必要があります。

筐体はMac Miniで、主な仕様はCPUがA12Z Bionic、メモリは16GBの、SSDは512GBとなっています。

今回移行を2年ですると発表していますが、PowerPCからインテルに移行した時よりもスムーズに移行できる環境をAppleは提供してくれそうです。