kakakakakku blog

Weekly Tech Blog: Keep on Learning!

Brewfile で Homebrew のライブラリを管理しよう!

Homebrew で Mac の環境構築をする機会は多いと思う.ライブラリをインストールするときに brew install xxx と実行すればすぐに使える.ただし,Mac を移行したり,再インストールするときに brew install を再実行するのは面倒で,今回は Homebrew Bundle (Brewfile) を紹介する.同僚に Brewfile を紹介する機会があり,今後もサッと紹介できるようにブログにまとめておくことにした.

github.com

Homebrew Bundle (Brewfile) とは?

Homebrew Bundle を使うと Homebrew でインストールするライブラリを Brewfile というファイルで管理できる.プログラミング言語だと Gemfilepackage.jsonpom.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 コマンドに対応している.以下のサンプルは mkrmobeksctl など,よく使うライブラリをインストールするように記述している.

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 に詳しくなれるはず!

3. cask

cask 構文を使うと,Google Chrome など,Mac アプリをインストールできる.brew cask install コマンドに対応している.個人的には直接 .dmg でインストールすることも多く,あまり活用できていないけど,例えば BlackHoleKeycastr OpenInTerminal など,最近ブログで紹介したライブラリなどは Brewfile に記述している.

tap "homebrew/cask"

cask "blackhole"
cask "keycastr"
cask "openineditor-lite"
cask "openinterminal-lite"

4. mas

mas 構文を使うと,App Store から Mac アプリをインストールできる.mas コマンドに対応している.個人的に必須な CotEditorTomato OneMagnet などを Brewfile に記述している.

brew "mas"

mas "CotEditor", id: 1024640650
mas "Tomato One", id: 907364780
mas "Magnet", id: 441258766

今から Brewfile に移行できる?

今まで個別に brew install コマンドを実行していて,今後 Brewfile に移行したい人もいると思う.実は brew bundle dump コマンドを実行すると,自動的に現在の環境から Brewfile を生成できるようになっている.生成された Brewfiletapbrewcaskmas の順番でキレイに並んでいるし,ライブラリ名もアルファベット順に並んでいるので,非常に見やすいと思う.

$ 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 コマンドも使える.便利!

github.com