梶川 琢馬
kajitack
状態をなんとなくbooleanやnullableで表していませんか?
そうすると「あり得ない組み合わせ」がコード上では許されて、仕様追加のたびに分岐漏れが増えがちです。
そこで、取り得るケースを列挙して閉じ、変更時の漏れが型エラーとして出るようにする、という代数的データ型の考え方を紹介します。
代数的データ型は、「かつ(AND)」と「または(OR)」という2種類の型の組み合わせで表現できます。
これにより矛盾した状態を作りにくくなり、分岐漏れも型検査で見つけやすくなります。
本セッションでは、代数的データ型を難しい理論としてではなく、変更に強い設計のための道具として扱います。
フロントエンドではTypeScriptの型検査、PHPではPHPStanの静的解析を活かし、言語やツールで担保できる範囲は素直に任せつつ、担保しきれない分岐や失敗だけを「閉じた形」として扱う落とし所を整理します。ケース追加時に「直すべき場所」が自然に見える形に寄せます。
型のテクニック集ではなく、レビューやAIコーディングでもブレにくい設計の基準を持ち帰ってもらうのがゴールです。