m1 hero gayysked51ym large 2x

2021年3月時点でのApple Siliconと開発環境

2021年03月06日

M1搭載Macが発売されてから4ヶ月が経過し、発売当初よりもRosettaに頼る場面は減ってきました。開発環境を適宜見直しており、発売当初に作った環境とはだいぶ違うものになってきているので覚え書き。

Homebrew

Homebrewはバージョン3.0.0でApple Siliconを正式にサポートしました。正式サポート後も/opt/homebrewの下にインストールされることに変わりはないので、PATHを通す必要があります。

fish_add_path /opt/homebrew/bin

ほとんどのパッケージがApple Siliconネイティブで動作するようになってきており、私はRosettaで動作するパッケージ用のHomebrewは削除してしまいました。

Visual Studio Code

専用ビルド、Insider版とARMビルドが降りてきていましたがついに1.54で安定版がUniversalバイナリになりました

Webブラウザ

FirefoxとGoogle Chromeはかなり早い段階で対応していましたが、実は他のChromium派生ブラウザが対応しだしたのはここ1ヶ月ほどの間になります。Microsoft Edgeは1月末にリリースされたEdge 88で対応、Vivaldiは2月中旬のスナップショット版でテストがはじまっています。
検証用としてChromiumがほしいだけならungoogled-chromiumのcaskがあるので、それをインストールするのが手っ取り早いでしょう。

brew install eloston-chromium

Node.js

Apple SiliconネイティブのNode v15系で試しにGatsbyを動かしてみたものの上手くいかなかったため、Node.jsはLTS版をRosetta上で動かす運用にしています。

Node.jsのインストールやバージョン管理はnvm.fishでやっているのですが、現時点ではARM版が存在しないNode.jsの公式ビルドを拾ってこようとしてコケてしまいます。今はとりあえずnvm.fishを改造して運用していますが、v16系が今年の秋にLTSになるのでその頃には運用を見直す必要がありそうです。

Python

pyenvがふつうに使えます。

brew install pyenv

~/.config/fish/config.fish の最後の辺りでpyenvを有効化します。

# pyenv init
if command -v pyenv 1>/dev/null 2>&1
  pyenv init - | source
end

pyenvはバイナリを拾ってくるわけではなく、実行するマシン上でPythonをビルドするようです。M1だと1〜2分程度で済みます。この記事を書いている時点で3.6.13のビルドが通らなかったので、3.7系より後がApple Siliconで使えるボーダーラインだと思います。

pyenv install 3.9.1
pyenv global 3.9.1

Go

Go 1.16で正式サポートになっています。

brew install go

Rust

Rust 1.49でTier 2サポートになり、動作保障はありませんが公式ビルドが提供されています。RustupでBeta版を選ぶ必要はありません。

curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh