---
title: パッケージマネージャー Nix はなぜ純粋関数型言語で設定を記述するのか
tags:  #nix  
author: [ryu](https://docswell.com/user/ryu_trifolium)
site: [Docswell](https://www.docswell.com/)
thumbnail: https://bcdn.docswell.com/page/LE3W62YQE5.jpg?width=480
description: 関数型まつり2026 登壇資料 2026/7/12
published: July 12, 26
canonical: https://docswell.com/s/ryu_trifolium/ZPRLYQ-2026-07-12-001112
---
# Page. 1

![Page Image](https://bcdn.docswell.com/page/LE3W62YQE5.jpg)

パッケージマネージャー Nix はなぜ
純粋関数型言語で設定を記述するのか
ryu
2026/7/12
関数型まつり2026


# Page. 2

![Page Image](https://bcdn.docswell.com/page/8EDKVZ5W7G.jpg)

関数型まつり2026
自己紹介: ryu
使用言語：C#、Python
最近は F# にハマっている
書きやすくて良き
IaC が好き
PC 設定、ユーザー/開発環境
Nix で宣言管理している
2026/7/12 ryu(@ryu_trifolium)
2


# Page. 3

![Page Image](https://bcdn.docswell.com/page/V7PKVDGXJ8.jpg)

関数型まつり2026
パッケージマネージャーの話？
関数型言語と無関係なのでは？
→関係あります
Nix では、パッケージや環境の設定を
純粋関数型言語である Nix 言語で行います
2026/7/12 ryu(@ryu_trifolium)
3


# Page. 4

![Page Image](https://bcdn.docswell.com/page/2JVVZ163JQ.jpg)

関数型まつり2026
JSON や YAML でよくない？
なぜ純粋関数型言語を使うんだ？
→関数型の考え方で設計されたパッケージ管理
のモデルを扱うのに
関数型言語の特徴が適しているから
2026/7/12 ryu(@ryu_trifolium)
4


# Page. 5

![Page Image](https://bcdn.docswell.com/page/5EGL42NYJL.jpg)

関数型まつり2026
関数型の考え方で設計されたパッケージ管理
ってどんな仕組みなの？
→今日のセッションで紐解いていきます
2026/7/12 ryu(@ryu_trifolium)
5


# Page. 6

![Page Image](https://bcdn.docswell.com/page/4JQYGPQ67P.jpg)

関数型まつり2026
今日話すこと
・従来のパッケージ管理の課題と Nix の解決策
・Nix のビルドモデルと関数型の考え方
・Nix 言語で設定を記述する理由/利点
2026/7/12 ryu(@ryu_trifolium)
6


# Page. 7

![Page Image](https://bcdn.docswell.com/page/K74W5YNME1.jpg)

関数型まつり2026
Nix とは
純粋関数型のパッケージマネージャー
Linux、WSL、macOS で使える
約 11 万パッケージが利用可能
参考値：Debian+derivs (Raspbian Testing) 45,266
repology.org 2026/7/4 時点
特徴
高い再現性
宣言的な設定
2026/7/12 安全な更新・ロールバック
ryu(@ryu_trifolium)
7


# Page. 8

![Page Image](https://bcdn.docswell.com/page/LJ1YW65YEG.jpg)

関数型まつり2026
余談
関数型まつりの WEB サイトの開発環境構築に
Nix が使われている 参考：運営 Zenn 記事
2026/7/12 ryu(@ryu_trifolium)
8


# Page. 9

![Page Image](https://bcdn.docswell.com/page/GJWG6W5172.jpg)

関数型まつり2026
Nix のユニークな特徴
パッケージを「バージョン」だけではなく「作り方込み」で管理
$ which git
/nix/store/4qhdhmi7pzgad0zfd7c5lsg235mbf9hv-git-2.51.2/bin/git
&lt;hash&gt;-&lt;name&gt;
と名前を付け
パッケージを nix/store/... に配置している
※
&lt;hash&gt;
は「作り方」を識別する値
2026/7/12 ryu(@ryu_trifolium)
9


# Page. 10

![Page Image](https://bcdn.docswell.com/page/4EZLY5NX73.jpg)

関数型まつり2026
Nix のパッケージ管理
異なるバージョンが共存できる
nix/store/xxx-curl-8.17
nix/store/yyy-curl-8.18
同じバージョンが複数存在し得る
nix/store/aaa-curl-8.18
nix/store/bbb-curl-8.18
→パッケージごとに異なる
を依存に持てる
作り方が違えば同じバージョンでも別物
curl
2026/7/12 ryu(@ryu_trifolium)
10


# Page. 11

![Page Image](https://bcdn.docswell.com/page/Y76WD98P7V.jpg)

関数型まつり2026
なぜ Nix はこのような管理をしているのでしょうか？
Nix の仕組みの前に...
従来のパッケージマネージャーの課題を解説します
2026/7/12 ryu(@ryu_trifolium)
11


# Page. 12

![Page Image](https://bcdn.docswell.com/page/G75M3N9P74.jpg)

関数型まつり2026
依存関係地獄
A は X_v1、B は X_v2 を必要とする場合
B のために X を v2 へ更新すると、A が動かなくなる
2026/7/12 ryu(@ryu_trifolium)
12


# Page. 13

![Page Image](https://bcdn.docswell.com/page/9J29Z52ZER.jpg)

関数型まつり2026
依存関係地獄 - 一般的な対策
パッケージ名を分けて、別パッケージとして扱う
保存場所を分け、実行時にパスを指定する
→共存はできるが、名前やパスを個別に調整する必要がある
2026/7/12 ryu(@ryu_trifolium)
13


# Page. 14

![Page Image](https://bcdn.docswell.com/page/DEY4RKYNJM.jpg)

関数型まつり2026
依存関係地獄 - Nix での対策
パッケージごとに以下の処理を Nix が行う
作り方ごとに名前・保存場所を分ける
参照先のパスの指定
2026/7/12 ryu(@ryu_trifolium)
14


# Page. 15

![Page Image](https://bcdn.docswell.com/page/VJNYDRPV78.jpg)

関数型まつり2026
共有ライブラリの依存解決
一般的な環境
実行時にシステム共通の場所からライブラリを探す
ライブラリ X が置き換わると、A にも B にも影響する
Nix
ビルド時に利用するライブラリのパスを決める
A と B が異なるライブラリ X を参照できる
2026/7/12 ryu(@ryu_trifolium)
15


# Page. 16

![Page Image](https://bcdn.docswell.com/page/YE9PGM3VJ3.jpg)

関数型まつり2026
実例：Nix で管理している curl
$ readlink -f $(which curl)
/nix/store/0rfz69vp1nl0q2hxzig20hc60sk72z62-curl-8.17.0-bin/bin/curl
$ ldd $(which curl)
libidn2.so.0 =&gt; /nix/store/aaa-libidn2-2.3.8/lib/libidn2.so.0
libssh2.so.1 =&gt; /nix/store/ccc-libssh2-1.11.1/lib/libssh2.so.1
libpsl.so.5 =&gt; ...
2026/7/12 ryu(@ryu_trifolium)
16


# Page. 17

![Page Image](https://bcdn.docswell.com/page/GE8DVLM4ED.jpg)

関数型まつり2026
依存先のパスをビルド時に指定するには
依存パッケージの保存先を事前に知る必要がある
→ビルド前に保存先をどう決めているのか？
Nix のビルドの仕組みを見ていきます
2026/7/12 ryu(@ryu_trifolium)
17


# Page. 18

![Page Image](https://bcdn.docswell.com/page/LELM5L3V7R.jpg)

関数型まつり2026
Nix のビルドの流れ
入力元、出力先、ビルド方法を （derivation）に記録
サンドボックス環境でビルド
事前に決めた出力先（
）にビルド産物を配置
.drv
nix/store
2026/7/12 ryu(@ryu_trifolium)
18


# Page. 19

![Page Image](https://bcdn.docswell.com/page/4JMY3MDNJW.jpg)

関数型まつり2026
derivation - 精密なビルドレシピ
入力
依存パッケージ
ソースコード
ビルド方法
ビルドスクリプト
シェル、環境変数
出力
ビルド産物の保存先（
2026/7/12 ryu(@ryu_trifolium)
nix/store/...
）
19


# Page. 20

![Page Image](https://bcdn.docswell.com/page/PJR9QV4479.jpg)

関数型まつり2026
サンドボックス環境
derivation に定義されたデータ・パッケージを使ってビルドする
利用する shell や コマンド等は事前に定義が必要
原則、インターネットアクセス禁止
ls
→derivation に書いた入力だけで
ビルドできる状態へ近づける
2026/7/12 ryu(@ryu_trifolium)
20


# Page. 21

![Page Image](https://bcdn.docswell.com/page/PEXQ5Z2ZJX.jpg)

関数型まつり2026
サンドボックスで外部依存を減らしている
しかし、パッケージビルドのためには
ソースのダウンロード処理は必須
→必要な外部アクセスを専用の仕組みに隔離し
影響範囲を管理している
2026/7/12 ryu(@ryu_trifolium)
21


# Page. 22

![Page Image](https://bcdn.docswell.com/page/3EK968MVED.jpg)

関数型まつり2026
例：インターネットアクセス
GitHub からソースコードを取得する場合
version = &quot;0.11.21&quot;;
src = fetchFromGitHub {
owner = &quot;astral-sh&quot;;
repo = &quot;uv&quot;;
tag = finalAttrs.version;
hash = &quot;sha256-2PhGJbgCSqOiDVv8ktVkAaADhPxvKp1/JqkNQspt2Pc=&quot;;
};
取得元、期待される hash を「事前に」定義
期待するhashと、ダウンロードした内容の
hash
を照合
2026/7/12 ryu(@ryu_trifolium)
22


# Page. 23

![Page Image](https://bcdn.docswell.com/page/L73W622Q75.jpg)

関数型まつり2026
外部依存を管理して、再現性を高めている
もし、derivation やビルド産物が
後から書き換えられたら？
依存先のパスを事前に決めても意味が無い
2026/7/12 ryu(@ryu_trifolium)
23


# Page. 24

![Page Image](https://bcdn.docswell.com/page/87DKVZZWJG.jpg)

関数型まつり2026
Nix Store - ビルド産物などの保管場所
ソースコード、derivation、ビルド産物などを管理
それぞれ固有の Store Path で識別
immutable
作成後は変更されない
変更が必要なら別の Store Path を作る
2026/7/12 ryu(@ryu_trifolium)
24


# Page. 25

![Page Image](https://bcdn.docswell.com/page/VJPKVDDXE8.jpg)

関数型まつり2026
derivation を用いたビルドを解説しました
抽象的な話が続いたので
をビルドする derivation を見てみます
zlib
2026/7/12 ryu(@ryu_trifolium)
25


# Page. 26

![Page Image](https://bcdn.docswell.com/page/2EVVZ113EQ.jpg)

関数型まつり2026
zlib を作る derivation
ビルド産物の配置場所を記述している箇所をピックアップ
&quot;aaa-zlib-1.3.2.drv&quot;: {
&quot;outputs&quot;: {
&quot;out&quot;: {
&quot;path&quot;: &quot;xxx-zlib-1.3.2&quot;
},
outputs.out.path にビルド産物が置かれる
$ ls /nix/store/b2swxfi8srrbsafvh9iyyhd26mz9giwf-zlib-1.3.2
lib share
2026/7/12 ryu(@ryu_trifolium)
26


# Page. 27

![Page Image](https://bcdn.docswell.com/page/57GL422YEL.jpg)

関数型まつり2026
zlib を作る derivation
ビルド条件を記述している箇所をピックアップ
&quot;aaa-zlib-1.3.2.drv&quot;: {
&quot;env&quot;: {
&quot;builder&quot;: &quot;/nix/store/xxx-bash-static-5.3/bin/bash&quot;,
&quot;src&quot;: &quot;/nix/store/yyy-zlib-1.3.2.tar.gz&quot;,
&quot;stdenv&quot;: &quot;/nix/store/zzz-bootstrap-stage3-stdenv-linux&quot;,
builder：ビルドを実行するシェル
src：ソースコード
stdenv：よく使われるパッケージをまとめた環境
2026/7/12 ryu(@ryu_trifolium)
27


# Page. 28

![Page Image](https://bcdn.docswell.com/page/4EQYGPP6JP.jpg)

関数型まつり2026
zlib を作る derivation
入力を記述している箇所をピックアップ
&quot;aaa-zlib-1.3.2.drv&quot;: {
&quot;inputs&quot;: {
&quot;drvs&quot;: {
&quot;xyz-bash-static-5.3.drv&quot;: {
&quot;outputs&quot;: [
&quot;out&quot;
]
},
の に定義されたパスを入力として指定
＝サンドボックス内で利用可能になる
2026/7/12
ryu(@ryu_trifolium)
28
xyz-bash-static-5.3.drv
out


# Page. 29

![Page Image](https://bcdn.docswell.com/page/KJ4W5YYM71.jpg)

関数型まつり2026
derivation で依存を表現している
inputs.drvs
どのようにビルドされたパッケージを依存とするかを指定
例：
を指定
inputs.drvs.hoge-drv.outputs
derivation のどの output を使うかを指定
例：
の
の を指定
env 等
output 内の何を使うかを具体的に指定
例：builder として
を指定
2026/7/12 ryu(@ryu_trifolium)
xyz-bash-static-5.3.drv
xyz-bash-static-5.3.drv
output
out
nix/store/xxx-bash/bin/bash
29


# Page. 30

![Page Image](https://bcdn.docswell.com/page/LE1YW66Y7G.jpg)

関数型まつり2026
依存を含むパッケージのビルドの流れ
derivation の参照関係から、ビルドの順番が決まる
参照される derivation を先にビルドする
2026/7/12 ryu(@ryu_trifolium)
30


# Page. 31

![Page Image](https://bcdn.docswell.com/page/GEWG6WW1J2.jpg)

関数型まつり2026
整理 - Nix のパッケージ管理
derivation に入力・ビルド方法・出力先を記録
sandbox と hash 検証で外部依存の影響を抑える
ソース・derivation・ビルド産物を固有のStore Path で
管理し、変更しない
derivation の参照関係で依存先とビルド順序を表現
→何からどう作るかを固定し
同じ結果を再現しやすくしている
2026/7/12 ryu(@ryu_trifolium)
31


# Page. 32

![Page Image](https://bcdn.docswell.com/page/47ZLY55XJ3.jpg)

関数型まつり2026
Nix は関数型の考え方で設計されている
と冒頭で紹介しました
→ここまで見てきた仕組みを
関数型の言葉で捉え直してみましょう
2026/7/12 ryu(@ryu_trifolium)
32


# Page. 33

![Page Image](https://bcdn.docswell.com/page/YJ6WD99PJV.jpg)

関数型まつり2026
ビルドを関数のように扱う
関数
入力を受け取り、結果を返す
Nix
derivation を入力としてビルドする
ビルド産物を出力する
derivation に「何からどう作るか」をまとめ
ビルドの入力として扱う
2026/7/12 ryu(@ryu_trifolium)
33


# Page. 34

![Page Image](https://bcdn.docswell.com/page/GJ5M3NNPJ4.jpg)

関数型まつり2026
参照透過性と Nix のビルド
参照透過性
式をその評価結果で置き換えても、意味が変わらない
純粋な関数では、同じ入力から同じ結果を得られる
Nix
ビルド結果が derivation だけで決まる状態に近づける
サンドボックスなどで外部要因を減らしている
ビルドを、参照透過性を持つ関数のように
扱える状態へ近づけている
2026/7/12 ryu(@ryu_trifolium)
34


# Page. 35

![Page Image](https://bcdn.docswell.com/page/LE3W6226E5.jpg)

関数型まつり2026
副作用と Nix のビルド
副作用
処理の外部にある状態を読み書きすること
ファイルの読み書き、インターネットアクセス等
Nix
ソースの読み込みやビルド産物の書き込みは必要
サンドボックスで利用できる入力と書き込み先を制限
外部アクセスは専用の仕組みに隔離し、hashで検証
副作用の影響範囲を分離・管理している
2026/7/12 ryu(@ryu_trifolium)
35


# Page. 36

![Page Image](https://bcdn.docswell.com/page/8EDKVZZM7G.jpg)

関数型まつり2026
純粋関数のようなビルドモデル
純粋関数
同じ入力から同じ結果を返し、外部に副作用を生じさせない
Nix
derivation を入力、ビルド産物を出力として扱う
サンドボックスでファイルや環境変数の読み書き範囲を制限
外部取得は結果を hash で固定
ビルド処理が持つ副作用を分離・制限して
ビルドを純粋関数的なモデルに近づけている
2026/7/12 ryu(@ryu_trifolium)
36


# Page. 37

![Page Image](https://bcdn.docswell.com/page/V7PKVDDQJ8.jpg)

関数型まつり2026
不変性と Nix Store
関数型プログラミング
一度作成した値を変更しない
変更が必要なら新しい値を作る
Nix
Nix Store 上のソース・derivation・ビルド産物を変更しない
変更が必要なら別のStore Path を作る
値を上書きしないため
Store
Path が指す内容は後から変わらない
2026/7/12
ryu(@ryu_trifolium)
37


# Page. 38

![Page Image](https://bcdn.docswell.com/page/2JVVZ11PJQ.jpg)

関数型まつり2026
関数合成と derivation の参照
関数合成
関数の出力を別の関数の入力として使う
小さな処理をつないで、大きな処理を作る
Nix
derivation の input として derivation の output を使う
derivation をつなげて依存関係を持つ derivation を作る
例：bash の derivation の output を
2026/7/12
ryu(@ryu_trifolium)
zlib の derivation の input に指定する
38


# Page. 39

![Page Image](https://bcdn.docswell.com/page/5EGL422QJL.jpg)

関数型まつり2026
関数型的なビルドモデルによる利点
固有の Store Path → バイナリキャッシュ
同じ Store Pathがキャッシュにあれば、ビルドせず再利用
derivationの参照グラフ → Garbage Collection
どこからも参照されていない Store Path を削除
不変性 → Atomic Upgrade・ロールバック
既存環境を上書きせず、新しい環境を作ってから切り替える
過去の環境も残るため切り戻せる
2026/7/12 ryu(@ryu_trifolium)
39


# Page. 40

![Page Image](https://bcdn.docswell.com/page/4JQYGPPW7P.jpg)

関数型まつり2026
ここまでが Nix 内部の仕組みの話
derivation をどう作成しましょうか？
人が直接扱うのは大変そう...
2026/7/12 ryu(@ryu_trifolium)
40


# Page. 41

![Page Image](https://bcdn.docswell.com/page/K74W5YY1E1.jpg)

関数型まつり2026
実際の derivation
&quot;env&quot;: {
&quot;NIX_CFLAGS_COMPILE&quot;: &quot;-static-libgcc&quot;,
&quot;__structuredAttrs&quot;: &quot;&quot;,
&quot;buildInputs&quot;: &quot;&quot;,
&quot;builder&quot;: &quot;/nix/store/6pj37gbk9x89s9iidwj4xvkzhcnjihv8-bash-static-5.3/bin/bash&quot;,
&quot;cmakeFlags&quot;: &quot;&quot;,
&quot;configureFlags&quot;: &quot;--includedir=/02qcpld1y6xhs5gz9bchpxaw0xdhmsp5dv88lh25r2ss44kh8dxz/include --sharedlibdir=/1rz4g4znpzjwh1xymhjpm42vipw92pr73vdgl6xs1hycac8kf2n9/lib --libdir=/1rk3cgkqcvdsapdc35lyidbrifq4gkcl71652d7v3hm4gps1sqsv/lib --enable-shared&quot;,
&quot;configurePlatforms&quot;: &quot;&quot;,
env の一部をそのままコピペすると、表示が豆粒サイズになる
env だけで 40 行以上、全体だと 103 行
（JSON で出力し、フォーマットした場合）
→これを人間が管理するのは非現実的
2026/7/12 ryu(@ryu_trifolium)
41


# Page. 42

![Page Image](https://bcdn.docswell.com/page/LJ1YW665EG.jpg)

関数型まつり2026
derivation 作成の DSL に欲しい要素
※ DSL：Domain Specific Language
設定ファイルが single source of truth になって欲しい
→同じ設定ファイルから同じ derivation が作られて欲しい
こんな性質を持った言語とは...？
2026/7/12 ryu(@ryu_trifolium)
42


# Page. 43

![Page Image](https://bcdn.docswell.com/page/GJWG6WWW72.jpg)

関数型まつり2026
Nix 言語
derivation を作る DSL
純粋関数型言語
遅延評価
動的型付け
結果として、宣言的な設定記述
（ビルド手順は書かず、必要な要素を列挙する）
という特徴に繋がっています
2026/7/12 ryu(@ryu_trifolium)
43


# Page. 44

![Page Image](https://bcdn.docswell.com/page/4EZLY55273.jpg)

関数型まつり2026
補足：derivation 作成と純粋/不純
derivation を作成する関数は「不純」関数
引数：attribute set
返り値：attribute set
副作用：単一の derivation を
に書き込む
nix/store
derivation 作成関数を不純の境界にする
使う引数の作成は純粋関数で行うイメージ
※attribute
set：名前と値の組をまとめたデータ
2026/7/12 ryu(@ryu_trifolium)
44


# Page. 45

![Page Image](https://bcdn.docswell.com/page/Y76WD9V67V.jpg)

関数型まつり2026
補足の補足：具体的な定義
nix/src/libexpr/primops /derivation.nix
（リンク）に
が定義されている
こんな感じの構造の attribute set が返り値になっている
Nix 言語上ではファイル書き込みは見えない、実際は C++ での処理が
あり、ラップしている
builtins.derivation
name = outputName;
value = commonAttrs // {
outPath = strict.${outputName};
drvPath = strict.drvPath;
type = &quot;derivation&quot;;
inherit outputName;
2026/7/12 ryu(@ryu_trifolium)
45


# Page. 46

![Page Image](https://bcdn.docswell.com/page/G75M3ND574.jpg)

関数型まつり2026
Nix 言語で設定を記述する利点（主観）
学習コスパ
Nix の仕組みから利用者の環境定義まで、同じ言語で扱える
Nix を基盤としたツールは Nix 言語で扱う事が多い
ドキュメントのみに依存せず、ソースコードを読める方が楽
設定の柔軟性
自作関数や Utility 関数を使い、複雑な設定を抽象化できる
2026/7/12 ryu(@ryu_trifolium)
46


# Page. 47

![Page Image](https://bcdn.docswell.com/page/9J29Z58GER.jpg)

関数型まつり2026
実例：関数型まつりのサイト開発環境
（リンク）
セットアップが 2 コマンドで完成する
2026.fp-matsuri.org /flake.nix
nix develop
npm install
Gleam や Node.js が入った環境
mkShell {
buildInputs = [
rebar3
erlang
gleam
2026/7/12 ryu(@ryu_trifolium)
47


# Page. 48

![Page Image](https://bcdn.docswell.com/page/DEY4RK6GJM.jpg)

関数型まつり2026
実例：F# を使う開発環境
使いたいパッケージ名を列挙するだけ
他の部分は定型的なコードなので、使いまわし可能
devShells.default = pkgs.mkShell {
packages = with pkgs; [
dotnetCorePackages.sdk_10_0
go-task
#
];
その他、使いたいパッケージ
2026/7/12 ryu(@ryu_trifolium)
48


# Page. 49

![Page Image](https://bcdn.docswell.com/page/VJNYDRZ878.jpg)

関数型まつり2026
実例：複数 OS 用の定義を楽に作る
、
用の環境を定義できる
この後ろに、先ほどの様なパッケージを列挙していくイメージ
x86_64-linux
aarch64-darwin
let
supportSystems = with flake-utils.lib.system; [
x86_64-linux
aarch64-darwin
];
in
flake-utils.lib.eachSystem supportSystems (
system:
2026/7/12 ryu(@ryu_trifolium)
49


# Page. 50

![Page Image](https://bcdn.docswell.com/page/YE9PGMZXJ3.jpg)

関数型まつり2026
余談：Nix 言語のラッパー
LazyNix（リンク）
YAML で開発環境を定義
YAML から
ファイルが生成される
Devbox（リンク）
JSON で開発環境を定義
内部では Nix を利用している
多機能
.nix
2026/7/12 ryu(@ryu_trifolium)
50


# Page. 51

![Page Image](https://bcdn.docswell.com/page/GE8DVL19ED.jpg)

関数型まつり2026
まとめ
Nix はビルドを純粋関数のように扱える状態へ近づける
derivation、サンドボックス、Nix Store で入力と副作用を管理
Nix 言語は、derivation を作るためのDSL
derivation へ渡す値を純粋な関数で組み立てる
純粋関数型言語を使う理由
複雑な設定を抽象化しつつ、derivation を作るまでの計算を予測
可能に保つ
2026/7/12 ryu(@ryu_trifolium)
51


# Page. 52

![Page Image](https://bcdn.docswell.com/page/LELM5LQM7R.jpg)

関数型まつり2026
Nix 仕組みを更に知りたい方
Nix入門（リンク）
Zenn で無料公開されている本
発表で省略した仕組みも多数あるので、ぜひ！
公式リファレンス（リンク）
最新リリース Nix 2.34 版
2026/7/12 ryu(@ryu_trifolium)
52


# Page. 53

![Page Image](https://bcdn.docswell.com/page/4JMY3M16JW.jpg)

関数型まつり2026
Nix を使ってみたい方
Nix入門: ハンズオン編（リンク）
Zenn で無料公開されている本、Nix入門と筆者は同じ
Nix 言語の基礎、パッケージのビルド定義の作り方などが学べる
home-manager（リンク）
Nix を使ってユーザー環境を宣言的管理するツール
Nix ユーザーなら必須級に便利
nix-darwin（リンク）
Nix で Mac のシステム設定を管理するツール
＆ Nix ユーザーなら必須級に便利
2026/7/12 Mac
ryu(@ryu_trifolium)
53


# Page. 54

![Page Image](https://bcdn.docswell.com/page/PJR9QVLN79.jpg)

関数型まつり2026
Nix を使ってみたい方（宣伝）
ちいさくはじめる Nix（リンク）
Zenn で無料公開
Nix、home-manager、nix-darwin を横断的に解説
実際に使うには何をすればいいか？を中心に記述
2026/7/12 ryu(@ryu_trifolium)
54


# Page. 55

![Page Image](https://bcdn.docswell.com/page/PEXQ5ZW8JX.jpg)

関数型まつり2026
まとめ
Nix はビルドを純粋関数のように扱える状態へ近づける
derivation、サンドボックス、Nix Store で入力と副作用を管理
Nix 言語は、derivation を作るためのDSL
derivation へ渡す値を純粋な関数で組み立てる
純粋関数型言語を使う理由
複雑な設定を抽象化しつつ、derivation を作るまでの計算を予測
可能に保つ
2026/7/12 ryu(@ryu_trifolium)
55


