壊れやすいシステムを育てる

第4章

「ペットIDと飼い主IDを取り違えた」

執筆中

降ってくる要件

「別のペットのカルテに、まったく関係ない飼い主の連絡先が紐づいてしまった。両方 string だったため、引数の順序を取り違えても型が通っていた」という事故報告が降ってきます。

既存コードを動かしてみる

git checkout step-04-start
pnpm test

素朴にエージェントに依頼してみる

本章は執筆中です。

何が痛いのか

構造的部分型は同じ形を持つ別の概念を区別できません。ペットID・飼い主ID・来院ID・検体ID と並ぶ題材で、その限界が顕在化します。

どう直すか — 原則の紹介

本章で導入する原則:

  • Branded Type
  • as をブランド型ファクトリ専用に閉じる

リファクタを進める

本章は執筆中です。

章末の姿と次章への布石

次章では「エラー処理が if/throw で破綻している」という要件を起点に、Result 型と Railway Oriented Programming を導入します。