type alias vs opaque type
elmでは、
{ name : String , age : Int }
このような構造のデータの型を宣言する方法として、
type aliasとOpaque typeが存在する
design guidelinesには
https://package.elm-lang.org/help/design-guidelines#keep-tags-and-record-constructors-secret