私は年に 1 回、自宅と職場の 2 台の Mac をクリーンインストールでアップデートするのですが、開発環境の構築をある程度自動化しています。来年のために手順を残しておくので、参考にどうぞ。
目次
- これまで
- 事前準備
- Brewfile を作成する
- AppStore にログインしておく
- パッケージをインストール
- 再起動
- パッケージのインストール後
- Brewfile に書けるパッケージの探し方
- おわりに
これまで
自動化を始めたのは多分 2013 年とかその頃。使っていたツールは Brewfile に始まり、Ansible を経て、去年は rcmdnk/homebrew-file を使っていました。Ansible 時代が一番長かったと思います。2019 年のクリーンインストールの時期になり、セットアップはどうしようかと調べたところ、Homebrew/homebrew-bundle が Homebrew と連携していてすぐ使えて、GitHub のスター数も多く、やりたいこともできそうだったので今年はこれに決めました。
事前準備
Homebrew のインストール手順に従ってインストール。
/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
Brewfile を作成する
ここからは Homebrew/homebrew-bundle Usage の通り進めればよいのですが、簡単に解説を。
ホームティレクトリに Brewfile を作成します。
touch Brewfile
Brewfile にインストールしたいパッケージを書いていきます。私の Brewfile はこんな感じ。brew, cask, mas パッケージが並んでいます。ここに書けるパッケージの探し方は後述。
tap "homebrew/cask"
tap "aws/tap" # aws-sam-cli
tap "hashicorp/tap" # packer
tap "weaveworks/tap" # eksctl
cask_args appdir: "/Applications"
brew "aws-sam-cli"
brew "velero"
brew "eksctl"
brew "grep", link: true
brew "helm"
brew "jq"
brew "kubectl", link: true
brew "kustomize"
brew "mas"
brew "mysql-client", link: true
brew "packer"
brew "tcptraceroute"
brew "tfenv"
brew "tree"
cask "1password"
cask "alfred"
cask "amazon-music"
cask "appcleaner"
cask "docker"
cask "firefox"
cask "google-chrome"
cask "google-japanese-ime"
cask "intellij-idea"
cask "iterm2"
cask "karabiner-elements"
cask "keyboardcleantool"
cask "mysqlworkbench"
cask "rectangle"
cask "visual-studio-code"
mas "Be Focused Pro", id: 961632517
mas "Keynote", id: 409183694
mas "Slack", id: 803453959
mas "The Unarchiver", id: 425424353
AppStore にログインしておく
Brewfile に mas のコマンドを書いている場合、先にAppStore にログインしておきます。ログインしておかないと、このあとの mas パッケージのインストールで失敗します。
パッケージをインストール
brew bundle
コマンドで Brewfile に書いたパッケージをインストールできます。
brew bundle
コマンドを実行するとインストールが始まるので、しばらく待ちます。アプリケーションによっては、途中でパスワードを求められて止まったりするのでたまにターミナルの状況を確認しましょう。
再起動
インストールが終わったら、私は一回再起動しています。これはインストールするアプリケーションによると思います。
パッケージのインストール後
あとは、各種設定ファイルを配置したり、Brewfile でインストールできないパッケージを入れたりします。私はここを簡単なシェルスクリプトにしてます。nvm の部分を抜粋するとこんな感じ。
bootstrap.sh
# homebrew-bundle
brew bundle --file ~/Brewfile
# nvm
if [ ! -e "$HOME/.nvm" ]; then
# install nvm
export NVM_DIR="$HOME/.nvm" && (
git clone https://github.com/nvm-sh/nvm.git "$NVM_DIR"
cd "$NVM_DIR"
git checkout `git describe --abbrev=0 --tags --match "v[0-9]*" $(git rev-list --tags --max-count=1)`
) && \. "$NVM_DIR/nvm.sh"
else
# update nvm
(
cd "$NVM_DIR"
git fetch --tags origin
git checkout `git describe --abbrev=0 --tags --match "v[0-9]*" $(git rev-list --tags --max-count=1)`
) && \. "$NVM_DIR/nvm.sh"
fi
パッケージを更新したい場合は bootstrap.sh を実行するだけで良いように、適度に冪等性をもたせます。
Brewfile に書けるパッケージの探し方
Brewfile の brew, cask, mas のパッケージの探し方を解説します。
brew コマンドでインストールするパッケージの探し方
brew のパッケージは brew search
コマンドで探すことができます。wget コマンドを探す例です。brew パッケージは、以下のように Formulae という部分に出てきます。
brew search wget
==> Formulae
wget wgetpaste
Brewfile にはこう書きます。
brew "wget"
brew cask コマンドでインストールするパッケージの探し方
cask のパッケージも brew search
コマンドで探すことができます。google-chrome を探す例です。cask パッケージは、以下のように Casks という部分に出てきます。
brew search google-chrome
==> Casks
google-chrome homebrew/cask-versions/google-chrome-beta homebrew/cask-versions/google-chrome-canary homebrew/cask-versions/google-chrome-dev
Brewfile にはこう書きます
cask "google-chrome"
AppStore からインストールするパッケージの探し方
AppStore からインストールするパッケージは、mas search
コマンドで探すことができます。mas-cli/mas を裏で使っているとのことですので、検索したい場合は先に brew install mas
して mas コマンドを使えるようにしておきます。なお、mas コマンドは、Brewfile に mas コマンドの記述があると自動でインストールされます。
AppStore にログインしていないとコマンド実行時にエラーになるので、事前にログインしておきましょう。
keynote を AppStore から探す例です。
mas search keynote
409183694 Keynote (9.0.2)
582635628 Toolbox for Keynote -Templates (3.7.4)
555935825 DesiGN Templates for Keynote (3.0.2)
692032006 Themes for Keynote (3.1)
...
Brewfile に、検索して表示された id 409183694 を記述します。
mas "Keynote", id: 409183694
おわりに
Mac の開発環境構築を自動化すると、2 台目以降の Mac のセットアップが効率化されるだけでなく、過去にどんなアプリケーションを入れていたかのメモ代わりになります。自動化スクリプトをメンテナンスし続けるのはそれなりに大変ですが、今回紹介した Homebrew/homebrew-bundle とシェルスクリプトの組み合わせは、小回りも効き、メンテナンスもしやすくオススメです。
キーボード設定
アプリケーションを設定した後にいつもやっているキーボードの設定です。
-
MacBookの英語配列でHHKBを使う私のキーボード設定
MacBook Pro の英語配列で Happy Hacking Keyboard Professional の英語配列 ...
続きを見る