Value Object(値オブジェクト)についての覚え書き
   3 min read

2022年5月中旬から下旬にかけて Value Object(値オブジェクト) についての議論がさかんに行われていました。

そのときに書き起こされた文章へのリンクを、(分かる範囲で)時系列順に残しておきます。

途中にも出てきていますが、元々の発端は 2022-04-26 発刊の 書籍「良いコード/悪いコードで学ぶ設計入門―保守しやすい 成長し続けるコードの書き方」 らしいです…​?ので、その期間の Twitter 検索結果も:

自分がこの話題を知ったのは、本題から逸れて自分の思いを各々語り始めた Twitter タイムラインからでした。
ですので、改めて上記リンク先を読んで、元々提起されていた問題を理解していなかったことに気づきました…​

で、読んだ感想なのですが、起源の kumagi さんの説明で、私は何の違和感も持ちませんでした。
強いて言うと、 "Value Objectとは何でないか?" で説明されているような誤用をしている人って本当に居るの?(居たとしても極少数派なのでは)という点です。
オブジェクト指向エクササイズ の ルール3を例示されていますが、プロダクションコードももこれに沿って実装せよ、と主張している人や文章を私は見たことがないです。 結構長い間 Java で開発してきていますが(かとじゅんさんも別にそこに反論しているわけではないですよね)。
件の書籍がそのように主張している、ということなんでしょうか。であればそう明記してもらった方が議論がブレなかったのではないかなと感じました。

他方、かとじゅんさんの言いたいことも理解は出来ます。
ただ、かとじゅんさんは DDD の文脈で話されていて、 design(設計) 上、値オブジェクトとして見出されたものなら自ずとそうなりそう、でもそれは Value Object の必要条件では無いよね、という感想です。
(自ドメイン設計時に Ruby の Hash を見出して定義したりしないと思うので、説明の仕方の問題もあるのかなと思いました。)