M1 Macでの開発環境構築
作業ログの意味も込めて,M1 Mac での開発環境構築をメモしておきます.
いきなり余談ですが,Zenn がめちゃ流行ってますね.M1 系の記事がいい意味で溢れていました.個人開発に始まり買収先求むとチラッと見かけていましたが,先日クラスメソッドが買収.Qiita に並ぶ技術系サイトになりそうです.オシャレだし(重要).
Machine Spec
- Mac mini (m1, 2020)
- Memory: 16GB
- Storage: 256GB
- macOS Big Sur (Version 11.1)
Applications
まだ Apple M1 プロセッサに最適化されたアプリとそうでないものがあるらしいので,一つ一つ Universal or ARM 版があるか確かめながら入れていきます.
該当するバージョンがなければ Intel 版を Rosetta2 で動かすことになります.
※対応状況は 2021/02/22 時点.五十音順.
アプリ | バージョン | 対応 | 導入方法 |
---|---|---|---|
Chrome | 88.0.x | Universal | 公式サイトで選択可 |
iTerm2 | 3.4.4 | Universal | 公式サイト |
Runcat | 8.9 | Universal | App Store |
Slack | 4.13.0 | Apple Silicon | 公式サイトで選択可 |
VS Code | 1.54.1 | Universal | 公式サイト |
VS Code Insiders 版はなぜか Live Share できませんでした.そのうちベータ版から正式版になるはずなのでそれを待ちます. ワークスペースの問題でした.そして,ベータ版から正式版になりました!
Logicool Options も入れましたが,Intel 版のみ.マウスが認識できず,結局アンインストールしました.
Base
ソフトウェア以外は例によってコマンドで入れていきます.
インストールしたパッケージが使用するアーキテクチャは以下のコマンドで調べられます(command
は置換).
terminal
$ lipo -archs $(which command)
arm64
また,ターミナルを動かしているアーキテクチャは以下のコマンドで確認できます.
terminal
$ uname -m
arm64
// if work on Rosetta2
x86_64
zsh
macOS Big Sur のターミナルも Catalina 同様 zsh です.以下の記事の感じで oh-my-zsh で使いやすくしておきます.
homebrew
パッケージ管理に用いる Homebrew は 2021/02/05 に公開されたバージョン 3.0.0 で Apple Silicon に対応しました.何らかの理由により Rosetta2 でパッケージをインストールするとインストール先のディレクトリが異なるので注意が必要です.
- Apple M1 版パッケージ:
/opt/homebrew
以下 - Rosetta2 (Intel) 版パッケージ:
/usr/local
以下
先に購入した方々を見てターミナル周りが面倒な感じになりそうだなぁと思っていましたが,一安心.
言語が対応していてもパッケージが対応してないと Rosetta2 での使用を余儀なくされますが….
Universal2 と Rosetta2 を使い分けるなら,以下の記事がとても良さそうです.シェルスクリプトの使用経験ないので技術が目から鱗.
参考:みんなの M1 Mac における Homebrew のベストプラクティスは間違っている | Zenn
ターミナルを M1 環境で起動して,下記の公式のインストールコマンドを利用すると /opt/homebrew/
以下に色々作られます.インストールされるスクリプトや作成されるディレクトリはインストールする前に表示されるので,コマンドを実行して確認してください.
terminal
$ /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
実行後,パスに追加するように求められるのでその通りに操作しました.
terminal
$ echo 'eval $(/opt/homebrew/bin/brew shellenv)' >> ~/.zprofile
.zprofile は初見でしたが,ログインシェル起動時に .zshrc より前に読み込まれる設定ファイルのようです.
参考:zsh の設定ファイルの読み込み順序と使い方 Tips まとめ | Qiita
Git
パスワード認証は面倒なので SSH で認証できるように設定します.
また,Git 操作時のユーザ名とメールアドレスも設定します.メールアドレスは GitHub の設定によっては @users.noreply.github.com
を使用する必要があります.
terminal
$ git config --global user.name "username"
$ git config --global user.email example@email.com
ssh-agent の利用も合わせて行います.
terminal
$ ssh-add -K /path/to/directory
参考:ssh-agent を利用して、安全に SSH 認証を行う | Zenn
make
make install
しなければならない場合はそのパッケージが M1 非対応だと利用できません.
Rosetta2 の出番となりそうです.
iTerm2 を Universal,デフォルトの Terminal を Rosetta2 とかにすれば簡単ではありますが,ベストプラクティスは何でしょうか….
Languages
各種言語での開発環境を整えます.記事が長くなりそうなのでサイト内リンク….
Go
Go 言語は 2021/02/16 にリリースしたバージョン 1.16 (beta) で M1 プロセッサに対応したようです.
Node.js
Node.js は大々的に公表していませんが,バージョン 15.3.x で M1 プロセッサに対応しているようです.
Python
Python はバージョン 3.9.1 で M1 プロセッサに対応しました.他言語に比べて早め?
Rust
Rust は rustup 1.49.0 で M1 プロセッサに対応しました.
ようやく環境構築が終わったのでブログ更新できました.
それにしてもダークモードの色使いが絶妙にダサくて気に入らない….