この記事はFOLIO Advent Calendar 2018の6日目です。 FOLIOでも使っている「仕様」パターンをScalaで実装する方法について紹介します。 「仕様」パターンとは Eric Evans氏とMartin Fowler氏による仕様パターンに関する論文があります。 https://martinfowler.com/apsupp/spec.pdf ※PDFです また、DDD本では次のように紹介されています。 特殊な目的を持った述語的な値オブジェクトを明示的に作成すること。仕様とは、あるオブジェクトが何らかの基準を満たしているかどうかを判定する述語である。 (中略) オブジェクトを検証して、何らかの要求を満たしているか、何らかの目的のための用意ができているかを調べる。 コレクションからオブジェクトを選択する(期限が超過した請求書を問い合わせる場合など)。 何かの要求に適合する