純粋関数型パッケージ管理

パッケージをイミュータブルかつ純粋関数的に扱うパッケージ管理のアプローチ。Nixが体現する設計思想。

核心的な考え方

パッケージを「関数の戻り値」として扱う。

パッケージ = f(ソースコード, 依存関係, ビルドスクリプト, ...)

関数型プログラミングにおける純粋関数と同様に、同じ入力からは必ず同じ出力が得られる。これが再現性の源泉となる。

従来アプローチとの違い

従来のパッケージ管理(apt、Homebrew等)はミュータブルなモデルを採用している。/usr/bin/pythonのような固定パスにインストールし、更新すると上書きされる。

純粋関数型アプローチでは:

もたらす特性

複数バージョンの共存 - パスが異なるため、異なるバージョンが干渉しない

アトミックなアップグレードとロールバック - 古いバージョンはストアに残り、参照先を切り替えるだけで戻せる

再現性の保証 - 同じロックファイルからは、どのマシンでも同じパッケージが得られる

依存関係地獄の解決 - 複数のパッケージが異なるバージョンのライブラリを要求しても共存できる

関連