ssig33.com

DCI の話 - Ruby On Rails Advent Calendar 乱入

乱入します。そういうのあるのか調べてないけどどうせあるでしょ。あんまりまとりないです。 DCI か Concern かみたいな話です。

これの続き。

module に切り出す粒度はどうするかとかこれはこれで難しいとろはあるのですが

という部分について適当に書いておく。

まず DCI というアプローチではモデルが肥大化するという問題は本質的に一切解決していない。結局のところさまざまなコンテキストで責務が呼ばれた結果最終的に生成されるドメインモデルは極めて巨大なものであることに変わりはない。

結局のところ、改善されるのは「コードの見た目」に過ぎない。しかしながら我々プログラマーは「コードの見た目」が如何に重要であるか知っている。コードの見た目はプロダクトの品質のかなりの部分を占める。

DCI というアプローチは単純に Concern するという戦略と何が違うかというと

ということがあると思います。コンテキストごとに各モデルの責務を分離するのですから、各モデルで共通の処理を module に書き出すみたいなことがしづらくなります。

そう、 Concern よりやれること減ってるんです。これはある場合において極めて有効に働きます。チームメンバーのスキルセットが限定されている場合です。

先に書いた通り「module(DCI なら 責務)に切り出す粒度」は難しい問題なので「コンテキストごとの各モデルの責務」という単純な単位でしか切り出せないというルールは教育コストを低下させます。

なので「DCI とか無駄、 Concern でいいでしょ」みたいなのは性善説的な感じで現実的でない場合もあるということです。 DHH のような優秀な人間の言うことを参考にできない事例もあるということです。

これも闇っぽい。

back to index of texts


Site Search