娘が生まれて 6 ヶ月が過ぎた

2026 年 2 月 3 日、娘が生まれました。

2210 g とちょっと小さめ。

生まれたばかりの赤ちゃんって羊水でむくんでるですね。顔パンパンやんってなりました。

誰に教えられたわけでもないのにちゃんと泣いてえらい。

うちの子はそのまま NICU に入りました。というのも、染色体がひとつみつ組です。

ヒトの 23 組ある染色体のうち 18 番が 3 本ある 18 番トリソミーです。妊娠中に確定診断もされていました。

18 番トリソミーは子ごとに出てくる症状がいろいろあるらしく、出産前に伝えられたのは、心室中隔がなさそうなこと・食道がつながっていないかもしれないこと・肛門が開いていないかもしれないことでした。

実際に生まれてくると食道と肛門は問題なく、心臓は心房心室とも中隔に穴が開いていました。心臓の左右がつながっていると、全身に送る血液の圧が肺にもかかって肺高血圧症が出てくるらしいです。

また、生まれてしばらくしても動脈管が残ったままで、動脈管というのは胎児のときは肺を使わないので肺動脈から大動脈へバイパスする血管がありそれが生後しばらくして閉じるらしいです、それが残ったままだと一般にはよくないそうですが、中隔欠損だと肺高血圧症を少し抑えてくれるそうです。

自発呼吸がないわけではないのですが、息こらえがあって顔色が悪くなったりしんどい感じがあったので挿管して人工呼吸器をつけました。

嚥下能力が弱く肺へ唾液が流れこんでおり、肺炎気味になっていたことと、先の人工呼吸が必要なことがあり、気管切開と合わせて喉頭気管分離を提案されました。

気管切開は喉の気管に穴を開けて皮膚の外へ気管をつなぐことで、これで挿管なしで人工呼吸器が付けられます。

喉頭気管分離は気管切開した部分の上の部分で気管を閉じてしまい、食道側と完全に隔離してしまうことです。こうすると誤嚥が物理的になくなります。欠点として、口へ息が通らなくなるので声を出せなくなります。

かなり重い決断でしたが気管切開と喉頭気管分離をどちらもすることにしました。誕生直後に助産師さんが撮影してくれた産声の動画が娘の唯一の声の記録になりました。生後 4 週間でこの手術をするのはかかっている小児病院でもとても早いそうです。

幸い、呼吸が楽になって体力を使わずによくなったのか、すくすく育って 6 ヶ月で 5000 g になり、これはトリソミーの子では珍しいぐらいの成長速度だそうです。

すくすく育っているのは、妻の献身的な搾乳もあって、ずっと 3 時間おきに母乳をしぼってくれているので、消化もよいおかげです。

最近は退院も見据えて、娘がベビーカーに慣れる練習や、呼吸器や酸素ボンベ・吸痰機などを積む練習をし、家にもいくつか医療機器が届き始めました。

だっことおふろが大好きなので家に帰ってきたら堪能してもらおう。

一般的な赤ちゃんよりは手間がかかりますが、かわいいからしかたないですね。かわいいと思った時点でこっちの負けです。

いまだに自動販売機のタッチ決済が分からない

いまだに自動販売機のタッチ決済のやり方が分からない機種がある

分かるやつもある

これは今日使おうとして分からなかったやつ

自分の想定では

  • 商品のボタンを押す
  • スマホをかざす
  • 対応する決済方法が表示される
  • 青く丸いボタンでどの方法か選択する
  • スマホをかざして決済

だと思ったんだが、青く丸いボタンを押しても何も起きない、もしくは何か起きてるように見えない

自動販売機のタッチ決済って何年前から始まったんだろう

大規模言語モデルによる対話を AI と呼びたくない

大規模言語モデル(LLM)によるいろいろを AI と呼びたくないなという気持ちです。

AI って、人工知能ですよ、人造知性ですよ。

LLM は、かなり自然な言語対話をコンピューターで実現したとても革新的なものだけど、知性というと何か足りなさそう。

じゃあ何が足りないんですか? 何やろうねえ、読者への課題とします。

おわり。

H 言語くんフィギュア、技術書典 20 限定

技術書典 20 限定で H 言語くんフィギュアを発売します!

kakkun61 が初めて Blender のスカルプトをさわったら偶然できた気持ち悪い異形の立体化!

サポート材未取り外し、未塗装での販売です

techbookfest.org

ガンダムマーカー メッキシルバーがメッキ調にならなくなった

買ったときはめちゃくちゃメッキ調になってすごいと思った「ガンダムマーカー EX ガンダムメッキシルバー」ですが、4 年ぐらい経って使おうとしたら全くメッキ調にならなくなりました。

