LoginSignup
1502
1102

More than 1 year has passed since last update.

M1 Macの開発環境

Last updated at Posted at 2020-11-21

MacBook Pro (M1)でのメモです。インストールできるかどうか状況確認メモです。

自分がよく使うものを中心に。なるべくARMネイティブになるように。もしプライマリーで提供されているインストール手段(.dmg利用など)でARM対応が済んでいればそれを紹介しますが、もしそれで対応していない場合にはMacPortsやソースビルドなどの結果も合わせて紹介します。
PowerPC->x86->x86_64とユニバーサルバイナリを挟んで対応してきたMacPortsはこういう過渡期に強いです。

なお、ここで紹介するバージョンは最新版から古い可能性がありますが、「M1サポートが追加された前後のバージョン」を明記するのを目標にしていますので、これより新しければ問題ないと見てもらえればと思います。

編集リクエストウェルカムです。

現在の状況

IDE/エディタ

Eclipseはあまりきちんと試していませんが、それ以外は使えないということはないです。また、x86_64であっても起動時間以外は問題はないでしょう。

状況 アプリ バージョン arch インストール メモ(記録日)
✔︎ Visual Studio Code stable ユニバーサル バイナリインストーラ 3/6更新: 1.54からmacOSの配布がユニバーサルになりました。単体版も配布されています
✔︎ Vim 8.2.1719 arm64 MacPorts 11/21
NeoVim 0.4.4 arm64 MacPorts 11/22: ビルド失敗
✔︎ NeoVim master arm64 ソースビルド 12/24
✔︎ Emacs 27.1 arm64 MacPorts 12/11更新
✔︎ Emacs master arm64 ソースビルド 12/06
✔︎ Emacs 27.1 x86_64 バイナリインストーラ 11/23
✔︎ IntelliJ IDEA Ultimate / Community / Goland / WebStormなど 2020.3.1 arm64 JetBrainsのサイト or toolbox 12/31更新 Intel版とは別バイナリなので、インストール済みの場合は一度アンインストールが必要
✔︎ GoLand 2020.2.3 universal(x86_64/i386) 公式サイト 11/20: x86_64向けGoを検知してビルド&実行までできた
✔︎ Android Studio 2020.3.1 universal(x86_64/arm64) 公式サイト or toolbox 2021/11/17: 2021/7/28リリースのArctic Foxからネイティブサポート
✔︎ Visual Studio for Mac 2019 x86_64 公式サイト 11/24
Eclipse 2020-09 x86_64 公式サイト 11/24: JDKが選べるが、arm64JDKを指定するとエラー

開発ツール/パッケージマネージャ

MacPortsやHomebrewのportやformulaによってはまだ非対応のものもあります。

状況 アプリ バージョン arch インストール メモ(記録日)
✔︎ MacPorts 2.6.4 universal(x86_64/arm64) Big Sur版 11/20
✔︎ Homebrew 3.0.0 arm64 Alternative Installs から 02/05
✔︎ Docker AppleSilicon Preview7 混載 Developer Preview版 12/11
✔︎ CMake 3.18.5 arm64 MacPorts 11/20: なにかの依存で入った
✔︎ Ninja 1.10.1 arm64 MacPorts 11/24
✔︎ TexLive 2020 arm64 MacPorts 11/21: +fullでインストール。途中texlive-fonts-extraでめちゃ時間かかる
✔︎ the_silver_searcher 2.2.0 arm64 MacPorts 11/20
✔︎ Doxygen 1.8.20 arm64 MacPorts 11/22
✔︎ Graphviz 2.40.1 arm64 MacPorts 11/22
✔︎ jq 1.6 arm64 MacPorts 11/22
✔︎ word2vec 20170716 arm64 MacPorts 11/22
✔︎ mecab 0.996_0 arm64 MacPorts 11/22
QEMU 5.0.0 arm64 MacPorts 11/27: ビルドエラー
QEMU master arm64 ソースビルド 11/27: ビルドエラー
✔︎ QEMU master arm64 ソースビルド+パッチ 11/30更新: ビルドは成功し、ビルドしたフォルダでは動くが、make installすると動かなくなる
✔︎ fish 3.1.2 ユニバーサル バイナリインストーラー 11/30
✔︎ pict master arm64 ソースビルド 12/10
✔︎ gcloud sdk latest arm64 マニュアルインストール 3/4
✔︎ cocoapod 1.10.1 x86_64 gem 3/7

プログラミング言語

