
Homebrew で Mac の環境構築をする機会は多いと思う.ライブラリをインストールするときに brew install xxx と実行すればすぐに使える.ただし,Mac を移行したり,再インストールするときに brew install を再実行するのは面倒で,今回は Homebrew Bundle (Brewfile) を紹介する.同僚に Brewfile を紹介する機会があり,今後もサッと紹介できるようにブログにまとめておくことにした.
Homebrew Bundle (Brewfile) とは?
Homebrew Bundle を使うと Homebrew でインストールするライブラリを Brewfile というファイルで管理できる.プログラミング言語だと Gemfile や package.json や pom.xml のような感じ.さらに Brewfile を GitHub の dotfiles リポジトリに置いておけば,プルリクエストを使って個人設定をうまく管理することもできる.以下に Brewfile のサンプルを載せておく.
brew "ghq" brew "git" brew "kubernetes-cli" brew "peco" brew "vim"
インストールするときは brew bundle コマンドを実行すれば OK!便利!僕は「80個」も管理している...!
$ brew bundle Installing ghq Installing git Installing kubernetes-cli Installing peco Installing vim Homebrew Bundle complete! 80 Brewfile dependencies now installed.
Brewfile 構文 🍺
よく使う Brewfile 構文を「4種類」紹介する.基本的には brew コマンドに対応している.
1. brew
brew 構文を使うと,Homebrew に正式に登録されたライブラリをインストールできる.brew install コマンドと同じくライブラリ名を引数に記述する.
brew "ghq" brew "git" brew "kubernetes-cli" brew "peco" brew "vim"
2. tap
tap 構文を使うと,Homebrew に正式に登録されていないライブラリをインストールできる.brew tap コマンドに対応している.以下のサンプルは mkr や mob や eksctl など,よく使うライブラリをインストールするように記述している.
tap "mackerelio/mackerel-agent" tap "remotemobprogramming/brew" tap "weaveworks/tap" brew "mackerelio/mackerel-agent/mkr" brew "remotemobprogramming/brew/mob" brew "weaveworks/tap/eksctl"
なお,brew tap は指定した GitHub リポジトリを Homebrew に登録する仕組みとなり,${userName}/homebrew-${repositoryName} や ${organizationName}/homebrew-${repositoryName} という命名規則でリポジトリがある.サンプルとして載せたライブラリのリポジトリもある.このあたりを調べていくと Homebrew に詳しくなれるはず!
- GitHub - mackerelio/homebrew-mackerel-agent: homebrew tap to install mackerel-agent
- GitHub - remotemobprogramming/homebrew-brew: Homebrew formula for the 'mob' tool
- GitHub - weaveworks/homebrew-tap
3. cask
cask 構文を使うと,Google Chrome など,Mac アプリをインストールできる.brew cask install コマンドに対応している.個人的には直接 .dmg でインストールすることも多く,あまり活用できていないけど,例えば BlackHole や Keycastr や OpenInTerminal など,最近ブログで紹介したライブラリなどは Brewfile に記述している.
tap "homebrew/cask" cask "blackhole" cask "keycastr" cask "openineditor-lite" cask "openinterminal-lite"
4. mas
mas 構文を使うと,App Store から Mac アプリをインストールできる.mas コマンドに対応している.個人的に必須な CotEditor や Tomato One や Magnet などを Brewfile に記述している.
brew "mas" mas "CotEditor", id: 1024640650 mas "Tomato One", id: 907364780 mas "Magnet", id: 441258766
今から Brewfile に移行できる?
今まで個別に brew install コマンドを実行していて,今後 Brewfile に移行したい人もいると思う.実は brew bundle dump コマンドを実行すると,自動的に現在の環境から Brewfile を生成できるようになっている.生成された Brewfile は tap ➔ brew ➔ cask ➔ mas の順番でキレイに並んでいるし,ライブラリ名もアルファベット順に並んでいるので,非常に見やすいと思う.
$ brew bundle dump
また Brewfile をよく見ると「これ何だっけ?」というライブラリが入っていると思う(僕だけ?).ライブラリをアンインストールするときに brew uninstall コマンドを実行する必要はなく,Brewfile からエントリーを削除して brew bundle cleanup コマンドを実行すればアンインストールできる.たまにアンインストールされないこともあり,その場合は brew uninstall コマンドを実行している.
$ brew bundle cleanup
フォント管理も Brewfile で!
最後に Brewfile でフォント管理をする Tips を紹介する.フォントをインストールする機会は多くないけど,Keynote を作るときに使う「MigMix フォント」など,Mac を移行するときに毎回サイトからダウンロードするのは面倒だと思う.既に紹介した tap 構文と cask 構文を組み合わせて,以下のように Brewfile に設定できる.
tap "homebrew/cask-fonts" cask "font-migu-1p"
フォントは多くあり,brew search コマンドを使えば検索できる.例えば Noto Sans CJK JP など.
$ brew search font-
$ brew search font-noto-sans-cjk
==> Casks
font-noto-sans-cjk
font-noto-sans-cjk-jp
font-noto-sans-cjk-kr
font-noto-sans-cjk-sc
font-noto-sans-cjk-tc
まとめ
同僚に Homebrew Bundle (Brewfile) を紹介する機会があり,ブログにまとめておくことにした.Brewfile ファイル管理して brew bundle コマンドを実行すれば,ライブラリを簡単にインストールできる.tap / brew / cask / mas など,Homebrew の機能もサポートしている.もし今後 Brewfile に移行するなら brew bundle dump コマンドも使える.便利!