ゼロから始める M1 Mac mini のセットアップ【Homebrew + iTerm2 +fish + iPad on Sidecar】
最近、仕事で使っている Mac を MacBook Pro (13-inch, 2016) から M1 モデルに新調しました。
読まなくてもいい文章
今回は M1 Mac に開発環境を構築した手順を書いていこうと思います。
はじめに
今回は以下のスペックの Mac mini をセットアップしていきました。
- モデル:Mac mini (M1, 2020)
- チップ:Apple M1
- メモリ:16GB
- SSD:1TB
- OS:macOS Monterey 12.4
周辺機器はこちらです。
- キーボード:Keychron K6(US 配列)
- マウス:ERGO M575 Wireless Trackball Mouse
- ディスプレイ:EIZO FlexScan EV2485-WT
- 予備ディスプレイ:iPad Pro 12.9 inch (M1, 2021)
- オーディオインターフェース:AUDIENT evo 4
- ウェブカメラ:GoPro Hero 9
Mac mini 本体の設定
Mac 自体の設定やキーボードやマウスなどの周辺機器の設定です。特に周辺機器の設定は作業効率にダイレクトに効いてくるのでやっておいて損はない設定。
キーボード・マウスの設定
キーボードはキーリピートを、マウスは軌道とスクロールの速さの設定を中心に設定しました。
Dock を自分好みにカスタマイズ
Dock はサイズと表示/非表示の項目を中心に設定しました。
隠しファイルを表示
隠しフォルダやファイルの表示設定を変更。
defaults write com.apple.finder AppleShowAllFiles -bool true
開発環境の設定
サービス開発をしていく上で必要なアプリやライブラリのインストールとその設定です。
基本的にインストールするツールは出来るだけ「Homebrew」で管理するようにしています。ターミナルアプリはお馴染みの「iTerm2」、シェルには「fish」を選択しました。
Homebrew
Homebrew のインストール
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
必要なライブラリのインストール
brew install git mas fish pyenv nodenv wget sl tree jq mkcert berglas openjdk renv
開発で利用するアプリやその他ツールのインストール
アプリなどのインストールしていく前に、まずは Rosseta のインストールから。このツールは、M1 Mac で Intel Mac のアプリケーションを実行できるようになるスグレモノ(らしい)です。
sudo softwareupdate --install-rosetta
Mac デスクトップアプリのインストール
brew cask
を使ってインストールします。
brew install --cask google-chrome google-japanese-ime iterm2 zoom slack figma visual-studio-code selfcontrol karabiner-elements appcleaner clipy rectangle discord keycastr min
インストールしたアプリ一覧
App Store で配信されているアプリのインストール
mas
を使ってインストールします。
mas install 539883307 668208984 1284863847 424389933 1447043133 1429033973 405843582
インストールしたアプリ一覧
その他
Docker
はじめは brew cask
でインストールしようとしたのですが、なぜか Docker だけインストールされてない謎の現象に遭遇したので、これは手動インストールで対応(ログ見るの忘れた)。下のページにある「Mac with Apple chip」を選択してイメージを落としてインストールしました。
Hasura
Hasura も利用することがあるので公式を参考にインストールします。とりあえず global に入れちゃいます。
curl -L https://github.com/hasura/graphql-engine/raw/stable/cli/get.sh | bash
Notion
ドキュメントの整理に使っている Notion も入れておきます。デスクトップアプリのダウンロードページから「M1 Mac」版のアプリを選んでインストールします。
開発で利用するツールの設定
ここからは、先程 Homebrew を通してインストールしたツールの設定をしていきます。
iTerm2 の設定
iTerm2 はウィンドウの透明度とホットキーの設定を中心に設定しました。
iTerm2 のテーマを Iceberg に変更する
curl -O https://raw.githubusercontent.com/Arc0re/Iceberg-iTerm2/master/iceberg.itermcolors
fish
シェルを fish shell 切り替える
which fish
/opt/homebrew/bin/fish
sudo vi /etc/shells # 末尾に /opt/homebrew/bin/fish を追加
chsh -s /opt/homebrew/bin/fish
ここで iTerm2 を再起動して fish を反映。
echo $SHELL
/opt/homebrew/bin/fish
パッケージマネージャー fisher をインストール
curl -sL https://raw.githubusercontent.com/jorgebucaran/fisher/main/functions/fisher.fish | source && fisher install jorgebucaran/fisher
fisher -v
fisher, version 4.4.2
fish のテーマを bobthefish に変更する
fisher install oh-my-fish/theme-bobthefish
Powerline フォントをインストールし、iTerm2 に設定する
iTerm2 に bobthefish を入れると文字化けが発生するようなので、Powerline をいれます。
git clone https://github.com/powerline/fonts.git
cd fonts
./install.sh
rm -rf ./fonts
powerline フォントをインストールしたら、iTerm2 のフォントを「powerline」が付いているものに変更します。
fish プラグインのインストール
fish をさらに使いやすくするためにプラグインをいくかインストールします。インストールするプラグインは「z」と「peco」です。ざっくり説明すると、前者はコマンドを、後者はディレクトリを、実行履歴から検索できるプラグインです。
brew install z
fisher install jethrokuan/z
brew install peco
fisher install oh-my-fish/plugin-peco
fish の設定ファイルを反映
~/.config/fish/config.fish
を以下のように変更。
# view
set -g theme_display_date yes
set -g theme_date_format "+%F %H:%M"
set -g theme_display_git_default_branch yes
set -g theme_color_scheme dark
# Homebrew
set -g -x PATH $PATH /opt/homebrew/bin
eval "$(/opt/homebrew/bin/brew shellenv)"
# nodenv
set -gx PATH $HOME/.nodenv/bin $PATH
eval "$(nodenv init -)"
# pyenv
set -gx PYENV_ROOT "$HOME/.pyenv"
set -gx PATH $PYENV_ROOT/shims $PATH
status is-login; and pyenv init --path | source
status is-interactive; and pyenv init - | source
# peco setting
set fish_plugins theme peco
# z setting
function fish_user_key_bindings
bind \cw peco_select_history
end
# alias
alias g 'git'
alias gst 'git status'
alias gad 'git add'
alias gcm 'git commit'
alias gco 'git checkout'
alias gbr 'git branch'
alias gdf 'git diff'
設定を反映。
source ~/.config/fish/config.fish
ログイン時に実行されるファイルを変更(やらなくても問題なし)
fish が起動したときに実行される関数の設定です。今回は echo 文だけの更新に留めました。
function fish_greeting -d "What's up, fish?"
set_color $fish_color_autosuggestion
uname -nmsr
command -s uptime >/dev/null
and command uptime
echo "Hello, Maechan! Now, Let's dive into cooooooode!!" // 変更したコード
set_color normal
end
nodenv の設定
nodenv install 16.14.0
nodenv rehash
# ローカル(カレントディレクトリ配下)で利用する Node.js のバージョンを設定する
nodenv local xx.xx.x
# グローバル(システム全体)で利用する Node.js のバージョンを設定する
nodenv global xx.xx.xx
OpenJDK の設定
For the system Java wrappers to find this JDK, symlink it with
sudo ln -sfn /opt/homebrew/opt/openjdk/libexec/openjdk.jdk /Library/Java/JavaVirtualMachines/openjdk.jdk
openjdk is keg-only, which means it was not symlinked into /opt/homebrew,
because macOS provides similar software and installing this software in
parallel can cause all kinds of trouble.
If you need to have openjdk first in your PATH, run:
fish_add_path /opt/homebrew/opt/openjdk/bin
For compilers to find openjdk you may need to set:
set -gx CPPFLAGS "-I/opt/homebrew/opt/openjdk/include"
==> Summary
🍺 /opt/homebrew/Cellar/openjdk/18.0.1.1: 642 files, 309MB
==> Running `brew cleanup openjdk`...
Disable this behaviour by setting HOMEBREW_NO_INSTALL_CLEANUP.
Hide these hints with HOMEBREW_NO_ENV_HINTS (see `man brew`).
~ sudo ln -sfn /opt/homebrew/opt/openjdk/libexec/openjdk.jdk /Library/Java/JavaVirtualMachines/openjdk.jdk 21s 2022-07-21 16:47
~ java --version
sudo ln -sfn /opt/homebrew/opt/openjdk/libexec/openjdk.jdk /Library/Java/JavaVirtualMachines/openjdk.jdk
java --version
openjdk 18.0.1.1 2022-04-22
OpenJDK Runtime Environment Homebrew (build 18.0.1.1+0)
OpenJDK 64-Bit Server VM Homebrew (build 18.0.1.1+0, mixed mode, sharing)
Firebase のインストール
Firebase のインストール方法は上の公式に譲ります(めんどくさいとか、そういうんじゃないんだからね!)。
Google Cloud CLI のインストール
gcloud CLI の最新バージョン(391.0.0)は、Python 3.7 系が推奨とのことなので、pyenv でインストールします。
pyenv install 3.7.13
pyenv global 3.7.13
python -V
Python 3.7.13
あとは、gcloud CLI をインストールしていきます。以降のインストール方法は公式に譲ります(めんどくさいとか、そういうんじゃないんだからね!)。
~/.gitconfig の設定
git の設定です。「name」と「email」の部分は適宜変更してください。
[user]
name = ********
email = ********
[init]
defaultBranch = main
Google 日本語入力の設定
システム環境設定で「キーボード > 入力ソース」の画面を開き、「Google 日本語入力」を反映、Mac を再起動します。
Karabiner-Elements でキーボードの設定
いま使っているキーボードは「Keychron K6」というメカニカルキーボードです。US 配列キーボードなので、日本語の切り替えキーを設定する必要があります。
Karabiner-Elements 用の設定ファイルが配布されているサイトから、良さそうな設定ファイルを適当にダウンロードしてそれを利用しました。
K6 は右側に「del」「home」「pgup」「pgdn」キーがあるのですが、使わないので無効化しました
Caps Lock キーは使わないので、左コントロールに変更しました
オーディオインターフェース「AUDIENT evo 4」のドライバーをインストール
普段はマイクに RODE PodMic を使っていて、このマイクと Mac を接続するためにオーディオインターフェース「AUDIENT evo 4」を利用しています。
上のドライバーダウンロードのページから、Mac 用のドライバーを選択してインストールします。
GoPro ウェブカメラデスクトップユーティリティをインストール
ウェブカメラは GoPro を使っています(ウェブカメラ持ってなかったのでとりあえず)。GoPro 公式からウェブカメラ用のデスクトップアプリが提供されているので、Mac にインストールします。
写りはこんな感じ。けっこう高画質な GoPro ちゃんです
サイドカー機能で iPad Pro を外部ディスプレイにする
システム環境設定で「ディスプレイ」の画面を開き、ウィンドウ左下にある「ディスプレイを追加」から、iPad Pro を選択します。
こんな感じで並べました
「サイドバーを表示」と「Touch Bar を表示」をOFFにすると、利用できる画面の領域が広くなるのでオススメです
おわり
とりあえず、必要最低限の設定は終わりました。開発で利用するアプリのインストール時に Docker だけインストールできない不具合?のようなものに遭遇したので、そこは別で手動対応しました。それ以外のアプリについては問題なくインストールできました。Rosseta の頑張りなのか、各アプリの動作も今のところは大丈夫そうです。
以前まではシェルに zsh を使っていたのですが、この Mac mini のセットアップの機会に、新しく fish を導入してみました。調べてみると利用者も多く、満足度も高そうだったので使ってみました。fish って名前がいいですよね。かわいいです。
スペシャルなサンクスさんたち
Discussion