Erlangはmacportsには来ていませんが、23.2でM1対応済みです。どの言語もmaster/mainブランチには対応が入っており、Go/Rustは最新のベータで、それ以外の最新の安定版で対応が降ってきている状況です。メンテナンス期間のバージョンでも使えるかどうかは言語次第ですが、最近のプログラミング言語の後方互換性の高さを考えると、特定のバージョンをサポートしていないとかはあまり気にする必要性は減ってきていますし、Dockerも動くので、逃げ道はいくらでもあります。

状況 アプリ バージョン arch インストール メモ(記録日)
✔︎ Python 2.7.16 ユニバーサル プリインストール 11/30
✔︎ Python 3.8.2 ユニバーサル プリインストール 11/30
✔︎ Python 3.8.7 arm64 MacPorts 1/3
✔︎ Python 3.9 arm64 MacPorts 12/11更新
Python 3.9.0 arm64 ソースビルド 11/20: ビルド失敗
✔︎ Python 3.9.1 arm64 ソースビルド 12/11
✔︎ Python 3.9.1 ユニバーサル 公式サイト 12/11: 深いページに潜らないとx86_64のみのインストーラがダウンロードされてしまう
✔︎ Ruby 2.6.3p62 x86_64 プリインストール 12/02
✔︎ Ruby 2.6.3p62 arm64 MacPorts 11/20
✔︎ Ruby 2.7.1p83 arm64 MacPorts 11/21
✔︎ Ruby 3.0 arm64 MacPorts 1/3
Node.js 12 arm64 MacPorts 11/20: icuのビルドで失敗/upstreamの12への修正まち
Node.js 14 arm64 MacPorts 11/20: icuのビルドで失敗/upstreamの14への修正まち
✔︎ Node.js 14.15.1 x86_64 公式サイト 11/20
✔︎ Node.js 15.4.0 arm64 MacPorts 12/18
✔︎ Node.js 15.4.0 arm64 ソースビルド 12/18
✔︎ Node.js master arm64 ソースビルド 11/25
✔︎ PHP 7.3.11 x86_64 プリインストール 12/02
✔︎ PHP 7.4.12 arm64 MacPorts 11/21
✔︎ Perl 5.18.4 x86_64 プリインストール 12/02
✔︎ Perl 5.26 arm64 MacPorts 11/20: なにかの依存で入った
✔︎ Perl 5.28 arm64 MacPorts 11/21: TexLiveの依存で入った
✔︎ Perl 5.30 arm64 MacPorts 11/21: TexLiveの依存で入った
Go 1.15.5 arm64 ソースビルド 11/20: 途中で止まる
✔︎ Go master arm64 ソースビルド 12/03更新
✔︎ Go 1.15.5 x86_64 公式サイト 11/20
✔︎ Go 1.16 RC 1 arm64 公式サイト 1/29
✔︎ Java 8/11/13/16-ea arm64 Azul Zulu 11/21
✔︎ Lua 5.3.5 arm64 MacPorts 11/22: neovimの依存で入った
Erlang 23.1 arm64 MacPorts 11/23: 途中で止まる
Erlang 23.1 arm64 ソースビルド 11/23: configureで止まる
✔︎ Erlang master arm64 ソースビルド 11/23
Rust 1.47 arm64 MacPorts 11/28: ICUのビルドでエラー
Rust 1.48 arm64 Rustup 11/28: エラー: target 'aarch64-apple-darwin' not found in channel.
✔︎ Rust 1.49-beta arm64 Rustup 12/15
✔︎ Rust 1.50-nightly arm64 Rustup 11/28

DB/サーバー

状況 アプリ バージョン arch インストール メモ(記録日)
✔︎ PostgreSQL 11.9 arm64 MacPorts 11/21
✔︎ MariaDB 10.5.7 arm64 MacPorts 11/21
✔︎ MongoDB 4.4.2 arm64 MacPorts 11/21
Redis 6.0.9 arm64 MacPorts 12/12更新: ビルド失敗
✔︎ Redis snapshot arm64 ソースビルド 11/24
✔︎ Apache2 2.4.46 arm64 MacPorts 11/22
✔︎ Nginx 1.19.4 arm64 MacPorts 11/22
✔︎ ZeroMQ 4.3.3 arm64 MacPorts 11/22
✔︎ DBngin Build 30 x86_64 公式サイト 11/22: redis起動しない。その他OK

デスクトップアプリケーション

