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

第3章

「外部の検査機関APIから検査結果を取り込みたい」

執筆中

降ってくる要件

「外部の検査機関APIから血液検査・尿検査の結果を取り込んでカルテに紐づけたい」という要件に対し、当初は as ExamResult で型を黙らせて実装していました。本番で undefined 参照によりサービスが落ちます。

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

git checkout step-03-start
pnpm test

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

本章は執筆中です。

何が痛いのか

型検査は通るのに、ランタイムで構造が前提と違う値を受け取って落ちます。これは型検査の境界を理解せずに as を使ったときに起こる典型的な事故です。

どう直すか — 原則の紹介

本章で導入する原則:

  • Zod スキーマによる境界防御
  • Always-Valid Domain Model
  • as から safeParse への移行

リファクタを進める

本章は執筆中です。

章末の姿と次章への布石

次章では「ペットIDと飼い主IDを取り違えた」という事故を起点に、Branded Type を導入します。