MacBookの環境構築(Brewfile + mackup)


macbook

新型MacBookProが発売になりましたね。

自宅で使っているMacBookProが2013年モデルだったこともあり「新型が出たら乗り換えよう」と決めていたのですが、外付けキーボードを使っている身としてはTouchBarに魅力を感じられず、新型登場で値下げされた12インチMacBookを買いました。

これで外に出るときも快適です。

今回は移行アシスタントは使わず、1からセットアップし直したので開発環境構築のメモを残しておきます。

環境構築方法を調べていたところ、Brewfileでアプリケーションやライブラリの管理を行い、mackupでアプリケーション設定を管理するのがシンプルに管理できそうと思ったのでやってみました。

1. homebrewインストール

まずはお決まりのhomebrew

/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

Command Line Toolsも↑のインストール時に合わせてインストールされました。

結構時間がかかりそうだったので、寝る前に実行して放置しました。

2. 既存PCで使っていたアプリケーションを抽出

既存PCで使っていたライブラリとアプリケーションは新PCでも使いたいので、bundle dumpを使って管理情報を抽出します。

masを使うと、AppStoreのアプリケーションもCLIで管理できるようになって便利でした。

# 既存PCで実行
brew tap Homebrew/bundle
brew install mas

brew bundle dump # Brewfileに書き出し

これで既存PCのBrewfileが生成されるので、既存PCのリモートログインをONにして、scpでBrewfileを新PCにダウンロードしてきます。

3. 新PCにアプリケーションインストール

既存PCからダウンロードしてきたBrewfileの中から必要なものだけを残して、以下を実行します。

# 新PCで実行
brew tap Homebrew/bundle
brew install mas

brew bundle # Brewfileの内容をインストール

これで新PCに一通りのライブラリとアプリケーションがインストールされました。

Brewfileはこんな感じになりました。

tap 'caskroom/cask'
tap 'homebrew/bundle'
tap 'homebrew/core'
tap 'neovim/neovim'
brew 'autoconf'
brew 'automake'
brew 'awscli'
brew 'cmake'
brew 'doxygen'
brew 'gdbm'
brew 'gettext'
brew 'go'
brew 'ghq'
brew 'heroku'
brew 'hub'
brew 'oniguruma'
brew 'jq'
brew 'openssl'
brew 'pkg-config'
brew 'libevent'
brew 'libtool'
brew 'mackup'
brew 'mas'
brew 'pcre'
brew 'peco'
brew 'readline'
brew 'sqlite'
brew 'xz'
brew 'python3'
brew 'reattach-to-user-namespace'
brew 'the_platinum_searcher'
brew 'tig'
brew 'tmux'
brew 'zsh'
brew 'neovim/neovim/neovim'
cask 'bartender'
cask 'bettertouchtool'
cask 'dash'
cask 'docker'
cask 'dropbox'
cask 'google-chrome'
cask 'google-japanese-ime'
cask 'iterm2'
cask 'onyx'
mas 'Kindle', id: 405399194
mas 'Affinity Designer', id: 824171161
mas 'Keynote', id: 409183694
mas 'iMovie', id: 408981434
mas 'Day One Classic', id: 422304217
mas 'Evernote', id: 406056744
mas '1Password', id: 443987910
mas 'Skitch', id: 425955336
mas 'Twitter', id: 409789998
mas 'Quiver', id: 866773894
mas 'Xcode', id: 497799835
mas 'Slack', id: 803453959
mas 'OmniFocus', id: 867299399
mas 'Pages', id: 409201541
mas 'GarageBand', id: 682658836
mas 'BetterSnapTool', id: 417375580
mas 'Numbers', id: 409203825

4. 各アプリケーションの設定

左右Commandキーによる英字/かな切り替え

英字キーボードの英字/かな切り替えは「⌘英かな」をインストールして解決しました。

zsh設定

シェルの変更方法は以下。zplugでプラグイン管理をすることにしました。

sudo sh -c "echo '/usr/local/bin/zsh' >> /etc/shells"
chsh -s /usr/local/bin/zsh
curl -sL zplug.sh/installer | zsh

↓の記事を参考にさせていただいたきzsh設定を追加。

NeoVim設定

PC移行を機にNeoVimを使ってみることにしました。

python3を利用するプラグイン用に以下を実行しておく必要がありました。

pip3 install --upgrade neovim

↓の記事を参考にさせていただいたきnvim設定を追加。

tmux設定

↓の記事を参考にさせていただいたきtmux設定を追加。

Go開発環境整備

↓の記事を参考にさせていただいたきGoの開発環境とghq, peco, hub設定を追加。

Chrome設定

Chromeにログインするだけでブックマークや設定を同期できました。

5. mackupでアプリケーション設定をバックアップ

mackupを使うとアプリケーションの設定情報をDropboxやiCloudにバックアップできるとのことです。

ということでiCloudにバックアップすることにしました。

.mackup.cfgに以下を記述し

# .mackup.cfg
[storage]
engine = icloud

[applications_to_ignore]
neovim

追加で、Brewfile等もmackupで管理することにしました。

# .mackup/my.cfg
[application]
name = my setting

[configuration_files]
.config
Brewfile
.gitignore_global

※ neovimをignoreしているのは、.configディレクトリ自体をmackup管理にするためです。最初ignoreせずに mackup backup を試したところ .config/nvim のみがmackup管理対象となってしまったためこの設定を入れました。

6. cronで設定のバックアップ

最後に定期的に設定がバックアップされるように以下をcronに設定しておきました。

0 21,22,23 * * * /usr/local/bin/brew bundle dump --force
1 21,22,23 * * * /usr/local/bin/mackup backup -f

参考にさせていただいた記事だと@dailyの設定になっていましたが、@dailyは0時実行になるので、自分の場合は22時くらいの方がPCを開いている可能性が高いと思ってこの時間にしました。

brew bundle dump --force を定期実行することで brew install で直接インストールしたツールがあっても管理漏れがなくなるので便利ですね。

Brewfile込みでmackupでバックアップされるのでクリーンインストールすることになった場合も手軽に復旧できそうです。

クリーンインストール後の復旧手順

諸事情によりクリーンインストールが必要になった場合に備えて、復旧手順を残しておこうと思います。

ここからは実際に試していないので、おそらくこれで復旧できるだろうという手順です。(途中でエラーになったらすまない未来の自分)

1. homebrewインストール

/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

2. mackupインストール

brew 'mackup'

3. .mackup.cfg に以下を追加

# .mackup.cfg
[storage]
engine = icloud

※ この設定は今回自分がiCloudにバックアップしているためです。デフォルトはDropboxなので、デフォルト設定を使っている場合はこの設定ファイルは不要です。

4. mackupから設定を復旧

mackup restore

5. brew install

Brewfileが復旧されたら以下を実行。

brew bundle

これで一通りのアプリケーションと設定が復旧するはずです。

感想

Brewfile + mackupを使うことでシンプルにツールの管理ができるようになりました。

macの環境構築をするのは買い替えのタイミングくらいしかないので、ついでに使っていないツール等の大掃除ができてよかったです。

環境管理の土台が整ったので、あとは作業を進める中で必要に応じて適宜追加していこうと思います。

参考にさせていただいた記事