状況 アプリ バージョン arch インストール メモ(記録日)
✔︎ Google Chrome 87.0.4280.67 universal(x86_64/arm64) 公式サイト 11/20
✔︎ Firefox 84.0 universal(x86_64/arm64) 公式サイト 12/16
✔︎ Slack 4.11.3 x86_64 AppStore 11/20
✔︎ Slack 4.12 arm64 公式サイト 12/14
✔︎ Kindle x86_64 AppStore 11/21
✔︎ KeePassXC 2.6.2 x86_64 公式サイト 11/20
✔︎ iTerm2 3.4.1 universal(x86_64/arm64) 公式サイト 11/20
✔︎ HandBrake 1.4.0-beta1 arm64 GitHubのインストーラ 11/23
✔︎ Stoplight Studio x86_64 公式サイト 11/26
✔︎ 1Password 7.7 (70700016) x86_64 AppStore 11/30
✔︎ 1Password 7.7.1-BETA4 (70701004) arm64 公式サイト 12/25
Canon webcam utility 1.0 x86_64 公式サイト 12/19

ゲーム/グラフィックス

状況 アプリ バージョン arch インストール メモ(記録日)
✔︎ Unreal Engine 4 4.25.4 x86_64 Epic Game Launcher 11/20:初回起動とシェーダービルドはファンがめちゃ回るのでAirユーザーには辛そう。一度起動すると高速。
Unity2019 4.16f1 x86_64 Unity Hub 12/03 空のプロジェクトでWebGL buildが走るところまで確認、ちゃんと動作確認するなら全ターゲットをビルドしてRunさせる必要がある 
✔︎ Godot Game Engine 3.2.3 x86_64 公式サイト 11/20: 署名されてないので右クリックで注意ダイアログを開いて強制オープンが必要
Godot Game Engine 3.2.4 beta 2 universal(x86_64/arm64) 公式サイト 11/21: 起動せず
✔︎ Blender 2.92 x86_64 公式サイト 4/17更新: 2.92がリリースされたがバイナリはx86_64のままだった
✔︎ Blender 2.93 beta arm64 daily build 4/17追加
Blender arm64 MacPorts 11/21: 依存パッケージのopenimageioがamd64非対応でインストール不可
ffmpeg arm64 MacPorts 11/22: arm64非対応
✔︎ ffmpeg ソースビルド arm64 MacPorts 11/24
gimp arm64 MacPorts 11/22: 依存パッケージのffmpegがインストール不可
inkscape arm64 MacPorts 11/22: 依存パッケージのlibrsvgがインストール不可
✔︎ Figma x86_64 公式サイト 11/25
✔︎ draw.io desktop 14.1.8 arm64 公式サイト 01/26更新

フォント

状況 フォント バージョン インストール メモ(記録日)
✔︎ 源ノ角ゴシック 2.012R GitHub 11/30

他の方のレポート

DTMステーション

音楽系のアプリの動作レポート。ゲームやグラフィックスはシェーダーやGPUによるところが多く、そこの変換のロスがないため、効率良く動作しますが、同じクリエイティブ系でも音楽はそうはいかないため、ネイティブアプリが出揃うまではパフォーマンスのペナルティは大きいようです。ただ、iOSアプリの活用など、新しい可能性も秘めているので、将来が楽しみですね。

西川和久の不定期コラム

CrossOver 20でWindowsアプリを動かす。日本語フォントもIMEも問題なしとのこと。

React Native

Masayuki IwaiさんのHomebrewを使ってReact Native環境を作る記事。

細かいメモ

バイナリの確認

どっちのバイナリか?はfileコマンドで調べている。32bit/64bit共存時代はアクティビティモニタで見えた気がしたが、今回は違いはない。スクリプト言語製のものはランタイムを調査。

11/22: コメントで指摘いただきましたが、アクティビティモニタの表示項目のアーキテクチャを有効にするとみれます

MacPortsはportコマンドはスクリプト。

% file /opt/local/bin/port
/opt/local/bin/port: a /opt/local/libexec/macports/bin/tclsh8.5 script text executable, ASCII text

そいつのランタイムのtclはユニバーサル。かっこいい。

% file /opt/local/libexec/macports/bin/tclsh8.5
/opt/local/libexec/macports/bin/tclsh8.5: Mach-O universal binary with 2 architectures: [x86_64:Mach-O 64-bit executable x86_64] [arm64:Mach-O 64-bit executable arm64]
/opt/local/libexec/macports/bin/tclsh8.5 (for architecture x86_64): Mach-O 64-bit executable x86_64
/opt/local/libexec/macports/bin/tclsh8.5 (for architecture arm64):  Mach-O 64-bit executable arm64

Docker

12/11追記

12/11に開催されているDocker Community All-Handsで、本日中にDeveloper Previewが公開されると表明されました。正式リリースは来年。buildxでマルチプラットフォーム対応(クロスコンパイル)も加速。

