🌾

ゼロから始める M1 Mac mini のセットアップ【Homebrew + iTerm2 +fish + iPad on Sidecar】

2022/07/21に公開

最近、仕事で使っている 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 はサイズと表示/非表示の項目を中心に設定しました。

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 はウィンドウの透明度とホットキーの設定を中心に設定しました。

iTerm の設定

iTerm の設定

iTerm2 のテーマを Iceberg に変更する

curl -O https://raw.githubusercontent.com/Arc0re/Iceberg-iTerm2/master/iceberg.itermcolors

iTerm2 のテーマを Iceberg に変更する

fish

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」が付いているものに変更します。

Powerline フォントをインストールし、iTerm2 に設定する

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 を以下のように変更。

~/.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 文だけの更新に留めました。

~/.config/fish/functions/fish_greeting.fish
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 の設定

brew install 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 を再起動します。

Google 日本語入力の設定

Karabiner-Elements でキーボードの設定

いま使っているキーボードは「Keychron K6」というメカニカルキーボードです。US 配列キーボードなので、日本語の切り替えキーを設定する必要があります。

Karabiner-Elements 用の設定ファイルが配布されているサイトから、良さそうな設定ファイルを適当にダウンロードしてそれを利用しました。

Karabiner-Elements でキーボードの設定
K6 は右側に「del」「home」「pgup」「pgdn」キーがあるのですが、使わないので無効化しました

Karabiner-Elements でキーボードの設定
Caps Lock キーは使わないので、左コントロールに変更しました

オーディオインターフェース「AUDIENT evo 4」のドライバーをインストール

https://evo.audio/products/audio-interfaces/evo-4/downloads/

普段はマイクに RODE PodMic を使っていて、このマイクと Mac を接続するためにオーディオインターフェース「AUDIENT evo 4」を利用しています。

上のドライバーダウンロードのページから、Mac 用のドライバーを選択してインストールします。

GoPro ウェブカメラデスクトップユーティリティをインストール

https://community.gopro.com/s/article/GoPro-Webcam?language=ja#Mac Webcam

ウェブカメラは GoPro を使っています(ウェブカメラ持ってなかったのでとりあえず)。GoPro 公式からウェブカメラ用のデスクトップアプリが提供されているので、Mac にインストールします。

GoPro ウェブカメラデスクトップユーティリティをインストール
写りはこんな感じ。けっこう高画質な GoPro ちゃんです

サイドカー機能で iPad Pro を外部ディスプレイにする

システム環境設定で「ディスプレイ」の画面を開き、ウィンドウ左下にある「ディスプレイを追加」から、iPad Pro を選択します。

サイドカー機能で iPad Pro を外部ディスプレイにする
こんな感じで並べました

サイドカー機能で iPad Pro を外部ディスプレイにする
「サイドバーを表示」と「Touch Bar を表示」をOFFにすると、利用できる画面の領域が広くなるのでオススメです

おわり

とりあえず、必要最低限の設定は終わりました。開発で利用するアプリのインストール時に Docker だけインストールできない不具合?のようなものに遭遇したので、そこは別で手動対応しました。それ以外のアプリについては問題なくインストールできました。Rosseta の頑張りなのか、各アプリの動作も今のところは大丈夫そうです。

以前まではシェルに zsh を使っていたのですが、この Mac mini のセットアップの機会に、新しく fish を導入してみました。調べてみると利用者も多く、満足度も高そうだったので使ってみました。fish って名前がいいですよね。かわいいです。

スペシャルなサンクスさんたち

https://zenn.dev/lightkun/articles/603e9bdf1188a1

https://zenn.dev/sawao/articles/0b40e80d151d6a

https://qiita.com/ruwatana/items/8d9c174250061721ad11

https://www.rk-k.com/archives/4101

https://qiita.com/normalsalt/items/017031713f6577e488aa

https://decoy284.net/karabiner-input-switch/

Discussion