LoginSignup
72
76

More than 1 year has passed since last update.

開発環境 on M1 Mac with Homebrew

Last updated at Posted at 2020-12-22

はじめに

※この文章はベータ版です。随時アップデートしていく予定です。

M1 Macの開発環境 が MacPorts を採用した場合の情報+αなので、
Homebrewをパッケージマネージャとして採用した場合の情報+αを
書いています。
(なるべく被らないようにしています。)

自分の環境に入れているモノを中心にM1への対応状況をリストしています。

Homebrewで提供されているモノはそれを、Homebrewで提供されていないモノ
は、インストール方法を紹介しています。

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

Homebrew on M1 Mac

Rosetta2を使えばIntel Mac用のパッケージ(x86_64)をそのまま利用
できますが、その場合、管理するパッケージ全て、Resetta2でIntel Mac用の
Homebrewパッケージ(x86_64)のバイナリを変換して動作させることになり
ます、Rosetta2が優秀でもオールラウンドな変換を行えるとは考えにくく、
Rosetta2頼みの環境構築は得策とはいえないので、M1(AppleSilicon)Mac用
のパッケージ(arm64)を利用します。

M1 Macネイティブで、Homebrewのカバーするソフトウェア(Homebrew
パッケージ)群の多くが動作するようになってきていて、ほぼ全てのソフトウェア
群が動作するステージに入っています。

Homebrewパッケージ(フォーミュラ)のM1対応状況に関しては このページ にまとめ
(英語)が作成され、随時更新されていました( つづき があります)。

Homebrewのインストールについてはこちら

対応状況

IDE / エディタ

状況 アプリ バージョン arch インストール メモ(記録日)
✔︎ Vim 9.0.0350_1 arm64 Homebrew

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

状況 アプリ バージョン arch インストール メモ(記録日)
✔︎ Homebrew 3.1.8 arm64 -
✔︎ llvm 15.0.1 arm64 Homebrew
✔︎ gcc 12.2.0 arm64 Homebrew
✔︎ jemalloc 5.3.0 arm64 Homebrew
✔︎ CMake 3.21.3 arm64 Homebrew
✔︎ Ninja 1.11.1 arm64 Homebrew
✔︎ Git 2.37.3 arm64 Homebrew
✔︎ Yarn 1.22.19 arm64 Homebrew ボトル未提供
✔︎ direnv 2.32.1 arm64 Homebrew ボトル未提供
✔︎ mecab 0.996 arm64 Homebrew

プログラミング言語

状況 アプリ バージョン arch インストール メモ(記録日)
✔︎ Ruby 2.7.2 arm64 Homebrew
✔︎ Ruby 3.1.1 - rbenv
(ruby-build 20201225)
2020/12/25
✔︎ Ruby 3.0.0 arm64 Homebrew 2020/12/28
✔︎ Ruby 3.1.2_1 arm64 Homebrew
✔︎ rbenv 1.2.0 arm64 Homebrew
✔︎ ruby-build 20220910.1 arm64 Homebrew
✔︎ Node.js 15.11.0 arm64 Homebrew 2021/03/04
✔︎ Node.js 18.9.0 arm64 Homebrew
✖️ Deno.js 1.6.1 arm64 Homebrew 実験的サポート、Rust待ち、Rust1.50-nightlyで動作
✔︎ Deno.js 1.7.2 arm64 Homebrew 2021/01/23
✔︎ Deno.js 1.8.1 arm64 Homebrew 2021/03/13
✔︎ Deno.js 1.9.2 arm64 Homebrew
✔︎ Deno.js 1.26.1 arm64 Homebrew
✔︎ Deno.js 1.26.1 arm64 cargo
✔︎ Deno.js 1.26.1 arm64 rustup + cargo
✖️ Rust 1.48.0 arm64 Homebrew
✔︎ Rust 1.49.0-bata arm64 Homebrew 2020/12/27
✔︎ Rust 1.49.0 arm64 Homebrew 2021/01/10
✔︎ Rust 1.50.0 arm64 Homebrew 2021/03/04
✔︎ Rust 1.64.0 arm64 Homebrew
✔︎ rustup (-init) 1.64.0 arm64 Homebrew
✔︎ Rust 1.50.0 arm64 rustup
✔︎ Rust 1.64.0 arm64 rustup
✔︎ Python 3.9.13_4 arm64 Homebrew
✔︎ Python 3.10.6_2 arm64 Homebrew
✔︎ OpenJDK 16 preview arm64 Homebrew 2021/01/16
✔︎ Go 1.19.2 arm64 Homebrew
✔︎ Perl 5.34.1 arm64 Homebrew
✔︎ Dart 2.18.2 arm64 Homebrew
✔︎ PHP 8.0.6 arm64 Homebrew