スクリーンショット 2020-12-11 1.15.15.png

12/11さらに追記

Developer Preview版の動作を確認しました。ダウンロードにはDeveloper Preview Programへの参加と、Docker Community Slackへの参加が必要です。Developer Previewに登録してしばらくしてメールが来ると、Slackアカウント名を尋ねるフォームにアクセスできます。このフォームの申請を出すと、Slackでプライベートな開発者向けチャンネルに招待されます。その中でダウンロードのリンクの案内があります。Developer Previewなので問題があったりしたら積極的に報告した方が良いと思われます(今のところ普通に動いてしまって指摘内容は見当たりませんが)。

DockerのCLIはGoで書かれているものの、GoのM1対応が来年の2月なのでそれ以降になるのかな、と思っていましたが、プレビュー版をみると、CLIやDocker DesktopのGUIはx86_64で、バックエンドのサーバープロセスだけがarm64ネイティブになっていますね。

スクリーンショット 2020-12-11 23.00.56.png

12/18追記

Developer Preview Programへの参加をしなくてもダウンロードできるようになりました。先週、Developer Programで公開されたのはPreview5というバージョンでしたが、こちらのパブリック公開されたバージョンはPreview7に更新されています。

4/17追記

Previewが出て4ヶ月ぐらいですが、とうとう公式版が公開されました。まだGUI周りはIntel版ですが、基本的な動作に問題はありません。

バックエンドの話についてZennに書きました。

Go

12/18更新

M1対応のコードがマージされました。1.16 beta 1がリリースされました。これをインストールすれば完璧です。beta 1なので、試して問題があれば報告しましょう。

Electron

11/17リリースの11.0でM1対応完了済み。VSCode/Slackがネイティブになる日も近い?

Java

Azul Systemsが16以降に対応し、その後8/11/13にバックポート済みで、15にもバックポート予定。

macOSのJavaのダウンロードはAzulのページから行えます。このリンクはJDK11のarm版です。ここからzipファイルをダウンロードして展開します。ここの中のzulu-11.jdkフォルダを/Library/Java/JavaVirtualMachinesフォルダに配置します。こんな風になるように。

% ls /Library/Java/JavaVirtualMachines
zulu-11.jdk

macOSはこのフォルダに配置されたJavaのJDKを認知して、/usr/bin以下のjavaコマンドやjavacコマンドはここに置かれたJDKにフォワードしてくれます。バージョンを見ると今置いたJDKの情報が出てきます。

% java -version
openjdk version "11.0.9.1" 2020-11-04 LTS
OpenJDK Runtime Environment Zulu11.43+1007-CA (build 11.0.9.1+1-LTS)
OpenJDK 64-Bit Server VM Zulu11.43+1007-CA (build 11.0.9.1+1-LTS, mixed mode)

なお、このJDKをJetBrains製のIDEの実行ランタイムに設定することはできますが、起動しなくなりました。もし失敗して起動しなくなった時は、/Users/[ユーザー名]/Library/Application Support/JetBrains/GoLand2020.2goland.jdkというファイルを削除すると、デフォルトJDKで起動するように戻ります。焦って再インストールしても復元されませんのでお気をつけください。

Node.js

Node.js会長によると、このPRでM1対応はOKということになっているらしい。masterにはマージされています。

12/18更新

15.3.0にバックポートが、バイナリリリースには含まれていませんので、自分でビルドする必要があります。MacPortsなら、port install nodejs15でバイナリが降ってきます。

Qt

作業中

Erlang

MacPortsはうまくいかなかったが、ソースビルドならできるという話を聞いたのでトライ。ウェブサイトにある23.1のコードはだめだったが、githubから落とした最新であればいけた。

$ git clone https://github.com/erlang/otp.git
$ cd otp
$ export MACOSX_DEPLOYMENT_TARGET=11.0.1
$ export ERL_TOP=`pwd`
$ ./otp_build autoconf
$ ./configure --prefix=/opt/local/erlang
$ make
$ sudo make install

MacPortsとかと混ざらないように、/opt/local/erlangに入れるようなコマンドになっています。/opt/local/erlang/binをパスに通せばOK。

Erlangはちょっと前にJITを装備して速度が数倍になるというアップデートがあったのですが、これへの対応はまだとのこと。

それでもネイティブで動かせば高速とのこと。

QEMU

パッチが出てきました

4/17追記

GUI付きで仮想PCのハイパーバイザとして使うのであれば、UTMが便利です。

MacPorts

