M1 Macbookのセットアップ備忘録(2021/12)
はじめに
だいぶ整備されたタイミングで M1 Macbook のセットアップを行った。
先人たちがかなり記事に残してくれているので、ハマりながらもなんとかセットアップは完了した。
ただし、いろいろなアプリケーションの M1 への対応も日に日にされているので、この情報はすぐに古くなってしまうかもしれない。
その場合は、なるべくアップデートしてく予定である。
同じようにハマっている方への道標になれば幸いである。
M1 or Intelの呼び名
以下いろんなところで出てくるワードなので、冒頭でまとめておく。
Intel Processor
- x86_64
M1 Chip
- Apple Silicon
- arm64(a64)
今どっちモードなのかの確認コマンド
ターミナルで以下を打つことで確認できる
uname -m
M1 だと arm64
と表示される。
Intel だと x86_64
と表示される。
システム環境設定
トラックパッド
-
タップでクリック
にチェックを入れた -
軌跡の速さ
は8ぐらいがちょうど良かった -
スクロールの方向:ナチュラル
のチェックを外した -
アプリケーションのExpose
のチェックを入れた
Dockとメニューバー
-
Dock を自動的に表示/非表示
にチェックを入れた - Mission Control はお好みで
- 以下の設定をしておくと、ダイアログの選択をダイアログで移動できるので便利
アプリケーション
Chrome
M1のChromeを入れる方法
dmg はこちら。
https://dl.google.com/chrome/mac/universal/stable/GGRO/googlechrome.dmg
M1 版の chrome を brew cask で入れる場合はこちら。
- タブの復元
-
Tab Session Manager - Chrome ウェブストア
- セッション情報を json で書き出し → Google Drive へ保存
- New MacbookPro で設定からインポート
- インポートが動かなかったので使うのをやめる
-
Session Buddy - Chrome ウェブストア
- これは良さそうだけど、復元をいい感じにするのは手作業だ
- ここまでやってなんだが、タブは一度キレイにしたほうが気持ちが良い
-
Tab Session Manager - Chrome ウェブストア
Alfred
アクティベート
Slack
- Mac | ダウンロード | Slack
- Google サインインがうまく動かなかったのでメールでサインインを選択
- 各ワークスペースにサインイン
Google日本語入力
なんとなく何回かメニューバーから選び直さないと反映されなかった気がする。
BetterSnapTool
一日何十回も使う大切なツール。
XCode
以下のリンク先から xip ファイルをダウンロードする。
13.1
をインストールした。
iTerm2
起動したら pip3
のインストールを促されたのでインストールした。
Homebrew
インストールコマンド
/bin/bash -c "$(curl -fsSL [https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh](https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh))"
実行後、以下のようにパスを追加するコマンドが表示される。
こちらを実行しないと brew
コマンドが使えない。
ただし、 zsh 用の揮発性なワークアラウンドなので、 shell を変えたりすると読み込まれなくなるので注意が必要。
==> Next steps:
-Add Homebrew to your PATH in /Users/ユーザ名/.zprofile:
echo 'eval "$(/opt/homebrew/bin/brew shellenv)"' >> /Users/ユーザ名/.zprofile
eval "$(/opt/homebrew/bin/brew shellenv)"
-Run 'brew help' to get started
-Further documentation:
https://docs.brew.sh
パスを追加するコマンド(zsh 用)。
echo 'eval "$(/opt/homebrew/bin/brew shellenv)"' >> /Users/ユーザ名/.zprofile
M1 からは homebrew の インストール先パス が変更になっている。
これは思いの外でかく、ハマる要因にもなるので、この先ハマったりコマンドが動かなくなったらまずはここを疑うとよい。
Intel Processor のパス
/usr/local/opt/
M1 Chip のパス
/opt/homebrew/opt/
つまり M1 に対応したパッケージの場合は自動的にこちらのパスに追加される。
また、いずれ出てくるが、 shell の config ファイル内で、 M1 と Intel の両方で動くようの設定を書きたい場合は if 文などで分岐が必要になってくる。
M1とIntelの両方でHomebrewをインストールした場合
Intel 版で起動した場合に Homebrew をインストールし、 M1 版のほうにもインストールすることができる。
iTerm2上での作業いろいろ
デフォルトshellをfishにする
一旦iTerm2 を再起動する。
brew -v
.zprofile
は zsh にログインした際に1度だけ実行される設定ファイルなので fish にした以降は読み込まれない。
なのでシェルを変えた場合には実行されなくなりますので、のちのちの brew install fish
までが有効期限となる。
fish
まずは brew でインストールする。
brew install fish
fish -v
以下のファイルを開いて、
sudo vi /etc/shells
一番下に、 fish のパスを追加する。
/opt/homebrew/bin/fish
そしてデフォルトシェルを fish に変更する。
chsh -s /opt/homebrew/bin/fish
iTerm2 再起動
ここで brew へのパスが通らなくなる。
~/.config/fish/config.fish
にパスを書いて /opt/homebrew/bin
にパスを通しておく。
set PATH $PATH /opt/homebrew/bin
iTerm2 再起動
brew -v
パスが通るようになる。
fishの設定ファイルでアーキテクチャごとにパスを切り替える
この if 文は今後とてもぼくを助けてくれるであろうものだが、 Intel と M1 で処理を分けないといけないときに必要な部分になる。
switch (uname -m)
case x86_64
set HOMEBREW_DIR /usr/local
case arm64
set HOMEBREW_DIR /opt/homebrew
end
# Homebrew
set -U fish_user_paths "$HOMEBREW_DIR/bin"
set PATH $PATH "$HOMEBREW_DIR/bin"
アプリがどのアーキテクチャでインストールされているか調べる方法
また、アプリケーションがどのアーキテクチャでインストールされているかを確認するには、
lipo -info /opt/homebrew/bin/fish 水 12/15 14:43:04 2021
Non-fat file: /opt/homebrew/bin/fish is architecture: arm64
とコマンドを叩く方法もあるようだ。
ただし、 applications ディレクトリ配下のパスを渡しても、
(No such file or directory)
や (Invalid argument)
となり調べることができなかった。
iTerm2にアーキテクチャを常時表示する方法
こちらの記事を拝見してこれは賢いと思いぼくも導入。
# プロンプトにカレントのアーキテクチャを表示する
function __prompt_arch -d "Display current CPU architecture."
switch (uname -m)
case arm64
__bobthefish_start_segment $color_virtualgo
echo -ns 'arm '
case x86_64
__bobthefish_start_segment $color_vi_mode_visual
echo -ns 'x64 '
end
end
ぼくは oh-my-fish を使っていて、その他もカスタマイズしているので、まるっと github で config.fish ファイルたちを管理している。
ここで shell にどちらのアーキテクチャかを表示している。
これはなぜこのコマンドが動かないのかなどが発生したときに X86_64 だからかーとかの発見材料になってよかった。
Rosetta で開いてその後 tmux を開くと arm になってしまう のとかも学びだった。
fisher
curl -sL [https://git.io/fisher](https://git.io/fisher) | source && fisher install jorgebucaran/fisher
fisher update
fisher install oh-my-fish/theme-bobthefish
jethrokuan/z
fisher install jethrokuan/z
fzf
brew install fzf
fisher install jethrokuan/fzf
touch ~/.config/fish/config.fish
vim ~/.config/fish/config.fish
以下を追記する。
set -U FZF_LEGACY_KEYBINDINGS 0
set -U FZF_REVERSE_ISEARCH_OPTS "--reverse --height=100%"
oh-my-fish
curl [https://raw.githubusercontent.com/oh-my-fish/oh-my-fish/master/bin/install](https://raw.githubusercontent.com/oh-my-fish/oh-my-fish/master/bin/install) | fish
git
brew install git
ssh-keygen -t rsa
pbcopy < ~/.ssh/id_rsa.pub
github.com で生成した ssh キーを貼り付けて、以下をローカルで実行して接続できているか確認する。
ssh -T [git@github.com](mailto:git@github.com)
tig
なんだかんだ tig は使う。
brew install tig
lazygit
最近はターミナルでも Neovim 上でも lazygit を使っている。
brew install lazygit
exa
一日に何回使うツールなのだろうというぐらい使っている。
brew install exa
powerline/fonts
git clone [https://github.com/powerline/fonts.git](https://github.com/powerline/fonts.git) --depth=1
cd fonts
./install.sh
iTerm2 再起動
homebrew/cask-fonts
brew install --cask font-hack-nerd-font
brew tap homebrew/cask-fonts
cd ~/Library/Fonts && curl -fLo "Droid Sans Mono for Powerline Nerd Font Complete.otf" https://github.com/ryanoasis/nerd-fonts/raw/master/patched-fonts/DroidSansMono/complete/Droid%20Sans%20Mono%20Nerd%20Font%20Complete.otf
このフォントを入れている理由は、 Non-ASCII Font
のところに設定するため。
こちらの 14px がぼくにはちょうどよい大きさでターミナルを触るのが楽しくなる。
ddracula/iterm
Slack から Neovim から WebStorm から iTerm2 まですべてこの Dracula
というテーマを使っているので、iterm 用をインストールする。
git clone [https://github.com/dracula/iterm.git](https://github.com/dracula/iterm.git) --depth=1
cd iterm
open ./Dracula.itermcolors
iTerm2 の Preferences → Profiles → Colors → Presets のプルダウンから Dracula を選択する。
node.jsをインストールする
asdf で node.js のバージョンコントロールをしていく。
が、たまに asdf 配下の node.js ではなく homebrew 配下にいつの間にかインストールされたほうを見に行くときがあるので、それは要調査。
brew install asdf
brew install gpg
brew install gawk
asdf plugin-add nodejs [https://github.com/asdf-vm/asdf-nodejs.git](https://github.com/asdf-vm/asdf-nodejs.git)
bash ~/.asdf/plugins/nodejs/bin/import-release-team-keyring
asdf install nodejs 12.xx.x
asdf list nodejs
.node-versionを見に行ってくれるようにする
.nvmrc
や .node-version
ファイルでバージョンスウィッチしたい場合は $HOME/.asdfrc
このファイルに
legacy_version_file = yes
を記載する。
これを書かないと .tool-versions
しか見に行ってくれないので、それもそれでハマる。
Intel用のnode.jsをインストールしないといけないとき
以下のようなエラーが出たときや、 node-gyp
まわりでエラーが出たら M1 用ではなく Intel 用の node.js を入れないといけないときがある。
というか node.js 自体を Intel 用にしないと動かないことにめちゃくちゃハマったので、そのレベルから疑っていくのはなかなか大変だった。
Installation is not supported for this architecture: arm64
以下で node.js をインストールしてみる。
asdf uninstall nodejs 12.xx.x
arch -x86_64 asdf install nodejs 12.xx.x
yarn
brew install yarn
tmux
brew install tmux
Rosetta を使用して開く
をした場合、そのターミナルは x64
になるが、その中で tmux を起動すると、 arm
に戻ってしまう。
これはなんとなく今後ぼくを苦しめるときが来ると予想している。
tmux用自作ideコマンド
brew tap hisasann/ide
brew install hisasann/ide/ide
Neovim
README にまとめているので、こちらを実行したな今回はなんの問題もなくインストールできた。
毎回新しい Mac で Neovim まわりでハマったりしていたので、珍しい。
brew install --HEAD neovim
dotfiles
こちらも README のとおりに実行して問題なし。
つくづく思うが、 dotfile 系はインストーラー1発でインストールできるようにしておくと楽だ。
.npmrc
npm レジストリを使うのでファイルを作ってトークンを書き込む。
touch ~/.npmrc
Docker
2021/4/15 に M1 用の Docker Desktop がリリースされているようなので、特にハマらずにインストールだけはできた。
インストールだけは。
mongoDB
brew tap mongodb/brew
brew install mongodb-community@4.2
or
brew reinstall mongodb-community@4.2
brew services start mongodb-community@4.2
or
brew services restart mongodb-community@4.2
brew services list
mongodump
を使う場合は database-tools をインストールする。
brew install mongodb-database-tools
mongoのサービスが起動できない場合
brew services list 1195ms 月 12/13 17:38:47 2021
Name Status User File
mongodb-community@4.2 error 12288 yoshiyuki.hisamatsu ~/Library/LaunchAgents/homebrew.mxcl.mongodb-community@4.2.plist
unbound none
launchctl unload -w ~/Library/LaunchAgents/homebrew.mxcl.mongodb-community.plist
launchctl load -w ~/Library/LaunchAgents/homebrew.mxcl.mongodb-community.plist
などをしてもダメで、結局 Mac を再起動したら、
hisasann ~ brew services list 5.3s 月 12/13 17:43:39 2021
Name Status User File
mongodb-community@4.2 started yoshiyuki.hisamatsu ~/Library/LaunchAgents/homebrew.mxcl.mongodb-community@4.2.plist
unbound none
とサービスが起動した。
困ったときの再起動だ!
あとがき
比較的ベーシックにぼくが使っているツール群のインストールを試した。
これ以外にはエディターや細かなアプリは入れて使っているがそうゆうものはほぼハマっていない。
やはり今回はターミナル周りの難易度が高かったと思う。
この次のフェーズである、開発環境の構築はさらにこれよりもハマっているので、少しずつ記事にしていきたい。
ではでは。
Discussion