SoRの性質が強いBtoBアプリケーションでは、「堅く」作ることを求められる箇所がしばしばあります。 Scalaの型安全性が頼もしく感じられるのは、まさにこのような箇所においてです。 「堅く」作るために、私たちがいま注目しているのが refined と newtype というライブラリです。 この記事では、refinedとnewtypeを使ってScalaの型安全性をさらに引き出すテクニックを紹介します。 Value Class / Tagged Type refined + newtypeの話題に入る前に、これまでにどのようなテクニックが使われてきたかを簡単に振り返りましょう。 ここに、SNSのユーザーアカウントを表現するクラスがあります。 case class User(id: String, email: String, age: Int) val user1 = User("@tod
![さらなる型安全性を求めて ~ Refinement TypeをScalaで実現する ~](https://cdn-ak-scissors.b.st-hatena.com/image/square/1a957aae372e59b5eb46b63a94eb3e6ae275b6b5/height=288;version=1;width=512/https%3A%2F%2Fengineering.visional.inc%2Fblog%2F168%2Fscala-refined-newtype%2F168_ogp_hu5b91ba2e6dfe70e419826b3a677f5d80_1281944_1200x630_fill_q90_lanczos_center.jpg)