モデルを作ろう!とすると、取捨選択なしにいきなり、出てくるあらゆる要素を全部詰め込んだ、「全部入りの」「完璧な」モデルを作ろうとしてしまう事象
— magnoliak🍧 (@magnolia_k_) 2023年3月4日
とはいっても、何も無いところから突然モデルができあがる訳もなく、ユースケースや、具体的な入出力から、モデルとして残すべきことを蒸留していくんだろうけど、先回りしてロジックを考え過ぎると「あれもいるし、これもいる」ってなっちゃうよね
— magnoliak🍧 (@magnolia_k_) 2023年3月4日
ドメインモデルは、事実を記録する、と言われてれも、「全部事実じゃん?」みたいな受け答えが発生するし、「これが漏れている」と言われると入れないといけなくなっちゃうけど、今それ議論するフェーズでしたっけ?っていう
— magnoliak🍧 (@magnolia_k_) 2023年3月4日
なまじ全面更改!とか言って、長い歴史の中で多層的に積み上がったモデルがあると、その引力を断ち切るのは難しいし、「これはどこ行ったの?」ってなるとね
— magnoliak🍧 (@magnolia_k_) 2023年3月4日
ドメインモデルを作るんやーと言っても、それぞれユースケースや、具体的な入出力の内容と紐づいた具象に強く引っ張られ過ぎると、「目の前にあるものぜんぶ」を詰め込みたくなるけど、そうじゃないよねーって一回戻す作業をする強靭な心を身につけることが設計だったりしませんか。
今はそれは議論しない!取り込まない!なぜならばーと強く言えるように、深く対象のドメインと、ユースケースと、過去の経緯と、周りの価値観と、スケジュールと、予算と……その他人間のこころとからだのぜんぶを理解して設計していくんですか、そうですか、たいへんですね。
追加
それは完璧かもしれないけど、関心を集中させたくない余計な要素がくっついて見通しが悪くなって、本質に集中できなくなっている状態じゃね?っていう
— magnoliak🍧 (@magnolia_k_) 2023年3月5日
今の関心に集中したいんだよ、ノイズは要らないんだよっていう
疎結合か密結合か、ではなく、「その時の関心にフォーカスできる分量になっていることが大事なんじゃないかなー
— magnoliak🍧 (@magnolia_k_) 2023年3月5日
人間、同時に把握できる要素の数なんてたかがしれていて、脳みそのメモリーを過剰に消費すると、本来のことに集中できなくなるんだよ
「その時の関心にフォーカスする」ために、抽象性が導入されていたり、関係の強弱や、依存の方向性がコントロールされていないといけないんだよ
— magnoliak🍧 (@magnolia_k_) 2023年3月5日
「その時の関心」って何だろうっていうと、後からコードの振る舞いを確認するときや、改修の時の影響箇所の特定とか、とにかくコードに触れるユースケースのそれぞれなんだけどさ
— magnoliak🍧 (@magnolia_k_) 2023年3月5日
機能はどうなっていますか?ドキュメントとコードは合っていますか?こんなデータが来たらどうなりますか?こんな使い方をしたらどうなりますか?使っているAPIの挙動が変わったらどうなりますか?
— magnoliak🍧 (@magnolia_k_) 2023年3月5日
日々、いろんな理由で、そのコードに関心を持たなければいけないのですよ
クラス図に、「すべての」クラスを書こうとする過ちをしていたあの頃
— magnoliak🍧 (@magnolia_k_) 2023年3月5日
読めないんだけど
シーケンス図に、アルゴリズムを書こうとする過ちをしていたあの頃
— magnoliak🍧 (@magnolia_k_) 2023年3月5日
書けないんだけど
一つの価値観として、「設計」とは、「コードを書く上で必要な要素を漏らさず、すべて挙げ、定義することである」という世界観はあるのだけど、これが世間で言われている「設計方法論」と相性悪いんだよな
— magnoliak🍧 (@magnolia_k_) 2023年3月5日