ちょっとだけ背景説明 なんでそんなことがしたくなったかというと、やっぱり定義を記述したらおしまいでいられる世界が理想なので。そして特定の領域(e.g. OpenAPI, GraphQL, Protcol Buffers, database定義, ...)に属さないような中立的な表現が欲しくなったので。 この記事は一言で言うならpythonのクラスの各フィールドにどうやってメタデータを持たせようか?ということに対するメモです。 どうしてpython? 現状よく触るのがgoとpythonなのですが、goは直和型が素直に記述できないので1。 普及している言語の中ではTypeScriptの方がゆるふわな表現を良い感じに型パズルしやすいとは想うのですが、literal typeやtyped dictやprotocolなどそこそこpythonでも悪くはない形で型チェックが可能になってきたかなーというこ