【ニックス】

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

💡 「うちの環境では動く」を根絶する魔法のレシピ帳
📌 このページのポイント
Nix vs 従来のパッケージマネージャー 従来方式 /usr/lib(共有) Python 3.10 Python 3.12 バージョン競合が発生 Aさんの環境 Bさんの環境 「うちでは動くのに…」 Nix方式 /nix/store/ハッシュ値-パッケージ名 Python 3.10 Python 3.12 競合なしで共存 Aさんの環境 Bさんの環境 完全に同じ環境を再現
従来方式とNix方式の比較
ひよこ ひよこ

Nixって普通のパッケージマネージャーと何が違うの?

ペンギン先生 ペンギン先生

一番の違いは「純粋関数型」であることだよ。数学の関数みたいに、同じ入力からは必ず同じ結果が出る。だからAさんのPCでもBさんのPCでも、まったく同じ環境が再現できるんだ

ひよこ ひよこ

複数のバージョンを入れても大丈夫なの?

ペンギン先生 ペンギン先生

Nixはパッケージごとにユニークなハッシュ付きのパスに保存するから、Python 3.10と3.12を同時に入れても競合しないよ。従来のパッケージマネージャーだとバージョン違いが衝突しがちだけど、Nixならその心配がないんだ

ひよこ ひよこ

チーム開発で使うとどんないいことがあるの?

ペンギン先生 ペンギン先生

flake.nixというファイルに開発環境を定義しておけば、新メンバーがnix developと打つだけで全員同じ環境が手に入る。「セットアップ手順書」が不要になるんだよ

ひよこ ひよこ

NixOSっていうOSもあるんだよね?

ペンギン先生 ペンギン先生

そう、OS全体をNixで管理するLinuxディストリビューションだね。設定ファイル1つでOSの状態を丸ごと再現できるし、アップデートに失敗しても前の世代にロールバックできる。インフラエンジニアの間では「壊れないOS」として注目されているよ

ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「Nix」って出てきたら「環境を完全に再現できるパッケージマネージャー」と思えればだいたいOK!
📖 おまけ:英語の意味
「Nix Package Manager」 = Nixパッケージマネージャー
💬 Nixはオランダ語で「何もない」を意味する言葉に由来するよ。何もない状態から完全に再現可能な環境を作り上げるという思想が込められているんだ
← 用語集にもどる