【ニックス】

Nix(パッケージマネージャー) とは?

最終更新:
💡 依存関係のレシピで、環境をそろえる

依存関係とビルド手順を定義し、パッケージや開発環境を再現しやすくするパッケージマネージャー。異なる版をNixストアの別の場所に保存する設計を持つ。

📌 このページのポイント
Nix:レシピと、分かれた置き場所依存関係・ビルド手順レシピを定義し、入力の版をそろえるパッケージ A/nix/store/…-Aパッケージ B/nix/store/…-B異なる版や依存関係を、別のパスに保存どちらを使うかは、開発環境で選ぼう
ストアパスを簡略化した例。入力を固定することと、全てのビルド結果が完全に一致することは別。
ひよこ ひよこ
Nixって、普通のインストールと何が違うの?
ペンギン先生 ペンギン先生
依存関係とビルド手順をレシピのように定義し、その入力からパッケージを作る設計だよ。必要なものを明示して、環境差を減らす。公式資料では、パッケージを扱うこの設計を「純粋関数型」と説明しているね。
ひよこ ひよこ
違うバージョンも、同時に置ける?
ペンギン先生 ペンギン先生
異なる版や依存関係の組み合わせを、/nix/storeの別のパスに保存できるよ。ただし、同じpythonという名前でどちらを実行するかは、利用する環境やPATHで決まる。置き場所を分けることと、コマンドの選択は分けて考えよう。
ひよこ ひよこ
チームの開発環境をそろえられる?
ペンギン先生 ペンギン先生
開発環境の定義を共有する方法があるよ。Flakesならflake.nixで入力や出力を定義し、flake.lockで入力の版を固定する。対応OS・CPUやNixの設定も確認しよう。2026年10月確認のNix 2.35の公式資料では、Flakesは実験的な機能として案内されているよ。
ひよこ ひよこ
同じ定義なら、結果は一字一句同じ?
ペンギン先生 ペンギン先生
再現性を高める土台になるけれど、それだけで全ての結果が一致する保証ではないよ。NixOSの再現可能ビルドの説明にも、時刻の混入などで違いが残ることがあると書かれている。環境の定義をそろえることと、成果物の完全一致は別なんだ。
ひよこ ひよこ
NixOSも使わないといけない?
ペンギン先生 ペンギン先生
NixとNixOSは別だよ。Nixは対応するLinuxやmacOSなどで使えるパッケージ管理の道具。NixOSはNixを基盤にOSの構成を管理するLinuxディストリビューションだね。Nixの開発環境を使うために、必ずOSを入れ替えるわけではないよ。
ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「Nix」って出てきたら「依存関係のレシピで、パッケージや開発環境を再現しやすくする道具」と思えばだいたいOK!
📖 おまけ:英語の意味
「Nix Package Manager」 = Nixパッケージマネージャー
💬 Nixはパッケージと開発環境を管理するツールの名前だよ

参考資料

← 用語集にもどる