記事一覧に戻る
🍺

Homebrew入門:Macにアプリを「公式サイトから入れる」のと何が違うのか

13

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 StoreApp Storeで入手するApp Storeでまとめて入手済みの一覧から入れる
Homebrewターミナルで brew install を実行するbrew upgrade でまとめてBrewfile に書いたものを brew bundle で入れる

公式サイトから入れたアプリは、更新のしかたがアプリごとに違う。起動時に新しい版を知らせてくれるアプリもあれば、何も言わないアプリもある。何を入れたかも、自分の記憶にしか残らない。

Homebrewなら、探す・入れる・更新する・消すが、全部 brew コマンドでできる。

全部をHomebrewに寄せなくていい

Homebrewに無いアプリは、Homebrewでは入れられない。僕は次の順で入れ方を選んでいる。

ある ない ある ない 入れたいアプリや道具 Homebrewにあるか Homebrewで入れる App Storeにあるか App Storeで入れる 開発元の公式サイトから入れる

例外は、音楽ソフトのように、メーカー専用のインストーラーでライセンス認証をするアプリだ。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 updatebrew 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回でいつものアプリと道具がそろう。

覚えていられないものは、ファイルに覚えてもらえばいい。

つくることで、見える景色がある。