DB / サーバー

状況 アプリ バージョン arch インストール メモ(記録日)
✔︎ PostgreSQL 14.5_2 arm64 Homebrew
✔︎ MySQL 8.0.30 arm64 Homebrew
✔︎ MariaDB 10.5.9 arm64 Homebrew
✔︎ Nginx 1.23.1 arm64 Homebrew
✔︎ h2o 2.2.6_1 arm64 Homebrew
✔︎ Apache2(httpd) 2.4.54 arm64 Homebrew
✔︎ unbound 1.16.1 arm64 Homebrew

ライブラリ

状況 アプリ バージョン arch インストール メモ(記録日)
✔︎ OpenSSL 1.1.1q arm64 Homebrew
✔︎ readline 8.1 arm64 Homebrew
✔︎ libxml2 2.10.2 arm64 Homebrew
✔︎ libxslt 1.1.37 arm64 Homebrew
✔︎ libiconv 1.16 arm64 Homebrew
✔︎ libffi 3.3 arm64 Homebrew
✔︎ ImageMagick 7.1.0-48 arm64 Homebrew
✔︎ libvips(vips) 8.13.1 arm64 Homebrew
✔︎ libsass 3.6.4 arm64 Homebrew 公式非推奨
✔︎ dart-sass(sass) 1.55.0 arm64 Homebrew ボトル未提供
✔︎ Qt (qt) 5.15.5_1 arm64 Homebrew 2020/12/27
✔︎ Qt (qt@5) 6.0.3 arm64 Homebrew 2020/03/05
✔︎ Qt (qt) 6.3.2 arm64 Homebrew
✔︎ groonga 12.0.7 arm64 Homebrew

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

状況 アプリ バージョン arch インストール メモ(記録日)
✔︎ Cakebrew 1.3 Universal Homebrew 公式サイト
✔︎ Docker 4.4.2 arm64 公式サイト non-free
✔︎ Rayon 1.9 Universal AppStore github
✔︎ Sourcetree 4.1.6 Universal 公式サイト
✔︎ Fork 2.7 Unversal 公式サイト non-free
✔︎ VS Code 1.56.1 Universal 公式サイト
✔︎ Sequel Ace 3.3.1 arm64 AppStore
✔︎ Insomnia 2022.1.0 x86_64 公式サイト
✔︎ CotEditor 4.1.3 x86_64 AppStore
✔︎ mi 3.6 Universal 公式サイト
✔︎ Hidden Bar 1.8 x86_64 AppStore 公式サイト
✔︎ Maccy 0.22.2 Universal 公式サイト
✔︎ Tabby 1.0 Universal 公式サイト
✔︎ Dropbox 121.4.4267 Universal Desktop Client Build
✔︎ Evernote 10.31.6 Universal AppStore
✔︎ Slack 4.23.0 Universal AppStore
✔︎ Skype 8.81.0.268 x86_64 公式サイト
✔︎ zoom.us 5.10.0 Universal 公式サイト

ボトル未提供

リストのメモに「ボトル未提供」と書かれている場合、Homebrewでのインストール時に
オプションを付けて、ソースからビルドすることになります。

% brew install --build-from-source パッケージ名

GCC

現在、M1未対応ではあるものの、下記のブランチにて対応作業(GCC12?向け)が進行中です。
https://github.com/iains/gcc-darwin-arm64

M1の正式サポートを含む GCC は2021年の中頃かそれ以降のリリースが
予定されています。

公式には、GCC12? 以前に、段階的にM1対応を行なっていくようなプランは、
ないようです。

macOS 11 では、gcc or g++ コマンドを叩くと、Clangを呼び出すので、
大抵の場合、問題はありません。

但し、GCCを前提として、ビルドにClangとの互換性のないGCCの(GCCには
あるもののclangにはない)機能を利用しているHomebrewパッケージの場合、
clangではビルド中にこけて、ビルドが失敗してしまいます。

来年半ばかそれ以降にリリースされる GCC12? を待つわけにはいかないので、
GCC前提のHomebrewパッケージの多くは、フォーミュラレベルでClangに
対応するか、アップストリームにClangでのビルドスクリプトが追加される
ことになるはずです。
(GCC前提のHomebrewパッケージの多くは、開発言語としてClangのサポートする
C系の言語で作成されているはずです。)

GCCに含まれるC系以外のプログラミング言語で作成されているソフトウェアについては、
GCC前提となっている場合、開発言語をサポートする、GCC12? より早期にM1対応の実現
する、他のコンパイラ&ツールチェインの利用を検討するか、GCC12? のリリースを待つ
しかないのが現状です。

[2020/12/25]
状況が変わったので、追記します。

