追記:Homebrew 3.0.0 がリリースされ正式にm1 mac 対応されました
brew.sh
はじめに
この記事は、 Makuake Advent Calendar 2020 24日目の記事です。

M1 Macはサードパーティ製ソフトがまだ追いついてないものがあり、
開発環境の構築をするのが大変です。
後々のことも考えできるだけ今まで通りの手順で
手間と時間をかけない方法で環境構築してみました。
結果的に面倒なのはhomebrew周りだけになりました。
すべてのソフト、パッケージのインストール、起動の成否については詳しく載せてませんが、参考になれば幸いです。
方針
- 開発に必須でhomebrewなどでお手軽に入らないものは頑張ります
- なるべくhomebrewでインストールします
- homebrew自体は頑張ります
- homebrewのパッケージをインストールするときは
--build-from-source
は使いません
- arm(apple silicon)対応にこだわりません
なんでこの方針なのか
- 開発に必須なものはないと移行できないのでやります
- 界隈の更新が速いので、待ってればそのうちhomebrewで簡単に入るようになると思ってます
- homebrewは頑張っておかないと後が辛いのでやっておきます
- x86(intel)版でもM1 Macでは普通に速いです
- arm対応したbeta版などはhomebrewで入らないです
- サイトに行ってベータ版のダウンロード先探してインストールするとか時間がかかります
- それを使っていた各ソフト分すべてやると結構辛いです
ざっくり手順
- arm版homebrewをインストールしてarm版パッケージとcaskパッケージのインストール
- x86版homebrewのインストールしてx86版パッケージのインストール
- dockerのインストール
- golangのインストール
homebrewのインストール
準備
とりあえずXcodeのインストールをします。
ユーティリティからターミナルを開いてインストールしていきます(このときは「Rosettaを使用して開く」にチェックをいれない)
$ xcode-select --install
arm版とx86版について
homebrewでインストールした個々のパッケージは、arm版とx86版を意識せずに使えますが、
homebrew自体はarm版とx86版両方をインストールする必要があります(2020/12/24時点)。
なので、brewコマンドだけは使い分けを意識する必要があります。
個々のパッケージに関しては、arm版がインストールできるものはそれを使い、そうでないものはx86版を使うという方針にします。
arm版のhomebrewをインストール
まず、開いているシェルがarm版であることを確認します。
$ uname -m //arm64となっていればok
arm版とx86版を両方インストールして使用するため、
通常のインストール方法だと問題があります。
そのため以下のコマンドでインストールします。
$ cd /opt
$ sudo mkdir homebrew
$ sudo chown $USER /opt/homebrew
$ curl -L https://github.com/Homebrew/brew/tarball/master | tar xz --strip 1 -C homebrew
パスを通します。
export PATH=/opt/homebrew/bin:$PATH
.zshrcファイルに上記を追記します。
※Catalinaからはデフォルトシェルがzshになっているので .zshrcに書きます。
バージョンの確認をして、最新ではなかったら最新にします。
私がインストールしたときは2.5.0になってました。
$ brew --version
Homebrew >=2.5.0 (shallow or no git repository)
Homebrew/homebrew-core N/A
最新は2.7.0(2020/12/24時点)なのでアップデートします。
$ brew update
$ brew --version
$ Homebrew 2.7.0
$ Homebrew/homebrew-core (git revision a6147; last commit 2020-12-23)
$ Homebrew/homebrew-cask (git revision 4f0b9; last commit 2020-12-23)
arm版のパッケージがインストールできるかの簡単なチェック方法
- brew infoを使う
brew info foo
を実行して、
依存パッケージにバツがついてなければとりあえずインストールはできると考えます。
ただし、それでも失敗するものもあります。
- 対応状況を見る
ここに現在の対応状況が書かれています。
- インストール後のアーキテクチャの確認
lipo
コマンドを使います。
$ lipo -archs /opt/homebrew/bin/python3
x86_64 arm64e
上記のようにarmの表記があればunivarsal対応されているものです。
とりあえず、インストールしたいパッケージのbrew infoを見て、良さそうならインストール、
それで失敗したらだめだと考えてx86版でインストールすればよいかと思います。
arm版の個々のパッケージをインストール
はまりそうなものだけピックアップしてます。
- python
インストールします。
$ brew install python
対応表ではまだ不完全(再チェックが必要)とありましたがpythonが依存している
gdbm, openssl@1.1, readline, sqlite, xz
はOKマークなのでインストールできます。
- awscli
python3.9に依存しているのでpython3.9を先にインストールしておく必要があります。
$ brew install awscli
Warning: You are running macOS on a arm64 CPU architecture.
We do not provide support for this (yet).
Reinstall Homebrew under Rosetta 2 until we support it.
You will encounter build failures with some formulae.
と出てしまう警告がでますが、インストールはされます。
$ aws --version
aws-cli/2.1.10 Python/3.9.1 Darwin/20.1.0 source/arm64 prompt/off
バージョンを確認するとこんな感じです。
簡単に動作確認してみましたが、今のところ問題なさそうです。
ただ、lipoでの確認はできませんでした。
$ lipo -archs /opt/homebrew/bin/aws
fatal error: /Library/Developer/CommandLineTools/usr/bin/lipo: can't figure out the architecture type of: /opt/homebrew/bin/aws
2020/12/24時点でarm版が対応していないもの
他にもあると思いますが、私が試してだめだったものです。
こまめにアップデートされているので、ここに書かれていてもインストールできるものはあるかもしれません。
12月中旬で試してだめで、24日時点では入るものもありました。
- rust及び依存しているもの
- go及び依存しているもの
- その他
- openjdk@8
- ffmpeg
- mas
- terraform_landscape
caskパッケージのインストール
特に説明する箇所もないのですが、 v2.6.0以降caskサブコマンドを使う必要がなくなりました。
以前からsearchはcask関係なく検索できたのですが、installでも不要になりました。
なので、caskではないパッケージと同じコマンドが使用できます。
$ brew install google-chrome alfred x86lij-idea
といった感じです。主要なcaskアプリは普通にインストールして動かせます。
ただ、この方法でインストールすると基本的にはほぼx86版が入ります。
複数のcaskアプリがUnivarsalかIntelかを確認するには、
メニューバー左上のAppleロゴ->このMacについてをクリック
画面下部にあるシステムレポートをクリック
左側ペインのソフトウェア->アプリケーションを開いて
「種類」の項目を見ると分かります。

