【ニックスさいげんかのうびるど】
Nix(再現可能ビルド) とは?
最終更新:
💡 入力と手順をそろえて、再現性を高める
ビルドの手順と依存する入力を宣言し、再現性を高めるパッケージ管理・ビルドの仕組み。Nixは依存関係を含むビルド入力に基づいて成果物を管理するが、時刻や乱数などによる差まで自動でなくすわけではない。
📌 このページのポイント
Nixは普通のパッケージ管理と何が違うの?
ソース、ビルド用のツール、依存するパッケージ、手順を宣言して管理し、それらを含むビルド入力に基づくハッシュを使ってNix storeに保存するよ。版や構成が違うパッケージを別のパスへ置けるので、共存させやすいんだ。
同じ設定なら、どのPCでも必ず同じものができる?
flake.nixとflake.lockは何をするの?
CIとローカルの違いをなくすのに役立つ?
同じ入力と対応する対象環境でツールをそろえる助けになるよ。ただし外部サービス、実行時のデータ、機器の差まで一致するわけではない。再現可能な成果物が必要なら再ビルドして内容を比較する。2回一致しても、あらゆる条件での証明にはならないんだ。
NixOSも同じ仕組みを使うの?
NixOSはNixを使い、パッケージだけでなくOSのサービスや設定も宣言的に組み立てるLinuxディストリビューションだよ。保持されている以前の構成へ戻せるけれど、アプリが書き換えたデータまで元に戻るという意味ではないんだ。
まとめ:ざっくりこれだけ覚えればOK!
「Nix(再現可能ビルド)」って出てきたら「入力と手順を管理して、ビルドを再現しやすくする仕組み」と思えばだいたいOK!
📖 おまけ:英語の意味
「Nix」 = オランダ語のniks(何もない)に由来
💬 公式FAQでは、明示した入力以外をビルドから見せない考え方に由来すると説明しているよ。雪を表すのはラテン語のnixで、雪の結晶のロゴに関係する話。ギリシャ語で雪という説明ではないんだ。