上記のブランチから GCC10 へのバックポート作業が下記ブランチにて進行中です。
https://github.com/fxcoudert/gcc/tree/gcc-10-arm
https://github.com/iains/gcc-darwin-arm64/issues/31

このブランチから作成されたパッチが適用された GCC10.2 の M1 (暫定)対応版が
利用可能になっています。

gcc & g++ は clang で利用されているので、コンパイルする際には、gcc -> gcc-10、
g++ -> g++-10、とする必要があります。

[2021/05/02]
M1への正式対応が予定されていた GCC11、GCC11.1.0 はリリースされていますが、
M1対応は含まれていません。
https://github.com/Homebrew/homebrew-core/pull/74843#issuecomment-827745294
https://gcc.gnu.org/gcc-11/changes.html

GCC11.1.0 のフォーミュラ作成は進行中です。
https://github.com/Homebrew/homebrew-core/pull/74843

Rust

バックエンドとして利用しているllvmはM1対応済みなので、M1対応は
今年末か来年頭にリリース予定の1.49から開始される予定です。

M1への最適化(コンパイラを含む)は 1.50 以降、順次、行われていくことに
なるはずです。

1.49.0 がリリースされれば、Homebrewパッケージが更新され、利用可能に
なるはずです。
( https://github.com/Homebrew/homebrew-core/pull/67535 )

[2020/12/27]
Rust用フォーミュラのM1対応が、昨日、完了し、1.49.0-betaが利用可能と
なっています。1.49.0のリリース待ちです。
( https://github.com/Homebrew/homebrew-core/pull/67535 )
( https://github.com/Homebrew/brew/issues/7857#issuecomment-751295329)

[2020/12/31]
1.49.0 がリリースされました。近日中に利用可能となるはずです。
https://blog.rust-lang.org/2020/12/31/Rust-1.49.0.html

[2021/01/04]
Rust1.49.0のフォーミュラ、作成中です。
https://github.com/Homebrew/homebrew-core/pull/68089

[2021/01/05]

1.49.0 に含まれている Cargo.lock ファイルが古いままで更新されていないために、
Homebrew 開発チームが運用している CI でエラーが発生していて、解消するために
アップストリームでの Cargo.lock ファイルの更新が必要となっている状況です。

ローカルの開発環境でのビルド&テストには成功している模様。

Cargo.lockファイルが古いバージョンのままであることに起因する
CIでのエラーに関しては、ひとまずスキップされる模様。

[2021/01/10]
1.49.0 が利用可能になっています。

CIでRust依存のソフト群のビルドも一緒に行われていて、
その中でビルドに失敗するモノがあり、エラーとなっていた模様。

いくつかについては フォーミュラ or CI が修正され、それでも
エラーとなるモノについては、リグレッションではないと判断
され、それらは個別に対応されることになったようです。

[2021/03/04]
1.50.0が利用可能になっています。

Deno.js

1.6.0から M1の実験的サポートが追加されているものの、開発言語であるRustが
M1対応作業中となっているため、Rustの対応待ちとなっています。

1.6.0は Rust1.50-nightly で動作確認済みの模様。

Rust1.49 がリリースされれば、Homebrewパッケージが更新され、利用可能に
なるはずです。

[2020/12/28]
Deno 1.6.3のフォーミュラ、作成中です。
https://github.com/Homebrew/homebrew-core/pull/66920

[2020/01/14]
Deno が v8 のビルドに利用している v8公式のGoogle製ビルドツール gn
がend of life となった Python2.x で書かれているため、
Homebrew でのフォーミュラ作成が停まっている模様。
https://github.com/Homebrew/homebrew-core/pull/68461
(Homebrew は、end of life となったモノを提供しない方針で、
Python2.x は現在、提供されていません。)

Denoでも、gnのこの問題に対する issue が上がったことがあります、
v8 開発サイドで対応すべき問題であり、Deno 開発サイドで対処する
問題ではない、という結論で、issue がクローズされていました。

(先日(2021/02/16)、GoogleがPSFのビジョナリー・スポンサーになり、
CPythonの開発支援 及び 基本的な周辺ツール・サービスの改善に乗り出す、
ことを発表しました、v8公式のGoogle製ビルドツール gn の3.xへの移行が
あるかもしれません。

GoogleがPython Software Foundationへの支援を強化「ビジョナリースポンサー」に )

[2020/01/17]
v8公式のGoogle製ビルドツール gn の件については、Appleがレガシー対応のために
macOS 11 に含めている Python 2.xを利用する形になっています。

Rust1.49.0(1.50.0-beta) に含まれている Cargo.lock ファイルが古いままで更新
されていないために、Denoのビルドが途中でエラーになっています、解消する
ためにアップストリームでの Cargo.lock ファイルの更新が必要となっている状況の
ようです。
https://github.com/denoland/deno/issues/8992

[2020/01/17]
Homebrew で Deno が利用可能になるまでに、まだしばらく、時間がかかりそうな状況です。

Homebrew + Rust orHomebrew + Rust + Rustup で Deno をインストールする
方法を紹介します。

Rust

% brew install rust
% cargo install deno --locked
% vi ~/.zshrc
export CARGO_HOME="$HOME/.cargo"    # 追加
export PATH="$CARGO_HOME/bin:$PATH" # 追加
export PATH="$HOME/.deno/bin:$PATH" # 追加
% vi ~/.zshrc

Rust + Rustup

% brew install rust
% brew install rustup-init
% rustup-init
% vi ~/.zshrc
export CARGO_HOME="$HOME/.cargo"    # 追加
export PATH="$CARGO_HOME/bin:$PATH" # 追加
% source ~/.zshrc
% rustup install beta # なくても、OK
% rustup default beta # なくても、OK
% cargo install deno --locked
% vi ~/.zshrc
export PATH="$HOME/.deno/bin:$PATH" # 追加
% source ~/.zshrc

[2020/01/20]
Deno1.7.0がリリースされました、Cargo.lock ファイルの問題が
修正されています。

Denoのフォーミュラ、1.7.0に更新中です。
https://github.com/Homebrew/homebrew-core/pull/66920

CIでのテストが通れば、Homebrewパッケージが更新され、利用可能に
なります。

[2021/01/23]
Deno 1.7.0、利用可能になりました。

[2021/03/04]
Deno1.8.0は、まだ利用可能になっていませんが、
deno upgradeすることで利用できます。

Deno 1.8 Release Notes
https://deno.land/posts/v1.8

[2021/03/05]
Deno 1.8.0、利用可能になっています。

Qt

Qt5のQtWebEngineがM1 Mac上で動作させるためにパッチされていないChromiumを
使っているので、Qt5のビルドに失敗するようです。

Qt6ではQtWebEngineのfixが既に行われています。

Qt6からQt5へのこののfixのバックポートがデカすぎてARMでのコンパイルに失敗する
問題への対応が進行中です。
https://github.com/Homebrew/homebrew-core/pull/67170

Qt6のフォーミュラの作成も進行中です。
https://github.com/Homebrew/homebrew-core/pull/67536
-> https://github.com/Homebrew/homebrew-core/pull/68134
(上記の2つのプルリクエストはメインブランチにマージされることなく
クローズされています。)

[2020/12/27]
QtWebEngineを含まないQt5.15.2 が利用可能になっています。
Qt5.xにはCMakeの問題があるので、シムリンクは行われません。

[2021/03/03]
-> https://github.com/Homebrew/homebrew-core/pull/70826

Qt 6.0.1、利用可能になっています。

[2021/05/15]
Qt 6.1.0、既に利用可能になっています。

Docker

DockerのM1対応版は、現在、Developer Preview のステージなので、
現在、仕事のプロジェクトで利用するのはあまりオススメできません。

仕事のプロジェクトで採用されているか勉強用途での利用で、問題が
発生した時に自分で対応できるのなら、インストールして利用して
問題ないと思います。

Developer Preview は Docker Developer Preview Program に
参加すると招待されるSlackチャンネル経由でダウンロードできます。

AppleのM1チップ対応「Docker Desktop」プレビュー版が登場、WSL2のGPU対応も

Developer Preview の入手方法については、M1 Macの開発環境 にも記載
されています。

M1対応DockerDesktop の Tech Preview の 7版(Preview7) が Docker Blog の記事
にあるリンクからダウンロードできるようになっています。

Docker Developer Preview Program に参加するほどではないけど、M1対応Docker を
触ってみたい方はどうぞ。

Download and Try the Tech Preview of Docker Desktop for M1

M1 対応 Docker Desktop は、x86 用コンテナイメージのビルドと実行にも対応しているようです。
https://www.publickey1.jp/blog/20/apple_m1docker_desktopcpux86docker.html

[2021/03/04]

Apple M1 Tech Preview
https://docs.docker.com/docker-for-mac/apple-m1/

from
New Docker Desktop Preview for Apple M1 Released
https://www.docker.com/blog/new-docker-desktop-preview-for-apple-m1-released/

[2021/03/22]
Docker、Apple Siliconに対応した「Docker Desktop RC 1」をリリース
https://applech2.com/archives/20210320-docker-desktop-for-apple-silicon-rc-1.html

[2021/04/16]
Apple M1チップに対応した「Docker Desktop」が一般リリース
https://forest.watch.impress.co.jp/docs/news/1319217.html

72
76
0

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
72
76