バリデーションはドメインオブジェクトとAPIスキーマ定義のどっちに書くべきか

株式会社カミナシで VPoE を務めている pospome です。 (´・ω・`) なんか色々やっている過程で "バックエンドサーバのバリデーション定義がドメインオブジェクトとAPIスキーマ定義で重複する問題" に直面しまして、せっかくなので、それに対する自分なりの考えを書いてみようと思います。 バリデーション定義が重複する問題とは? 実装パターン ドメインオブジェクトに全部実装するパターン APIスキーマ定義に全部実装するパターン ドメインオブジェクトとAPIスキーマ定義の両方に定義する どれを選ぶべきか? まとめ 宣伝 バリデーション定義が重複する問題とは? まずは、今回のテーマをサクッと整理しておきましょう。 バックエンドサーバを実装するときのバリデーションは、ドメインオブジェクトに実装するパターンが多いんじゃないかなと思います。例えばGoだと、こんな感じのコードになります。…