www.mr-hobby.com

新品を買ってきたので新旧比較、全然違う。

かなり使用期限の短い商品なのかも……

悲しい

技術書典 20 サークル参加決定

技術書典 20 にオンライン&オンサイトでサークル参加します。

techbookfest.org

日時と場所は

  • オンラインは 2026.04.11-26
  • オンサイトは 2026.04.12 池袋サンシャインシティ 展示ホール D

下記の書物を持っていく予定です。

よろしくね!

Nix Flake モジュールのオプションからドキュメントを自動生成する

Cspell というものがあります。ソースコード中の単語のスペルをチェックしてくれるツールです。うっかりタイポして面倒なエラーになるのは嫌なので自分がソースコードを書くときはチェックをしています。

cspell.org

それを nix flake check コマンドの中でやってしまおうというのが cspell-nix です。11 月ごろに作りました。

github.com

cspell-nix は Flake Parts のモジュールとして提供しています。

flake.parts

引数などはモジュール定義を見れば書いてあるのですが、わざわざそのためにソースコードを見るのは不要な部分も多いですし Commonmark などで書いてレンダーされた結果を見れるようにしたいです。しかし手でドキュメントを書いていくのはソースコードとの乖離などに注意する必要があります。そこでドキュメントを自動生成できるようにしました。

pkgs.nixosOptionsDoc

pkgs から nixosOptionsDoc という関数が定義されていて、これでドキュメントの生成ができます。できるのですが、なかなかつまづきました。

まず、nixosOptionsDoc にコメントが書かれていないためソースコードを見て使い方を推定する必要があります。ソースコードを辿ると nixpkgs/nixos/lib/make-options-doc/default.nix にコメントが書かれていてこれがヒントになります。

  Generates documentation for [nix modules](https://nix.dev/tutorials/module-system/index.html).

  It uses the declared `options` to generate documentation in various formats.

  # Outputs

  This function returns an attribute set with the following entries.

  ## optionsCommonMark

  Documentation in CommonMark text format.

  ## optionsJSON

  All options in a JSON format suitable for further automated processing.

  `example.json`
  ```json
  {
    ...
    "fileSystems.<name>.options": {
      "declarations": ["nixos/modules/tasks/filesystems.nix"],
      "default": {
        "_type": "literalExpression",
        "text": "[\n  \"defaults\"\n]"
      },
      "description": "Options used to mount the file system.",
      "example": {
        "_type": "literalExpression",
        "text": "[\n  \"data=journal\"\n]"
      },
      "loc": ["fileSystems", "<name>", "options"],
      "readOnly": false,
      "type": "non-empty (list of string (with check: non-empty))"
      "relatedPackages": "- [`pkgs.tmux`](\n    https://search.nixos.org/packages?show=tmux&sort=relevance&query=tmux\n  )\n",
    },
    ...
  }
  ```

  ## optionsAsciiDoc

  Documentation rendered as AsciiDoc. This is useful for e.g. man pages.

  > Note: NixOS itself uses this output to to build the configuration.nix man page"

  ## optionsNix

  All options as a Nix attribute set value, with the same schema as `optionsJSON`.

  # Example

  ## Example: NixOS configuration

  ```nix
  let
    # Evaluate a NixOS configuration
    eval = import (pkgs.path + "/nixos/lib/eval-config.nix") {
      modules = [
        ./module.nix
      ];
    };
  in
    pkgs.nixosOptionsDoc {
      inherit (eval) options;
    }
  ```

  ## Example: non-NixOS modules

  `nixosOptionsDoc` can also be used to build documentation for non-NixOS modules.

  ```nix
  let
    eval = lib.evalModules {
      modules = [
        ./module.nix
      ];
    };
  in
    pkgs.nixosOptionsDoc {
      inherit (eval) options;
    }
  ```

次に Flake モジュールを評価する必要があるのですが、flake-parts.lib.evalFlakeModule では評価後の perSystem のモジュールの options を評価するとよく分からないエラーになりました1。また、flake-parts.lib.evalFlakeModule を使用すると Flake Parts が提供するオプションまでドキュメントになってしまいます。これは要りません。なので自分のモジュールだけ単品で lib.evalModules で評価することにしました。しかし、これだと flake.apps などを参照する config の方がエラーになるので options だけのモジュールに分割して lib.evalModules に渡す必要がありました。

この辺りを乗り越えるとモジュールのオプションを Commonmark や Asciidoc に変換できるようになります。

出力したドキュメントはこんな感じになりました。

おしまい


  1. モジュール引数に pkgs がないというエラーなのですが、そんなことはないはず……