MacPortsはarm64版のバイナリをダウンロードしたり、ないものはビルドしてインストールしてくれる。よきよき。bzip2みたいなのはバイナリがあるので瞬間で終わる。

--->  Fetching archive for bzip2
--->  Attempting to fetch bzip2-1.0.8_0.darwin_20.arm64.tbz2 from https://kmq.jp.packages.macports.org/bzip2
--->  Attempting to fetch bzip2-1.0.8_0.darwin_20.arm64.tbz2.rmd160 from https://kmq.jp.packages.macports.org/bzip2
--->  Installing bzip2 @1.0.8_0
--->  Activating bzip2 @1.0.8_0
--->  Cleaning bzip2

3箇所問い合わせにいってバイナリがなければソースを落としてきてビルドする。ビルド中、全然CPUファンが回らない不思議体験。

--->  Fetching archive for xxhashlib
--->  Attempting to fetch xxhashlib-0.8.0_0.darwin_20.arm64.tbz2 from https://kmq.jp.packages.macports.org/xxhashlib
--->  Attempting to fetch xxhashlib-0.8.0_0.darwin_20.arm64.tbz2 from http://jog.id.packages.macports.org/macports/packages/xxhashlib
--->  Attempting to fetch xxhashlib-0.8.0_0.darwin_20.arm64.tbz2 from https://packages.macports.org/xxhashlib
--->  Fetching distfiles for xxhashlib
--->  Attempting to fetch xxhash-0.8.0.tar.gz from https://kmq.jp.distfiles.macports.org/xxhash
--->  Verifying checksums for xxhashlib
--->  Extracting xxhashlib
--->  Configuring xxhashlib
--->  Building xxhashlib
--->  Staging xxhashlib into destroot
--->  Installing xxhashlib @0.8.0_0
--->  Activating xxhashlib @0.8.0_0
--->  Cleaning xxhashlib

一度、icuのビルドがおかしくなったが、プロンプトに出てくる説明の通りに、port clean icuしたら治った。

Homebrew

~ ❯❯❯ sudo mkdir /opt/homebrew && \
sudo chown (whoami):staff /opt/homebrew && \
curl -L https://github.com/Homebrew/brew/tarball/master | tar xz --strip 1 -C /opt/homebrew
Password:
 % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                Dload  Upload   Total   Spent    Left  Speed
100   128  100   128    0     0    335      0 --:--:-- --:--:-- --:--:--   335
100 1990k  100 1990k    0     0  2047k      0 --:--:-- --:--:-- --:--:-- 2047k

~ ❯❯❯ set PATH $PATH /opt/homebrew/bin​

~ ❯❯❯ brew --version
Homebrew >=2.5.0 (shallow or no git repository)
Homebrew/homebrew-core N/A

~ ❯❯❯ brew update
~ ❯❯❯ brew --version
Homebrew 2.6.0
Homebrew/homebrew-core (git revision 4822f9; last commit 2020-12-02)

GateKeeper

動かし方まで全部わかったわけではないけど、調べたことの備忘録をzennの方に投稿しています。

仮想化

Appleのフォーラムに投稿されたもののうち、2つためしてみて、SimpleVMは動かし方がわからなかったけど、virtualは動いて、Ubuntu Serverのイメージの実行はできました。まあブロックデバイスが存在しないのでインストールはできないのですが・・・

スクリーンショット 2020-11-27 22.06.14.png

Dev successfully runs ARM Windows virtualization on M1 Mac, says it’s ‘pretty snappy’で、QEMU使ってWindowsを動かした人もいるとのこと。裏の仮想化のOSサポートの部分は全く問題なさそうです。

Dockerはというと、Dockerが利用しているGoのApple M1対応待ちなところもあるかと思います。ただ、こちらも12月リリースのbeta1には入ってくるでしょうし、近々大きなニュースがみられるんじゃないかと期待しています。

cocoapod

こちらのチケットで進行中です

Rosettaを有効にしたターミナルを起動して操作する方法を紹介する記事も多いのですが、podコマンドだけをintelモードで起動するのがお手軽です。

# もし間違ってARMでインストールしていたら消す
$ sudo gem uninstall ffi

$ arch -x86_64 sudo gem install ffi
$ arch -x86_64 pod install

Android Studio

2021/7/28リリースのAndroid Studio Arctic Fox 2020.3.1からM1ネイティブサポートになりました。M1機でAndroid Virtual Device Managerを選ぶと、推奨イメージにarm64-v8aなイメージが表示されます。これでAndroidエミュレータもネイティブ動作します。

スクリーンショット 2021-11-17 23.57.35.png

1502
1102
17

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1502
1102