Homebrew入門:Macにアプリを「公式サイトから入れる」のと何が違うのか
Homebrewとは何か
Homebrewは、Macにアプリやターミナルで使う道具を、コマンドで入れるためのソフトだ。いちばん助かるのは、入れたものの名前を Brewfile というファイルに残しておけば、新しいMacでもまとめて入れ直せることである。
Brewfile の中身は、入れたいものの名前を1行に1つずつ書いただけだ。
brew "tree"
cask "firefox"
cask "slack"
コマンド1行でアプリが入る
普通は、公式サイトを開いてダウンロードし、アイコンを「アプリケーション」フォルダーへドラッグする。Homebrewなら1行で済む。
brew install --cask firefox
これでFirefoxが「アプリケーション」フォルダーに入る。
ターミナルで使う道具も、同じように入る。
brew install tree
tree は、フォルダーの中身を木の枝のような形で表示する道具だ。たとえば my-blog というフォルダーで実行すると、こう表示される。
$ tree my-blog
my-blog
├── images
│ └── cat.png
├── posts
│ ├── first-post.md
│ └── homebrew.md
└── README.md
3 directories, 4 files
動かすのに別の部品が要る道具なら、Homebrewがその部品も一緒に入れてくれる。
formulaとcaskの違い
2つのコマンドは、片方にだけ --cask が付いている。これがformulaとcaskの違いだ。
- formula(フォーミュラ):ターミナルで使う道具を入れるためのファイル。例は
treeや、GitHubをターミナルから操作するgh - cask(カスク):画面のあるアプリを入れるためのファイル。例はFirefox、Slack、Google Chrome
どちらも中身は「どこからダウンロードして、Macのどこに置くか」を書いたレシピだ。書いているのはアプリの開発元ではなく、Homebrewに協力している有志の人たちである。
「画面があるならcask、ないならformula」と覚えておけば、まず困らない。ちなみに名前の由来は酒造りで、Homebrewは「自家醸造」、formulaは「調合表」、caskは「樽」。コマンド名も brew(醸造する)だ。命名への情熱がすごい。
公式サイトやApp Storeから入れるのと何が違うのか
入れる手間の差は、クリック数回ぶんでしかない。違いが出るのは、入れたあとだ。
| 入れ方 | 入れるとき | 更新 | 新しいMacで入れ直すとき |
|---|---|---|---|
| 公式サイト | ブラウザーで開発元のサイトを開く | アプリごとに違う | 何を入れていたか自分で思い出す |
| App Store | App Storeで入手する | App Storeでまとめて | 入手済みの一覧から入れる |
| Homebrew | ターミナルで brew install を実行する | brew upgrade でまとめて | Brewfile に書いたものを brew bundle で入れる |
公式サイトから入れたアプリは、更新のしかたがアプリごとに違う。起動時に新しい版を知らせてくれるアプリもあれば、何も言わないアプリもある。何を入れたかも、自分の記憶にしか残らない。
Homebrewなら、探す・入れる・更新する・消すが、全部 brew コマンドでできる。
全部をHomebrewに寄せなくていい
Homebrewに無いアプリは、Homebrewでは入れられない。僕は次の順で入れ方を選んでいる。
例外は、音楽ソフトのように、メーカー専用のインストーラーでライセンス認証をするアプリだ。Homebrewにあっても、メーカーのやり方に従う。すでにApp Storeで入れたアプリも、そのままでいい。
安全面の注意もある。caskは、開発元が配布しているファイルをダウンロードして置く作業を代わりにやるだけだ。Homebrewがアプリの安全性を保証してくれるわけではない。知らないアプリを気軽に入れない、という心がけは公式サイトから入れるときと同じである。
HomebrewをMacに入れる
まずターミナルを開く。「アプリケーション」フォルダーの中の、「ユーティリティ」フォルダーにある。
次に、公式サイト https://brew.sh/ に載っているコマンドをコピーし、ターミナルに貼り付けて実行する。コピー元は必ず公式サイトにする。ターミナルに貼るコマンドはMacに対してほぼ何でもできるので、どこかのブログ(この記事も含む)より本家を信じたほうがいい。
途中で、Macのログインパスワードを聞かれる。打っても画面には何も表示されないが、入力はされている。そのまま打ってEnterを押せばいい。壊れたように見えるが、壊れていない。
終わると、画面の最後に「Next steps」という案内が出る。ここに書かれたコマンドも、そのまま実行する。飛ばすと、次にターミナルを開いたとき brew が「そんなコマンドは無い」と言われる。
次のコマンドでバージョンが表示されれば完了だ。
$ brew --version
Homebrew 7.0.1
数字の部分は、入れた時期によって変わる。
まず使うコマンド
最初に覚えるのは、この表のコマンドだけで足りる。
| やりたいこと | コマンド |
|---|---|
| 名前で探す | brew search <名前> |
| 説明を見る | brew info <名前> |
| 道具を入れる | brew install <名前> |
| アプリを入れる | brew install --cask <名前> |
| 入れたものの一覧を見る | brew list |
| 古くなっているものを見る | brew outdated |
| Homebrewが持っているレシピを最新にする | brew update |
| 入れたものを新しくする | brew upgrade |
| 消す | brew uninstall <名前> |
たとえばSlackを入れるなら、まず探す。
$ brew search slack
==> Formulae
slack-mcp-server
slackcat
slackdump
slacknimate
spack
black
==> Casks
font-slackey
font-slackside-one
slab
slack
slack-cli
slack@beta
stack
==> Formulae の下がターミナルで使う道具、==> Casks の下が画面のあるアプリだ。==> Casks の下に slack があるので、これがSlackのアプリの名前だと分かる。アプリの名前とcaskの名前は一致しないこともあるので、説明を見てから入れる。
brew info --cask slack
brew install --cask slack
紛らわしいのが brew update と brew upgrade だ。
brew update:Homebrewが持っているレシピを最新にする。Mac上のSlackはまだ古いままbrew upgrade:入れてあるものを、新しい版に入れ替える
brew upgrade を実行すると、Homebrewが必要に応じて先にレシピも最新にする。だから普段は brew upgrade だけでいい。
僕の今の使い方
僕のMacに入っているアプリと道具は、ほとんどHomebrewで入れている。
入れたらBrewfileに1行足す
僕の Brewfile の一部はこうなっている。
brew "gh"
brew "tree"
cask "firefox"
cask "obsidian"
cask "slack"
mas "Xcode", id: 497799835
brew の行がformula、cask の行がcaskだ。mas の行はApp Storeのアプリである。mas はApp Storeをターミナルから扱う道具で、これを使うとApp Storeのアプリも同じファイルに書ける。
新しいMacでは、このファイルがある場所で次を実行する。
brew bundle
書いたアプリと道具が、まとめて入る(App Storeのアプリを入れるには、先にApp Storeにサインインしておく)。ただし、前と同じ版や、アプリの中の設定まで戻るわけではない。
決まりは1つ。何かを入れたら、Brewfile に自分で1行足す。今入っているものからファイルを作り直すコマンド(brew bundle dump)もあるが、ファイル全体が書き換わるので使っていない。
Brewfile は、ほかの設定ファイルと一緒にGitHubに置いている。Macが壊れても、一覧は残る。
公式サイトから入れたアプリは載らないし、1行足し忘れたアプリも載らない。Brewfile は、自分で書き足していく一覧だ。
更新はtopgradeにまとめて任せる
topgrade は、Macにある更新の仕組みを見つけて、順に実行してくれる道具だ。これもHomebrewで入れた。
topgrade
僕のMacでは、この1行でmacOS、App Storeのアプリ、Homebrewで入れたもの、開発用の道具がまとめて更新される。何が更新されるかは、そのMacに入っている道具によって変わる。
手で入れたアプリもあとから移せる
Homebrewを使う前に公式サイトから入れたアプリも、消して入れ直さずにHomebrewへ移せる。僕も、手で入れていたアプリをいくつか移した。
brew install --cask --adopt slack
入っているアプリをそのまま使い、Homebrewで入れたものとして扱わせる操作だ。アプリによっては、入っている版とHomebrewが知っている版が一致しないと移せない。
つまずきやすいこと
brew uninstall --cask はアプリ本体も消す
brew uninstall --cask slack は、「アプリケーション」フォルダーのSlack本体も消す。あとから移したアプリも同じだ。
--zap を付けると、設定や、アプリが一時的に保存したデータなど、関係するファイルまで消す。ほかのアプリと共有しているファイルが消える場合もある。設定を残したいなら付けない。後悔は、だいたいEnterを押した0.5秒後にやってくる。
更新一覧に出ないアプリもある
Google Chromeのように、アプリ自身が自動で更新する仕組みを持つものがある。Homebrewは、こうしたアプリの版を比べられないとき、勝手に上書きしないよう brew upgrade の対象から外す。だから brew upgrade のあとも、アプリの中に「更新があります」と出ていたら、そのボタンを押す。
困ったら brew doctor
何かおかしいと感じたら、まず次を実行する。
brew doctor
Homebrewが自分の状態を点検して、気になる点を教えてくれる。何も問題がなければ、次の1行だけが出る。
Your system is ready to brew.
警告が出ても、普段問題なく使えているなら気にしなくていい場合もある。
まとめ
Homebrewは、Macにアプリや道具をコマンドで入れるソフトだ。画面のあるアプリはcask、ターミナルで使う道具はformulaとして入れる。
公式サイトから入れる場合との違いは、入れたあとに出る。更新は brew upgrade にまとまり、入れたものは Brewfile に書き残せる。新しいMacでも、brew bundle 1回でいつものアプリと道具がそろう。
覚えていられないものは、ファイルに覚えてもらえばいい。

