<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ja">
    <title>中村光宏 - 雑記</title>
    <subtitle>中村光宏のウェブサイト</subtitle>
    <link rel="self" type="application/atom+xml" href="https://m15a.dev/ja/posts/atom.xml"/>
    <link rel="alternate" type="text/html" href="https://m15a.dev/ja/posts/"/>
    <generator uri="https://www.getzola.org/">Zola</generator>
    <updated>2026-10-09T00:00:00+00:00</updated>
    <id>https://m15a.dev/ja/posts/atom.xml</id>
    <entry xml:lang="ja">
        <title>「なるクラ」データサイエンス: Docker ComposeでローカルMLOps</title>
        <published>2025-11-24T00:00:00+00:00</published>
        <updated>2026-10-09T00:00:00+00:00</updated>
        
        <author>
          <name>NACAMURA Mitsuhiro</name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://m15a.dev/ja/posts/acap-datasci-env/"/>
        <id>https://m15a.dev/ja/posts/acap-datasci-env/</id>
        
        <content type="html" xml:base="https://m15a.dev/ja/posts/acap-datasci-env/">&lt;h2 id=&quot;narukura-toha&quot;&gt;「なるクラ」とは&lt;/h2&gt;
&lt;p&gt;ローカルPCでも&lt;strong&gt;なる&lt;/strong&gt;べく&lt;strong&gt;クラ&lt;/strong&gt;ウド環境らしい使い心地で
データパイプライン構築や機械学習の実験管理ができるデータ分析環境を
構築してみました。&lt;/p&gt;
&lt;p&gt;Gemini曰く、&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;この環境は、クラウド環境で利用されるS3、オーケストレーター、
MLトラッキングサービスなどの主要コンポーネントをローカルの
Dockerコンテナで代替することで、「クラウドネイティブな開発
スタイル」を学ぶためのサンドボックスとして機能します。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;ソースコード（&lt;code&gt;docker-compose.yaml&lt;/code&gt;等）は&lt;a rel=&quot;external&quot; href=&quot;https://github.com/m15a/acap-datasci-env&quot;&gt;GitHub&lt;/a&gt;に公開しています。&lt;/p&gt;
&lt;h2 id=&quot;sisutemugou-cheng&quot;&gt;システム構成&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;データストア: &lt;a rel=&quot;external&quot; href=&quot;https://www.versity.com/products/versitygw/&quot;&gt;Versity S3 Gateway&lt;/a&gt;（S3互換のゲートウェイ）&lt;/li&gt;
&lt;li&gt;ソースコードリポジトリ: Gitデーモン&lt;/li&gt;
&lt;li&gt;パイプライン: &lt;a rel=&quot;external&quot; href=&quot;https://www.prefect.io/&quot;&gt;Prefect&lt;/a&gt;（ワークフローオーケストレータ）&lt;/li&gt;
&lt;li&gt;実験管理: &lt;a rel=&quot;external&quot; href=&quot;https://mlflow.org/&quot;&gt;MLflow&lt;/a&gt;（モデル・パラメタ・実験結果のトラッキング）&lt;/li&gt;
&lt;li&gt;ノートブック: &lt;a rel=&quot;external&quot; href=&quot;https://marimo.io/&quot;&gt;Marimo&lt;/a&gt;（おまけ。対話的な開発用）&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;追記&lt;/strong&gt;: S3代替として当初は&lt;a rel=&quot;external&quot; href=&quot;https://www.min.io/&quot;&gt;MinIO&lt;/a&gt;を利用していましたが、最近
&lt;a rel=&quot;external&quot; href=&quot;https://github.com/minio/minio/blob/master/README.md#source-only-distribution&quot;&gt;バイナリやDockerイメージの配布をやめてしまった&lt;/a&gt;
ようなので、代わりにVersityを採用しました。
ファイルシステムへS3プロトコルでアクセスするために使います。&lt;/p&gt;
&lt;p&gt;構成図は以下のようになります。
（Marimoはシステム全体と疎結合なので、見やすさのため省略）&lt;/p&gt;
&lt;pre class=&quot;mermaid&quot;&gt;
graph TD
    classDef host fill:#f5f5f5,stroke:#333,stroke-width:2px;
    classDef app fill:#e1f5fe,stroke:#0277bd,stroke-width:2px;
    classDef infra fill:#fff9c4,stroke:#fbc02d,stroke-width:2px;

    subgraph host_net [Host Environment]
        host[PC]:::host
    end

    subgraph docker_net [Docker Network]
        prefect_server(Prefect Server):::app
        prefect_worker(Prefect Worker):::app
        mlflow(MLflow Server):::app

        git[(Git Daemon)]:::infra
        versitygw[(Versity S3)]:::infra
        postgres[(PostgreSQL)]:::infra

        host --&gt;|Code| git --&gt;|Code| prefect_worker
        host --&gt;|Web UI / CLI| prefect_server
        host --&gt;|Web UI| mlflow
        host &lt;--&gt;|Data| versitygw

        prefect_server -.-|Backend| postgres
        prefect_server --&gt;|Run| prefect_worker

        prefect_worker --&gt;|API| mlflow
        prefect_worker &lt;--&gt;|Data| versitygw

        mlflow -.-|Backend| postgres
        mlflow --&gt;|Artifacts| versitygw
    end
