ソフトウェアをどうやって入れるか。この「パッケージ管理」のやり方に、各OSの文化と哲学が凝縮されてる。
Linuxのパッケージ管理は異次元。 `apt install nginx`。これだけ。依存関係も自動解決、設定ファイルも適切な場所に配置、サービス登録も自動。OSレベルでパッケージ管理が統合されてる。この「全部コマンドで完結」する快感、他のOSでは味わえない。
各OSのパッケージ管理事情:
- Linux(apt/dnf/pacman) — OSと一体化した最強のパッケージ管理。リポジトリには数万のパッケージ。依存関係も自動解決。`apt upgrade`一発で全ソフトが最新に。これに慣れると他のOSが面倒に感じる。
- macOS(Homebrew) — サードパーティ製だけどデファクトスタンダード。`brew install`で入る。でもApple公式ではないから、OSとの統合は弱い。アップデートのたびにパーミッションがおかしくなったり。
- Windows(winget/Chocolatey/Scoop) — 後発だけど急成長中。wingetが標準搭載されたのは革命的。でも対応アプリがまだ少ない。「公式サイトに行ってインストーラーをダウンロードしてNextを連打」の文化がまだ根強い。
パッケージ管理の理想は「宣言的」であること。`package.json`や`Dockerfile`のように「このソフトのこのバージョンが必要」と書けば、あとは自動で入る。NixOSはこの思想をOSレベルで実現してて、設定ファイル一つで環境が完全再現できる。これがパッケージ管理の究極形。
Windowsでパッケージ管理がないのが辛かった時代は終わりつつある。wingetで`winget install -r packages.json`みたいな一括インストールも可能になってきた。あと一歩。