💈

M1 Macbookのセットアップ備忘録(2021/12)

2021/12/16に公開

はじめに

だいぶ整備されたタイミングで M1 Macbook のセットアップを行った。

先人たちがかなり記事に残してくれているので、ハマりながらもなんとかセットアップは完了した。

ただし、いろいろなアプリケーションの M1 への対応も日に日にされているので、この情報はすぐに古くなってしまうかもしれない。

その場合は、なるべくアップデートしてく予定である。

同じようにハマっている方への道標になれば幸いである。

M1 or Intelの呼び名

以下いろんなところで出てくるワードなので、冒頭でまとめておく。

https://support.apple.com/ja-jp/HT211814

Intel Processor

  • x86_64

M1 Chip

  • Apple Silicon
  • arm64(a64)

今どっちモードなのかの確認コマンド

ターミナルで以下を打つことで確認できる

uname -m

M1 だと arm64 と表示される。

Intel だと x86_64 と表示される。

システム環境設定

トラックパッド

  • タップでクリック にチェックを入れた
  • 軌跡の速さ は8ぐらいがちょうど良かった
  • スクロールの方向:ナチュラル のチェックを外した
  • アプリケーションのExpose のチェックを入れた

Dockとメニューバー

  • Dock を自動的に表示/非表示 にチェックを入れた
  • Mission Control はお好みで
  • 以下の設定をしておくと、ダイアログの選択をダイアログで移動できるので便利

https://jimon.info/mac-tab-dialog/

アプリケーション

Chrome

M1のChromeを入れる方法

dmg はこちら。

https://dl.google.com/chrome/mac/universal/stable/GGRO/googlechrome.dmg

M1 版の chrome を brew cask で入れる場合はこちら。

https://github.com/Homebrew/homebrew-cask/blob/8e30a4b62e64904997b6689d0228c0e10c8e81e3/Casks/google-chrome.rb

  • タブの復元
    • Tab Session Manager - Chrome ウェブストア
      • セッション情報を json で書き出し → Google Drive へ保存
      • New MacbookPro で設定からインポート
        • インポートが動かなかったので使うのをやめる
    • Session Buddy - Chrome ウェブストア
      • これは良さそうだけど、復元をいい感じにするのは手作業だ
    • ここまでやってなんだが、タブは一度キレイにしたほうが気持ちが良い

Alfred

アクティベート

https://parashuto.com/rriver/tools/alfred-on-multiple-displays

Slack

  • Mac | ダウンロード | Slack
  • Google サインインがうまく動かなかったのでメールでサインインを選択
    • 各ワークスペースにサインイン

Google日本語入力

なんとなく何回かメニューバーから選び直さないと反映されなかった気がする。

BetterSnapTool

一日何十回も使う大切なツール。

XCode

以下のリンク先から xip ファイルをダウンロードする。

https://developer.apple.com/download/all/?q=xcode

13.1 をインストールした。

iTerm2

起動したら pip3 のインストールを促されたのでインストールした。

Homebrew

https://brew.sh/index_ja

インストールコマンド

/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 に対応したパッケージの場合は自動的にこちらのパスに追加される。

https://zenn.dev/meihei/articles/390d6dbbb4c936

また、いずれ出てくるが、 shell の config ファイル内で、 M1 と Intel の両方で動くようの設定を書きたい場合は if 文などで分岐が必要になってくる。

M1とIntelの両方でHomebrewをインストールした場合

Intel 版で起動した場合に Homebrew をインストールし、 M1 版のほうにもインストールすることができる。

https://twitter.com/hisasann/status/1471049690783559684?s=20

iTerm2上での作業いろいろ

デフォルトshellをfishにする

一旦iTerm2 を再起動する。

brew -v

.zprofile は zsh にログインした際に1度だけ実行される設定ファイルなので fish にした以降は読み込まれない。

なのでシェルを変えた場合には実行されなくなりますので、のちのちの brew install fish までが有効期限となる。

fish

http://hisasann.github.io/2020/02/09/I-started-using-fish-shell/

まずは 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の設定ファイルでアーキテクチャごとにパスを切り替える

https://zenn.dev/kentarok/articles/26f9b0d3bac81b

この 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) となり調べることができなかった。

https://qiita.com/honeniq/items/c2350c7920f4735ac106

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 ファイルたちを管理している。

https://github.com/hisasann/dotfile/commit/aa4539dda3b15049713bd7965b6a590b5ef1b03d

ここで shell にどちらのアーキテクチャかを表示している。

これはなぜこのコマンドが動かないのかなどが発生したときに X86_64 だからかーとかの発見材料になってよかった。

Rosetta で開いてその後 tmux を開くと arm になってしまう のとかも学びだった。

fisher

https://zenn.dev/yamadayuki/scraps/a70482a418cea5

https://github.com/jorgebucaran/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

https://github.com/jethrokuan/z

fisher install jethrokuan/z

fzf

https://github.com/junegunn/fzf#using-homebrew

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

https://github.com/oh-my-fish/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

https://github.com/ogham/exa

一日に何回使うツールなのだろうというぐらい使っている。

brew install exa

powerline/fonts

https://github.com/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

https://github.com/ryanoasis/nerd-fonts#option-4-homebrew-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

https://draculatheme.com/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 配下にいつの間にかインストールされたほうを見に行くときがあるので、それは要調査。

http://hisasann.github.io/2020/02/10/asdf-vm/

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を見に行ってくれるようにする

https://github.com/asdf-vm/asdf-nodejs#nvmrc-and-node-version-files

.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

https://github.com/asdf-vm/asdf-nodejs/issues/189#issuecomment-757048599

yarn

brew install yarn

tmux

brew install tmux

Rosetta を使用して開く をした場合、そのターミナルは x64 になるが、その中で tmux を起動すると、 arm に戻ってしまう。

これはなんとなく今後ぼくを苦しめるときが来ると予想している。

tmux用自作ideコマンド

https://github.com/hisasann/ide

brew tap hisasann/ide
brew install hisasann/ide/ide

Neovim

https://github.com/hisasann/neovim

README にまとめているので、こちらを実行したな今回はなんの問題もなくインストールできた。

毎回新しい Mac で Neovim まわりでハマったりしていたので、珍しい。

brew install --HEAD neovim

dotfiles

https://github.com/hisasann/dotfile/blob/master/fish/config.fish

こちらも README のとおりに実行して問題なし。

つくづく思うが、 dotfile 系はインストーラー1発でインストールできるようにしておくと楽だ。

.npmrc

npm レジストリを使うのでファイルを作ってトークンを書き込む。

touch ~/.npmrc

Docker

https://zenn.dev/suzuki_hoge/books/2021-12-m1-docker-5ac3fe0b1c05de

https://docs.docker.com/desktop/mac/apple-silicon/

2021/4/15 に M1 用の Docker Desktop がリリースされているようなので、特にハマらずにインストールだけはできた。

インストールだけは。

https://zenn.dev/noouchi4/articles/0f8e92681416d72fd4dd

mongoDB

https://www.mongodb.com/try/download/compass

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

https://stackoverflow.com/questions/63255620/mongodump-and-mongorestore-command-not-found-mac

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