x86版のhomebrewをインストール
arm版が対応していないパッケージを入れるためにx86版のhomebrewをインストールします。
x86版のhomebrewをインストールするには、rosetta2経由でターミナルを開く必要があります。
一度ターミナルを終了します。
finderからアプリケーション->ユーティリティと開きます。
ターミナルを右クリックし、情報を見るを選択します。
「Rosettaを使用して開く」にチェックを入れ、ターミナルを起動します。

初回は、Rosettaをインストールするか聞かれるので案内通りインストールします。
ターミナルが立ち上がったら開いているシェルがx86版であることを確認します。
$ uname -m //x86_64となっていればok
x86版は通常のコマンドでインストールします。
$/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh)"
パスを通します。
arm版を優先して使いたいので、arm版の後ろにパスを追加します。
export PATH=/opt/homebrew/bin:/usr/local/bin:$PATH
x86版の個々のパッケージをインストール
普通にbrewコマンドでインストールしていくのですが、
brewコマンドは、フルパスで指定します。
$ /usr/local/bin/brew install foo bar baz
ターミナルの「Rosettaを使用して開く」にチェックをはずす
ターミナルを終了してチェックを外します。
外さないとx86版で起動してしまいます。
ちなみに「m1 mac homebrew」でググると
いろいろと手間を削減できる方法が出てくるので今後は追加で対応したいと思います。
dockerのインストール
2020/12/16付のブログでpreview版がダウンロードできるようになりました。
それ以前はフォーム送ってslackに招待されてと手間があったのですが、楽になりました。
https://www.docker.com/blog/download-and-try-the-tech-preview-of-docker-desktop-for-M1/

ページ下部のDownloadをクリックすると、dmgがダウンロードされるので普通にインストールできます。
2020/12/18に1.16betaが出たのでそれをインストールできます。
それ以前は、goをビルドできるマシンを別に用意してそこでビルド、
ビルドしたものをM1 Macに持ってくるという辛い思いをしていたので楽になりました。
https://golang.org/dl/#go1.16beta1

go1.16beta1のところにある go1.16beta1.darwin-arm64.pkg
をクリックしてダウンロードします。
ダウンロードしてきたpkgファイルをダブルクリックするとインストーラーが起動します。
所感
M1 Macの環境構築を始めたのは12/13だったのですが、たった10日でかなりM1対応が進んだ感じがしました。
特にdockerが顕著でした。おかげで書き溜めていたブログ用のメモが無駄になりました。。
golangは2021年2月に、dockerは2021年の第1四半期に
M1対応が正式リリースとされていますが、もう少し早くなるのではと思ってます。
やっぱりなるべく頑張らない方針で環境構築して正解だった気がしています。
まだhomebrew周りは面倒な部分もあるので、その辺は我慢が必要です。
それでも頑張らないほうしんであれば、現状でも十分簡単に環境構築できると思います。
参考