私がTypeScriptで `interface` よりも `type` を好む理由

はじめに TypeScriptで型を定義する際、interface と type のどちらを使うべきか。これは、多くの開発現場で一度は議論になるテーマではないかと思います。 世の中の多くのドキュメントや記事では、クラスへの implements のしやすさや、interface が持つ「…

ユーザーの内部IDの発行権を他人に握らせてはいけない

結論 ユーザーの内部IDを自システム以外に委ねるべきではありません。 ユーザーの内部IDの実装について気をつけるべきことを2つ紹介します。 外部サービスが発行したIDを内部IDにするべきではない ユーザーが変更可能な値を内部IDにするべきではない 外部サ…

なぜTypeScriptでメソッド記法を避けるべきか?実務に近い事例の紹介

参考文献 プロを目指す人のためのTypeScript入門 安全なコードの書き方から高度な型の使い方まで | 技術評論社 通称ブルーベリー本。コラム17に記載。 Method Shorthand Syntax Considered Harmful | Total TypeScript TypeScript の変性(共変・反変)を 5 …

生成AIにMermaid.jsでロバストネス図を描いてもらう

背景 生成AIによる要求分析 要求分析はチームによるシステム開発の要であり、関係者の認識を揃えるために非常に重要なプロセスです。 システム開発のための要求分析の手法としてICONIXやRDRAなどが知られていますが、その過程ではユースケース図やロバストネ…

ドメインイベントを容易に記録できるコード設計を考える

はじめに データアナリストの現場の苦しみ 近年、ビジネスの意思決定にはデータの活用が重要だという認識が広まりつつあります。実際、データアナリストに関する求人やデータ分析の発表が増えているのを実感します。 しかし、現場では、異常かつ不十分なデー…

Union型から交差型への変換

はじめに Union 型から交差型へ変換するユーティリティ型を紹介し、その仕組みを解説します。 私はこのユーティリティ型を時々利用しますが、その原理を度々忘れてしまうのでここにメモしておきます。 使い方 以下の例では、UnionToIntersection が Age | Na…

Discriminated Unionを利用したStateパターンの実現

この記事について 先日公開した下記の記事について、記事冒頭で紹介した「クラスベースによる状態遷移の実装」があまりに素朴な実装であり、その後Stateパターンへの言及がほとんどなされなかった上、あたかもクラスを用いた実装そのものに問題があるような…