ARMベースのSurface Pro X買って開発環境構築

# はじめに
LTE/4Gでインターネットに常時接続可能で(しかもGoogle Fi SIM使えばほぼ世界中でネット接続可能)、Type-Cで(モバイルバッテリーからも)充電ができて、バッテリーの持ちがそこそこ良くて、軽くて、ペンが使えて ... RAMも(iPad Pro 1TB版のような6GBではなく)16GBあってということで、Surface Pro X購入しました。

ARMベースのWindowsでx86ベースの32bitアプリであればWOA(Windows On ARM)でエミュレーション動作するものの、現時点では64bitアプリが動きませんが、どの程度困るのか、検証してみました。あくまでも書いている時点の一ユーザーのやってみた記録であり、SurfaceのメーカーやOSベンダー、アプリケーションベンダーが保証する内容では全く以てないことを先に申し上げておきます。**また、状況がかなり変化して記述が古くなってしまっているので、近いうちに内容をアップデートするようにします(2020/10/24追記)。**

なお、ARM64版WSL2(やdocker, Hyper-V上のLinux環境)で動作する開発環境については、別記事にまとめています。
- [ARMベースのSurface Pro X買って WSL2でARM64 Linux開発環境構築](https://qiita.com/mfunaki/items/a4aa0c8d007534178a38)

# 動いた
## Adobe Creative Cloud

- https://creativecloud.adobe.com/apps/all/desktop/pdp/creative-cloud
 
Adobe Creative Cloudのデスクトップ版アプリの最新版は64bitで、32bitアプリの最終版はバージョン4.9とのことで、バージョン4.9をどこからダウンロードすればよいか悩んだものの、結局、普通にWindows版のCreate Cloudインストーラを実行すれば、Surface Pro X上では32bit版が自動的にインストールされました(4.9.0.504)。

## Android Studio

- https://developer.android.com/studio/#downloads

下に挙げているようにWindows 32bit版が動作しますが、公式ブログ([Moving Android Studio and Android Emulator to 64-bit versions](https://android-developers.googleblog.com/2019/06/moving-android-studio-and-android.html))にもあるように、32bit版のAndroid Studio IDE、Android Emulatorが2020年末を以てサポート停止になることに注意が必要です。

Windows 32bit版がこちらで提供されているので、ダウンロードの上、zipファイルを展開し、android-studio\bin\studio.exe を実行すれば起動します。

以前(64bit版のWindowsで動作するAndroid Studio 64bit版で)開発したアプリをビルドしようとしたところ、Could not reserve enough space for object heapと怒られてしまったので、gradle.propertiesファイル内の

```
org.gradle.jvmargs=-Xmx1536m
```

というJava VMに渡している最大ヒープ指定を(そもそも32bit版のJava VMで動作するのだから)

```
org.gradle.jvmargs=-Xmx150m
```

といった感じに小さめに取ってみたら(gradleのバージョンを更新した上で)問題なくビルドできました。

なお、(問題が出そうなポイントでもある)実機との連携ですが、Pixel 4 XLとの連携では特に問題なく動作しているように見受けられます。独自のドライバが必要なケースでは、連携に問題が生じるのかもしれません。

## Hyper-V (Build 19559以降でサポート)
Insiders Build 19559以降でサポートされています。英語ですがこちらの記事が参考になります。
- [Running Hyper-V in Windows on ARM](https://sinclairinat0r.com/2020/02/04/running-hyper-v-in-windows-on-arm)

## Microsoft Office (Office 365)

- https://account.microsoft.com/services/office/install?lang=ja-JP

こちらは明示的に32bit版をダウンロードしてインストールで動作しています。

### Microsoft Teams

- https://teams.microsoft.com/downloads#allDevicesSection

Web版のTeamsの画面(https://teams.microsoft.com/ )の左下からデスクトップ アプリをダウンロードクリックしても、インストーラーの起動時にコケてしまうので、こちらのダウンロードサイトの下方にあるWindows 32ビットからダウンロードしてインストールする必要があります。

## iTunes

- https://www.apple.com/itunes/download/win32

Microsoft Store版のiTunesがダウンロード、使用可能です。自動的に(ARM64版がないので)x86版がダウンロードされます。むしろ、インストーラ版のiTunesは32bit Windowsのものをインストールしようとしても、(OSが64ビットなので)エラー表示がされインストールできないので、Microsoft Store版一択です。

## Visual Studio Code

- https://code.visualstudio.com/Download

こちらも普通にWindows版ということでインストールしてしまうと、64bit版をインストールしようとして失敗してしまうので、こちらのサイトから明示的に32bit版(例えば、Windows→System Installer→32bit)をダウンロードして、インストールします。

## Visual Studio 2019
こちらは(VSCodeと違ってそもそも)32bit版しかないので、普通にWindows版をダウンロードして、インストール可能です。

- https://visualstudio.microsoft.com/ja/downloads/

ただし、個別のコンポーネントに関しては、64ビットで動作するものがインストール可能なコンポーネントとして出る・出ないの区別があるようです(上はSurface Book 2上のVisual Studio 2019インストーラ、下はSurface Pro X上のVisual Studio 2019インストーラ)

![2020-02-02.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/19248/09b7f542-3380-b4d5-257f-0d21e8e02d91.png)

![2020-02-02 (3).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/19248/82bd63a9-c9ab-4f9b-1e42-98c714f2f333.png)

なお、ARM64に対応したアプリの開発に関しては、こちらが詳しいです。

- Surface Pro X (ARM64) に対応したアプリケーションを作る - https://blog.shibayan.jp/entry/20191004/1570123993

## WSL1
Windowsの機能の有効化または無効化からWindows Subsystem for Linuxが普通に有効化可能です。有効化が完了したら、Microsoft Storeから必要なLinuxディストリビューションをダウンロードして実行します。こんな感じでarm64版のportが動作しています。

![2020-02-02 (2).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/19248/833cc7e2-44c6-3bc6-465d-b54ca5313799.png)

## WSL2, docker
こちらが詳しいです。私も今はWSL2 + VSCode + dockerを常用しています。

- Surface Pro X （ARM版Windows10）への WSL2 （＋開発ツール）インストール - https://qiita.com/takeyuweb/items/f92ef14f750def6c862b

## 新しいMicrosoft Edge
- https://microsoftedgewelcome.microsoft.com/

普通にこちらのサイトにアクセスし、Windows 10版をダウンロードすれば、問題なく動作します。
要は、32bitアプリなのでエミュレーションで動作しますよ、という話です。

![edge32.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/19248/6d8d1a7e-a42d-1894-2e9a-86ef977088c7.png)

拡張機能(プラグイン)も自分が使っている範囲では特に問題なく動作しています。

- [はてなブックマーク](https://chrome.google.com/webstore/detail/%E3%81%AF%E3%81%A6%E3%81%AA%E3%83%96%E3%83%83%E3%82%AF%E3%83%9E%E3%83%BC%E3%82%AF/dnlfpnhinnjdgmjfpccajboogcjocdla?hl=ja)
- [OneNote Web Clipper](https://chrome.google.com/webstore/detail/onenote-web-clipper/gojbdfnpnhogfdgjbigejoaolejmgdhk?hl=ja)
- [Grammarly for Chrome](https://chrome.google.com/webstore/detail/grammarly-for-chrome/kbfnbcaeplbcioakkpcpgfkobkghlhen?hl=ja)
- [Office](https://chrome.google.com/webstore/detail/office/ndjpnladcallmjemlbaebfadecfhkepb?hl=ja)

エミュレーションしているのだから当たり前ですね。

なお、ARM64版の新しいMicrosoft EdgeはMicrosoft Edge Insider Channelからダウンロード可能です。

- https://www.microsoftedgeinsider.com/ja-jp/download/

少しわかりにくいのですが、例えば、Canaryチャネルのダウンロード(Windows 10)を選ぶことで、(ダウンロード時 or インストール時に)ARM64環境であることが自動的に認識され、ARM64版Edgeがインストールされます。タスクマネージャーでも 32ビット 記載のないEdgeが動作していることがわかります。

![edge64.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/19248/65ffc2ca-8aca-4f62-cafa-a884f40f77e4.png)

# 動かなかった
## Hyper-V (Build 19559以降でサポート)
上記の「動いた」をご覧ください。
~~Windowsの機能の有効化または無効化を見ても、(Windows 10 Proにアップグレードした)ARM版でもHyper-Vの項目はありませんでした。ただし、仮想マシン プラットフォーム自体は両方に存在しています。~~

|Intel版Windows 10 Pro|ARM版Windows 10 Pro|
|---------------------|-------------------|
|![2020-02-03.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/19248/39bbac6f-13e6-3076-70a5-16340780f742.png)|![2020-02-03 (2).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/19248/56480728-4bfe-e109-24f6-b6f68b38a5ba.png)|

## Power BI Desktop
Microsoft Store版ではなく、こちらからダウンロード可能な(Intel)ネイティブ版が動作しません。

- https://www.microsoft.com/ja-JP/download/details.aspx?id=58494

32bit(x86)版をダウンロードし、起動するとバナーが表示されるのですが、画面が表示される前にクラッシュしてしまいます。

## Visual Studio 2019 (Xamarin)
Visual Studio 2019は動いたの項にも載せたのですが、Xamarinを使ったAndroidアプリがビルドできていません。詳細はまだちゃんと追えていませんが。

# おわりに
エクスプローラを開くと、Cドライブには、Program Files (Arm) なるフォルダがありました。ここいらのものはARMネイティブということのようです。それでは。
![explorer.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/19248/8b6efad1-05a2-2d1d-d47f-74f366868db9.png)