Macにおけるパッケージマネージャーの2大巨頭、Homebrew(brew)とNixは、設計思想が180度異なります。
一言で言えば、「手軽さ・Macらしさを重視するならHomebrew」「究極の再現性・環境の汚染防止を重視するならNix」です。
それぞれの特徴、メリット・デメリット、そしてどちらを選ぶべきかを比較しました。
🚀 3行でわかる違い
| 項目 | Homebrew (brew) | Nix |
| 設計思想 | Macに足りないものをシンプルに補う | 関数型言語に基づいた、独立・再現可能な環境構築 |
| 環境への影響 | 共有ディレクトリ(/opt/homebrewなど)を書き換える | /nix/store に隔離され、既存環境を一切汚さない |
| 学習コスト | 極めて低い(一般的なコマンド操作) | 非常に高い(Nix言語や独自概念の理解が必要) |
📦 各パッケージマネージャーの特徴
1. Homebrew (brew)
Macユーザーのデファクトスタンダード(事実上の標準)です。
- メリット:
- 圧倒的な情報量と手軽さ: ほとんどのMac向けツールや開発環境の構築手順が「
brew install」を前提に書かれています。 - GUIアプリ(Cask)に強い:
brew install --cask slackのように、MacのGUIアプリケーション(.dmgや.app)を簡単に管理できます。 - 直感的: コマンドがシンプルで、誰でもすぐに使いこなせます。
- 圧倒的な情報量と手軽さ: ほとんどのMac向けツールや開発環境の構築手順が「
- デメリット:
- 環境が汚れやすい: パッケージ同士の依存関係が衝突したり、アップデートによって以前動いていたプロジェクトが突然動かなくなったりすることがあります。
- 再現性が低い: 「別のMacに全く同じ状態を再現する」のが意外と面倒です(
brew bundleはありますが、マイナーバージョンの固定などは苦手です)。
2. Nix
Linuxやこだわり派のMacユーザーの間で急速にシェアを拡大している、先進的なパッケージマネージャーです。
- メリット:
- 環境の完全な隔離と再現性: すべてのパッケージは
/nix/store内のハッシュ化された固有のディレクトリにインストールされます。プロジェクトごとに異なるバージョンのツールを、環境を汚さずに共存させられます。 - 宣言的な管理(Home Manager / nix-darwin): 「どのツールを入れ、その設定ファイルをどう書くか」までをコード(Nix言語)で記述し、Gitで一元管理できます。PCを移行しても、1コマンドで元の環境が寸分違わず狂いなく再現されます。
- 一時的な実行が可能:
nix run nixpkgs#cowsayのように、PCにインストールすることなく、その場限りのコマンド実行が可能です。
- 環境の完全な隔離と再現性: すべてのパッケージは
- デメリット:
- 学習コストが「絶壁」: 独自言語(Nix言語)の習得が必要で、エラーメッセージも難解です。
- MacのGUIアプリへの対応が発展途上:
nix-darwinやbrew-nixなどのエコシステムを使って工夫すれば管理できますが、Homebrew Caskの手軽さには及びません。
🛠️ 機能別の比較
依存関係の解決
- Homebrew: 共有の場所にあるライブラリをみんなで使います。Aというツールをアプデしたら、Bというツールが動かなくなる(破壊的変更)リスクがあります。
- Nix: A専用のライブラリ、B専用のライブラリを完全に分けて保持します。そのため、環境が壊れることが構造上ありません。
パッケージ数
- Homebrew: 非常に多いですが、主にMac/Linuxでよく使われるものに特化しています。
- Nix:
nixpkgsは世界最大級のパッケージ数を誇り、Homebrewよりも多くのソフトウェア(特にマイナーなライブラリや古いバージョン)が登録されています。
💡 どちらを選ぶべき?
Homebrewが向いている人
- 「とにかく普通に動けばいい、環境構築に時間をかけたくない」
- Slack、Google Chrome、VS CodeなどのGUIアプリもまとめてコマンドで管理したい
- 困ったときにすぐググって解決策を見つけたい
Nixが向いている人
- ドットファイル(設定ファイル)や開発環境をGitで完璧に管理・共有したい
- プロジェクトごとにツールのバージョンがバラバラで、環境の衝突に悩まされている
- 「インフラのコード化(IaC)」のような概念が好き、または関数型言語に抵抗がない
💡 結論:ハイブリッド(共存)という選択肢も
実は、「CLIツールや開発環境はNixで汚さずに管理し、MacのGUIアプリだけはHomebrew Caskで手軽に入れる」 という併用スタイルをとっているMacユーザーも非常に多いです。
まずは慣れ親しんだHomebrewを使いつつ、プロジェクトごとの環境分離に限界を感じたらNix(特に devshell や devenv といった開発環境構築機能)を部分的に導入してみるのがおすすめです。

コメント