🍺

英語方面から直観で感じるMacのHomebrew

2022/04/24に公開1

Homebrew

HomebrewとはMacのパッケージマネージャですが、そもそもわけのわからん英単語が登場してよくわからんような感じに見えます。

昔雑に読んでよくわからないまま放置していたので、ちゃんと公式ドキュメントを読んで、日本人的にだいじだなーと思ったコア発想をここに置いておきます。

Homebrewにまつわる英単語の話

プログラミングとは一切関係ない文脈で、Homebrewingとは、自家製のお酒の醸造をすることです。要はビールを家で作ったりします。brewは「を醸造する」という意味の英単語です。

Homebrewにおいては、とても重要な概念です。

そんな感じで、

  • formula (複数形でformulae) → レシピのこと。formulaは、数学の公式とか、決まりきったやり方という意味もあるけど、けっこう広い範囲で使う。
  • Cellar → セラー。ワインセラーみたいなもの
  • keg → 小さいタル
  • bottle → ボトルのこと
  • cask → 大きいタル
  • tap → 口をきる。tap a keg(タルからお酒を出す的な意味)。タップダンスのタップは全然関係ないです。


https://www.allagash.com/blog/how-to-tap-a-keg/ から引用)

こんな感じで、全体的に、醸造関連の用語を使ってカッコよく説明しようとしているんだなー、というのがまず念頭にあるとすごくわかりやすくなる気がします。

パッケージマネージャの流れ

一般的に、パッケージマネージャは、レポジトリ(repository。貯蔵所という意味の英単語)と呼ばれる場所に、あるアプリケーションをインストールするために必要なものが全部格納されています。

Homebrewでは、これは https://formulae.brew.sh/formula/ で探すことができます。

たとえばnodeというアプリケーションの場合は、 https://formulae.brew.sh/formula/node にそのインストールに必要な情報が書かれています。

インストールに必要なものを formula と呼んでいるようです。お酒のレシピみたいなふうに考えてもらうといいと思います。

つまりnodeのレシピなど、いろんなアプリケーションのレシピがここにたくさん置いてあります。Homebrew formulaeってなっているのは、formulaがたくさんあるのでformulaeです。-aeってなるタイプの複数形のやつです。まれによくあります。

実際のformula(レシピ)はRuby言語で書かれています。そのレシピは、上記の画像の中にあるFormula code: node.rbのリンクから飛ぶといろいろと見ることができます。

実際に、↓のように、node.rbの中で、もろに「どうやってインストールするか」が書かれています。

この def install メソッドの中では、いろいろ ./configure とか make installとかのC言語的なやつでよく使われるビルドもしてくれていて、Mac OS X用のビルドができるようになっています。誰かがこうやって書いてくれたみたいです。ありがたいです。

ところで、installは「〜を設置する」という英単語です。

なので、ぼくたちはformula(レシピ)をダウンロードしてきて、brew(〜を醸造する)→install(〜を設置する)するというような意味のことを次のコマンドでおこないます。

$ brew install node

これがどこにinstallされるかというと、 /usr/local/Cellar にインストールされます。

「レシピをもとに自前でビール醸造したから、ビールセラーに置いとくか!!!」 みたいなノリです。

↓ 「いろいろインストールされてて嬉しいな」の図

↓ 「nodeがインストールされてて嬉しいな」の図

そして、実際には、/usr/local/Cellar/以下のものを直接呼び出さずに、/usr/local/bin/以下のディレクトリに、以下のようなシンボリックリンクができます。

そういうわけで、なんかいい感じにインストールしたらアプリケーションが使えるみたいです。

乾杯!🍻

おわりに

以上のことはじつは全部下の2つのページに書いてあります。特に片方はTOPページですが、とくに「これはビール醸造的なのを模してるんだよ」とは言及されてなくて「見りゃ誰でもわかんだろ」的に書かれているのでしんどいです。英語圏の人はとにかくずるいとおもいました。

https://brew.sh/

https://docs.brew.sh/Formula-Cookbook

Discussion

おっとっとおっとっと

なんでお酒の醸造にしたんでしょう? 大抵のPC周りは中二用語wだらけなのに