« 「オブジェクト指向」や「アジャイル」では食えない | トップページ | データモデリングの達人技を盗め、温泉で »

2017.09.01

「DDD批判」への批判

 畏友である杉本氏の「現場で役立つシステム設計の原則」批判 (1) ~何のために、「データとロジックを一体に」するのか?~が話題になっている。取り上げられている増田氏の著書を読んで、私もこのやり方で本格的な業務システムを開発するのは現実的でないと思ったクチである。ところがその本に関して聞こえてくるのはなにやら絶賛ばかりなので、物珍しさもあって杉本氏の批判を興味深く読んだのだが、賛同しつつも何というか中途半端な感じがした。

 たとえば、ディスカウントのロジックを「数量クラス」でも「金額クラス」でもなく「受注クラス」に置くべきという指摘は適切である(じっさい私も本を読んでそう思った)。しかし残念なことに、それらの指摘が「より良いオブジェクト指向プログラミングの指針」になってしまっている。

 それの何が問題なのか。私に言わせれば、そもそも業務システムをオブジェクト指向プログラミングして手に入れようとするやり方が無理スジなのである。なぜならJavaやRubyのような汎用プログラミング言語を使うと、システム要件を実装に落とす際の自由度が大きすぎるからだ。ロジックをどのデータに添わせるかといった基本的な解釈さえ「百家争鳴」になるだろう。関節のないタコのような軟体動物にラジオ体操をさせて正確性を論評しあうようなものだ。

 ではどうすべきなのか。業務システムはドメイン(ソフトウエア分野)固有な「構造(関節といってもいい)」を持っている。それを洞察して、その構造そのものをオブジェクト指向プログラミングすればよい。この独特なソフトウエアを使えば、構造にしたがって分節される定義要素を調製する作業が「業務システム開発」となる(その作業を遂行するためにオブジェクト指向の知識は要らない。各要素はDSLで定義されるからだ)。そのようなソフトウエア(ドメイン特化プラットフォーム,DSP)を実現したいという野望に、オブジェクト指向言語はしっかり応えてくれる。ちなみに杉本氏は、管理会計のドメイン向けのDSPであるfusion_placeの開発者である。

 だから、私にとって批判すべき対象は、「どんなドメインにおいても、丁寧にオブジェクト指向プログラミングすることで、保守性の良いソフトウエアが効率よく生み出せる」といった思い込みである。言い換えれば、オブジェクト指向を「ソフトウエア技術者が現実を理解するための汎用的な枠組み」であるかのようにたてまつること(オブジェクト原理主義)の危険性である。この考え方が業務システム開発の合理化をどれだけ阻んできたかわからない。

 上掲記事の中では、「カプセル化」の本来の目的を整理したり、個々のケースでのより良いコーディングパターンが模索されたりしている。しかしそのような誠実な姿勢も、けっきょくはオブジェクト指向言語で個々の開発案件を扱うという無理スジを是認するものではないのか。せいぜい「無理スジをより効果的に通す」ことにしかつながらないのではないか。また、記事を読んだ技術者が「ああ、なんと深く豊かな世界だろう。自分のオブジェクト指向開発がうまくいかないのは、自分の知識が足りなかったからなのだ」と考えて、オブジェクト指向やDDDに対する学習行脚(あんぎゃ)をまたぞろ繰り返すだけではないか。それが杉本氏の批判に対する私の懸念である。

|

« 「オブジェクト指向」や「アジャイル」では食えない | トップページ | データモデリングの達人技を盗め、温泉で »

コメント

コメントを書く



(ウェブ上には掲載しません)




トラックバック


この記事へのトラックバック一覧です: 「DDD批判」への批判:

« 「オブジェクト指向」や「アジャイル」では食えない | トップページ | データモデリングの達人技を盗め、温泉で »