&lt;/pre&gt;
&lt;h2 id=&quot;shi-ifang-noliu-re&quot;&gt;使い方の流れ&lt;/h2&gt;
&lt;p&gt;以下のような流れで実験を回していくことになります:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;（必要なら）分析対象データをS3（&lt;code&gt;http://localhost:7070&lt;/code&gt;）にアップロード&lt;/li&gt;
&lt;li&gt;実験を行うワークフローを実装（&lt;code&gt;experimemnts/*.py&lt;/code&gt;）&lt;/li&gt;
&lt;li&gt;Gitリポジトリ（&lt;code&gt;http:localhost:9010/repo&lt;/code&gt;）にコードを&lt;code&gt;git push&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Prefectにデプロイ（&lt;code&gt;prefect deploy&lt;/code&gt;）&lt;/li&gt;
&lt;li&gt;Prefectでワークフローを実行（&lt;code&gt;prefect deployment run&lt;/code&gt;）&lt;/li&gt;
&lt;li&gt;MLflow（&lt;code&gt;http://localhost:5001&lt;/code&gt;）で実験結果を確認&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;環境変数の設定など、細かい事前準備は&lt;a rel=&quot;external&quot; href=&quot;https://github.com/m15a/acap-datasci-env&quot;&gt;GitHub&lt;/a&gt;のREADMEに書いています。&lt;/p&gt;
&lt;h3 id=&quot;prefectwakuhuronoshi-zhuang&quot;&gt;Prefectワークフローの実装&lt;/h3&gt;
&lt;p&gt;Prefectのデコレータ（&lt;code&gt;@flow&lt;/code&gt;, &lt;code&gt;@task&lt;/code&gt;）で実験のワークフローや
タスクを定義します。&lt;code&gt;mlflow.log_params()&lt;/code&gt;など仕込んで、MLflowで
トラッキング！&lt;/p&gt;
&lt;pre&gt;&lt;code data-lang=&quot;python&quot;&gt;@flow
def example(n_tests: int = 1) -&amp;gt; None:
    &amp;quot;&amp;quot;&amp;quot;An example experiment as a Prefect flow with MLflow tracking.&amp;quot;&amp;quot;&amp;quot;
    mlflow.set_tracking_uri(MLFLOW_TRACKING_URI)
    mlflow.set_experiment(f&amp;quot;example-experiment-{datetime.now()}&amp;quot;)

    df = pd.read_csv(&amp;quot;s3://data/iris.csv&amp;quot;)
    x = df.drop(columns=[&amp;quot;target&amp;quot;, &amp;quot;species&amp;quot;])
    y = df[&amp;quot;target&amp;quot;]
    x_train, x_test, y_train, y_test = train_test_split(x, y, test_size=0.3)

    test_data = x_test.copy()
    test_data[&amp;quot;target&amp;quot;] = y_test
    test_dataset = mlflow.data.from_pandas(test_data, targets=&amp;quot;target&amp;quot;)

    @task
    def run(n_estimators, criterion) -&amp;gt; None:
        &amp;quot;&amp;quot;&amp;quot;A run in the experiment.&amp;quot;&amp;quot;&amp;quot;
        with mlflow.start_run():
            params = {&amp;quot;n_estimators&amp;quot;: n_estimators, &amp;quot;criterion&amp;quot;: criterion}
            mlflow.log_params(params)
            model = RandomForestClassifier(**params)
            model.fit(x_train, y_train)
            model_info = mlflow.sklearn.log_model(model, input_example=x_train)
            mlflow.models.evaluate(
                model=model_info.model_uri,
                data=test_dataset,
                model_type=&amp;quot;classifier&amp;quot;,
            )

    for n_estimators in [2**i for i in range(5, 8)]:
        for criterion in [&amp;quot;gini&amp;quot;, &amp;quot;entropy&amp;quot;, &amp;quot;log_loss&amp;quot;]:
            for _ in range(n_tests):
                run(n_estimators, criterion)
&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;prefectwakuhuronodepuroitoshi-xing&quot;&gt;Prefectワークフローのデプロイと実行&lt;/h3&gt;
&lt;p&gt;&lt;code&gt;prefect.yaml&lt;/code&gt;にデプロイ内容を宣言し、&lt;code&gt;prefect deploy&lt;/code&gt;を実行することで、
ワークフローをPrefectサーバに登録します。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;prefect.yaml&lt;/code&gt;の記述例:&lt;/p&gt;
&lt;pre&gt;&lt;code data-lang=&quot;yaml&quot;&gt;deployments:
  - name: experiment
    tags: [test]
    parameters:
      n_tests: 5
    entrypoint: experiments/example.py:example
    work_pool:
      name: sandbox
      job_variables: {}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;デプロイ後に、以下のコマンドで実行:&lt;/p&gt;
&lt;pre&gt;&lt;code data-lang=&quot;bash&quot;&gt;prefect deployment run example/experiment
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;PrefectのウェブUI（&lt;a rel=&quot;external&quot; href=&quot;http://localhost:4200/runs&quot;&gt;http://localhost:4200/runs&lt;/a&gt;）にアクセスすると、
実行の様子をリアルタイムで確認できます。&lt;/p&gt;
&lt;h3 id=&quot;mlflowdeshi-yan-jie-guo-noque-ren-tofen-xi&quot;&gt;MLflowで実験結果の確認と分析&lt;/h3&gt;
&lt;p&gt;MLflowのウェブUI（&lt;a rel=&quot;external&quot; href=&quot;http://localhost:5001&quot;&gt;http://localhost:5001&lt;/a&gt;）にアクセスして、トラッキング
された実験結果を確認したり、パラメタごとの比較分析ができます。&lt;/p&gt;
&lt;h2 id=&quot;jie-yu&quot;&gt;結語&lt;/h2&gt;
&lt;p&gt;なるべくクラウド環境っぽいローカル環境が作れました。
これにデータレイク等（&lt;a rel=&quot;external&quot; href=&quot;https://ducklake.select/&quot;&gt;DuckLake&lt;/a&gt;とか）を足せば更にクラウドっぽくなる
ことでしょう。&lt;/p&gt;
&lt;!-- vim:set tw=72 nowrap: --&gt;
</content>
        
    </entry>
    <entry xml:lang="ja">
        <title>NixNGのコンテナイメージはNixOSと比べて実際どれくらい小さいの？</title>
        <published>2025-11-07T00:00:00+00:00</published>
        <updated>2025-11-09T00:00:00+00:00</updated>
        
        <author>
          <name>NACAMURA Mitsuhiro</name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://m15a.dev/ja/posts/nixng-image-size/"/>
        <id>https://m15a.dev/ja/posts/nixng-image-size/</id>
        
        <content type="html" xml:base="https://m15a.dev/ja/posts/nixng-image-size/">&lt;h2 id=&quot;nixng&quot;&gt;NixNG&lt;/h2&gt;
&lt;p&gt;&lt;a rel=&quot;external&quot; href=&quot;https://github.com/nix-community/NixNG&quot;&gt;NixNG&lt;/a&gt;は、&lt;a rel=&quot;external&quot; href=&quot;https://nixos.org/&quot;&gt;NixOS&lt;/a&gt;から派生して開発中のLinuxディストリビューション
です。NixOSに対して軽量で、コンテナ向けを謳っています。&lt;/p&gt;
&lt;p&gt;NixOSからsystemdを省略し、パッケージセットを最小限に抑えることで
軽量化を図っているとのことです。たしかに、NixOSのコンテナイメージは
けっこう重たいので、軽くなるなら間違いなく嬉しいところです。
また、systemdを省略したことでrunitなどより軽量なInitを採用できたり、
夢が広がりますよね。&lt;/p&gt;
&lt;p&gt;ではNixNGは実際のところ、本家NixOSベースのイメージと比較して
どれくらい軽量化されているのでしょうか？
両者のイメージを作成して、サイズを比較してみます。&lt;/p&gt;
&lt;h2 id=&quot;jian-zheng-fang-fa&quot;&gt;検証方法&lt;/h2&gt;
&lt;p&gt;本家Nixのイメージは&lt;a rel=&quot;external&quot; href=&quot;https://hub.docker.com/r/nixos/nix/&quot;&gt;DockerHubで配布&lt;/a&gt;されています。
これに相当する、Nixパッケージマネージャのみを含むイメージを
NixNGで作成し、両者のサイズを比較します。&lt;/p&gt;
&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;ディストロ&lt;/th&gt;&lt;th&gt;パッケージ&lt;/th&gt;&lt;th&gt;ベースイメージ/ビルド&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td&gt;本家Nix&lt;/td&gt;&lt;td&gt;Nix 2.32.2&lt;/td&gt;&lt;td&gt;DockerHub &lt;code&gt;nixos/nix:2.32.2&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;NixNG&lt;/td&gt;&lt;td&gt;Nix 2.32.2&lt;/td&gt;&lt;td&gt;以下でビルドする&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;p&gt;また、プラットフォームは&lt;code&gt;x86_64-linux&lt;/code&gt;で揃えます。&lt;/p&gt;
&lt;h3 id=&quot;nixngbirudoyong-flake&quot;&gt;NixNGビルド用flake&lt;/h3&gt;
&lt;p&gt;検証用のflakeのプロジェクトを作成します。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;flake.nix&lt;/code&gt;:&lt;/p&gt;
&lt;pre&gt;&lt;code data-lang=&quot;nix&quot;&gt;{
  inputs = {
    nixng.url = &amp;quot;github:nix-community/NixNG&amp;quot;;
    nixpkgs.url = &amp;quot;github:NixOS/nixpkgs/nixpkgs-unstable&amp;quot;;
  };
  outputs =
    {
      self,
      nixng,
      nixpkgs,
      ...
    }:
    {
      examples.nixng-nix = import ./examples/nixng-nix.nix {
        inherit (nixng) nglib;
        inherit nixpkgs;
        system = &amp;quot;x86_64-linux&amp;quot;;
      };
    };
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;code&gt;examples.nixng-nix&lt;/code&gt;が、作成したい比較対象のシステムです。
&lt;a rel=&quot;external&quot; href=&quot;https://github.com/nix-community/NixNG/tree/master/examples/nix&quot;&gt;NixNGのリポジトリにある例&lt;/a&gt;を参考に、&lt;/p&gt;
&lt;p&gt;&lt;code&gt;examples/nixng-nix.nix&lt;/code&gt;:&lt;/p&gt;
&lt;pre&gt;&lt;code data-lang=&quot;nix&quot;&gt;{
  nglib,
  nixpkgs,
  system,
}:

nglib.makeSystem {
  inherit nixpkgs;
  inherit system;
  name = &amp;quot;nixng-nix&amp;quot;;
  config =
    { pkgs, ... }:
    {
      dumb-init = {
        enable = true;
        type.shell = { };
      };
      nix = {
        enable = true;
        package = pkgs.nixVersions.nix_2_32;
        config = {
          experimental-features = [
            &amp;quot;nix-command&amp;quot;
            &amp;quot;flakes&amp;quot;
          ];
          sandbox = false;
        };
      };
    };
}
&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;ociimezinobirudotorodo&quot;&gt;OCIイメージのビルドとロード&lt;/h3&gt;
&lt;p&gt;Dockerでイメージのtarファイルを生成します:&lt;/p&gt;
&lt;pre&gt;&lt;code data-lang=&quot;bash&quot;&gt;$ docker run --rm --platform linux/amd64 -v $(pwd):/work -w /work \
    nixos/nix:2.32.2 bash -c &amp;#39;
    {
        echo &amp;quot;filter-syscalls = false&amp;quot;
        echo &amp;quot;experimental-features = nix-command flakes&amp;quot;
    } &amp;gt;&amp;gt; /etc/nix/nix.conf
    nix build .#examples.nixng-nix.config.system.build.ociImage.stream
    ./result &amp;gt; nixng-nix-image.tar
    &amp;#39;

$ docker image load -i nixng-nix-image.tar 
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;ARMのmacOSのDocker Desktopだと、
&lt;a rel=&quot;external&quot; href=&quot;https://github.com/DeterminateSystems/nix-installer/issues/324&quot;&gt;Nixの設定に&lt;code&gt;filter-syscalls = false&lt;/code&gt;を追加しないとエラーになる&lt;/a&gt;
ので注意です。&lt;/p&gt;
&lt;h2 id=&quot;jie-guo&quot;&gt;結果&lt;/h2&gt;
&lt;h3 id=&quot;imezisaizu&quot;&gt;イメージサイズ&lt;/h3&gt;
&lt;p&gt;本家Nixのイメージは上記の過程で既に手元にあります。
さてさて、両者のサイズはどうなっているでしょう？&lt;/p&gt;
&lt;pre&gt;&lt;code data-lang=&quot;bash&quot;&gt;$ docker image ls
REPOSITORY   TAG       IMAGE ID       CREATED        SIZE
nixos/nix    2.32.2    f9b3c7811e27   55 years ago   436MB
nixos/nix    latest    f9b3c7811e27   55 years ago   436MB
nixng-nix    latest    26361447b07f   55 years ago   356MB
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;本家のイメージは&lt;strong&gt;436MB&lt;/strong&gt;なのに対し、NixNGは&lt;strong&gt;356MB&lt;/strong&gt;となり、&lt;strong&gt;約18%（80MB）&lt;/strong&gt;
の軽量化が確認できました。&lt;/p&gt;
&lt;h3 id=&quot;nix-store-nonei-rong&quot;&gt;&lt;code&gt;/nix/store/&lt;/code&gt;の内容&lt;/h3&gt;
&lt;p&gt;どんなパッケージが省略されているのか気になりました。
まずパッケージ数を確認すると、&lt;/p&gt;
&lt;pre&gt;&lt;code data-lang=&quot;bash&quot;&gt;$ docker run --platform linux/amd64 nixos/nix:2.32.2 \
    sh -c &amp;#39;ls /nix/store&amp;#39; 2&amp;gt;/dev/null | rg &amp;#39;^[a-z0-9]+-&amp;#39; | wc -l
     121
$ docker run --platform linux/amd64 nixng-nix \
    sh -c &amp;#39;ls /nix/store&amp;#39; 2&amp;gt;/dev/null | rg &amp;#39;^[a-z0-9]+-&amp;#39; | wc -l
      81
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;本家Nixが&lt;strong&gt;121&lt;/strong&gt;なのに対して、NixNGは&lt;strong&gt;81&lt;/strong&gt;と、パッケージ数が&lt;strong&gt;40&lt;/strong&gt;
少なくなっています。&lt;/p&gt;
&lt;p&gt;差分を詳しく見てみます。各パッケージの細かいバージョンの違いを前処理:&lt;/p&gt;
&lt;pre&gt;&lt;code data-lang=&quot;bash&quot;&gt;$ docker run --platform linux/amd64 nixos/nix:2.32.2 \
    sh -c &amp;#39;ls /nix/store&amp;#39; 2&amp;gt;/dev/null | rg &amp;#39;^[a-z0-9]+-&amp;#39; \
    | cut -d&amp;#39;-&amp;#39; -f2- \
    | sed -Ee &amp;#39;s#[0-9]{4}(-?[0-9]{2}(-?[0-9]{2})?)?[a-z]?#DATE#&amp;#39; \
        -e &amp;#39;s#[0-9]+\.[0-9]+([.p-][0-9]+)?#VERSION#&amp;#39; \
    | sort \
    | uniq \
    &amp;gt; nixos-nix-nix-store.txt

$ docker run --platform linux/amd64 nixng-nix \
    sh -c &amp;#39;ls /nix/store&amp;#39; 2&amp;gt;/dev/null | rg &amp;#39;^[a-z0-9]+-&amp;#39; \
    | cut -d&amp;#39;-&amp;#39; -f2- \
    | sed -Ee &amp;#39;s#[0-9]{4}(-?[0-9]{2}(-?[0-9]{2})?)?[a-z]?#DATE#&amp;#39; \
        -e &amp;#39;s#[0-9]+\.[0-9]+([.p-][0-9]+)?#VERSION#&amp;#39; \
    | sort \
    | uniq \
    &amp;gt; nixng-nix-nix-store.txt
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;その上で差分を見ると:&lt;/p&gt;
&lt;pre&gt;&lt;code data-lang=&quot;diff&quot;&gt;--- nixos-nix-nix-store.txt	2025-11-08 21:45:41
+++ nixng-nix-nix-store.txt	2025-11-08 21:45:48
@@ -1,6 +1,5 @@
 acl-VERSION
 attr-VERSION
-audit-VERSION-lib
 aws-c-auth-VERSION
 aws-c-cal-VERSION
 aws-c-common-VERSION
@@ -14,73 +13,45 @@
 aws-checksums-VERSION
 aws-crt-cpp-VERSION
 aws-sdk-cpp-VERSION
-base-system
 bash-interactive-VERSION
-bash-interactive-VERSION-man
 bash-VERSION
 boehm-gc-VERSION
 boost-VERSION
 brotli-VERSION-lib
 busybox-VERSION
 bzip2-VERSION
-channel-nixos
-coreutils-full-VERSION
-coreutils-VERSION
+ca-certificates.crt
 curl-VERSION
-curl-VERSION-bin
-curl-VERSION-man
-db-VERSION
-dns-root-data-DATE
-editline-VERSION
-expat-VERSION
-findutils-VERSION
+dumb-init-VERSION
+editline-VERSION-unstable-DATE
 gcc-VERSION-lib
 gcc-VERSION-libgcc
-gdbm-VERSION-lib
-gettext-VERSION
-git-minimal-VERSION
+generate-shadow
 glibc-VERSION
-glibc-VERSION-bin
-gmp-with-cxx-VERSION
-gnugrep-VERSION
-gnused-VERSION
-gnutar-VERSION
-groff-VERSION
-gzip-VERSION
-gzip-VERSION-man
+group
+hwloc-VERSION-lib
 iana-etc-DATE
+icu4c-VERSION
 keyutils-VERSION-lib
 krb5-VERSION-lib
-ldns-VERSION
-less-668
-less-668-man
 libarchive-VERSION-lib
 libblake3-VERSION
-libbsd-VERSION
-libcap-ng-VERSION
-libcap-VERSION-lib
-libcbor-VERSION
 libcpuid-VERSION
-libedit-DATE-VERSION
-libfido2-VERSION
 libgit2-VERSION-lib
 libidn2-VERSION
-libmd-VERSION
-libpipeline-VERSION
 libpsl-VERSION
 libseccomp-VERSION-lib
 libsodium-VERSION
 libssh2-VERSION
 libunistring-VERSION
-libxcrypt-VERSION
 libxml2-VERSION
-linux-pam-VERSION
 llhttp-VERSION
 lowdown-VERSION-lib
-man-db-VERSION
-manifest.nix
 ncurses-VERSION
+ndig4f4dx8bmrmyr5vfm19g02r9l9ggm-source
 nghttp2-VERSION-lib
+nghttp3-VERSION
+ngtcp2-VERSION
 nix-cmd-VERSION
 nix-expr-VERSION
 nix-fetchers-VERSION
@@ -89,32 +60,20 @@
 nix-store-VERSION
 nix-util-VERSION
 nix-VERSION
-nss-cacert-VERSION
-openssh-VERSION
+nix.conf
+nixng-nixng-nix
+onetbb-DATE.VERSION
 openssl-VERSION
+passwd
 pcre2-VERSION
-pcsclite-VERSION-lib
+profile
 publicsuffix-list-0-unstable-DATE
 readline-VERSION
-root-profile-env
 s2n-tls-VERSION
-shadow-VERSION
-source
+service-dir
 sqlite-VERSION
-systemd-minimal-libs-VERSION
-tbb-DATE.VERSION
-tbb-DATE.VERSION-dev
-tcb-VERSION
-util-linux-minimal-VERSION-bin
-util-linux-minimal-VERSION-lib
-util-linux-minimal-VERSION-login
-util-linux-minimal-VERSION-mount
-util-linux-minimal-VERSION-swap
-wget-VERSION
-which-VERSION
+tzdata-DATE
 xgcc-VERSION-libgcc
 xz-VERSION
-zlib-ng-VERSION
 zlib-VERSION
 zstd-VERSION
-zstd-VERSION-bin
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;NixNGではsystemd (&lt;code&gt;systemd-minimal-libs&lt;/code&gt;) が消えているのに加え、
他のパッケージもいろいろと省略されています。&lt;/p&gt;
&lt;h2 id=&quot;gan-xiang&quot;&gt;感想&lt;/h2&gt;
&lt;p&gt;身も蓋もないことをいうと、&lt;strong&gt;軽くしたいならAlpine/Distroless使えよ&lt;/strong&gt;って話ですが、
Nixを使いたくて、少しでもクラウド利用料等を節約したいなら、
NixNGは選択肢に入るかなと思いました。いかがでしょう？&lt;/p&gt;
</content>
        
    </entry>
</feed>
