たなかこういちの開発ノート

システム開発に携わる筆者が、あれこれアウトプットするブログ

DDDと目的-目標-手段に関するポエム^H^H^Hエッセイ

DDDは、カオスの辺縁を追求するような作業であって、「明らかに誤り」というのはわかっても、「十分に成功した」かどうかは常にわかりにくいのだと思う。
 
DDDの実践は実際には古くて、自分の観測範囲としては、2000年ごろには、オブジェクト指向の行き着く先として、多くの上級プログラマーによって、部分部分は実践されていたと思う。ただ、多くの場合、暗黙的実践だったと思う。上級者による設計と初心者による設計は明らかに質感が異なっていた。ただ、よい質感とはなんなのかを明文化しようという動きはなかったかもしれない。それでも、上級者同士では目指すべき境地に対する共通理解はあった。
 
オブジェクト指向をイデア論に関連付けるのはあまりにも拡大解釈しすぎなのかもしれないが、少なくとも例えば関数型をいくら拡大解釈してもイデア論に至ることは無いだろう。関数型の背景はやはり数学たる圏論であり、モノ自体よりも、モノに対する操作や、その操作可能性から来るモノ同士の関係性が主眼となろう。OOは、モノの在り方としてのイデア論的なところへの拡大解釈が、少なくとも、可能である。
 
開発現場においては、オブジェクト指向の実践を突き詰めていった先の境地としてDDDは認識された。一旦DDDが認識された後には、なにもOO的な枠に収まっている必要は無いとされたが、DDDの源流が“拡大解釈したオブジェクト指向”にあるという理解は誤りでは無いと思う。“拡大解釈したオブジェクト指向”とはイデア論的なものであり、つまるところ、DDDの実践も突き詰めると存在に関する認識論に繋がっていると思っている。
 
※OOとイデア論の類似性を指摘する論は、概ね'00年代初頭に同時多発的に出現したと自分は観測している。時期としてはDDDの実践の始まりと重なる。
 
DDDの実践は、ステークホルダーが多い場面で特に必要とされると考えている。関係者が少なければ、対象のエッセンスを抽出する作業に殊更注力しなくともコト足りるだろう。関係者が多ければ多いほど、共通の認識を持てているのか、相互に本当に同じモノを見ているのか、よくよく会話すべきだろう。DDDが存在に関する認識の表現ならば、多数の関係者が関わり、各立場からの様々な見立てが交錯する場面でこそ、DDDが役に立つと云えるであろう。
 
ところで、「ビジネスにおけるシステム利用」というお題において、ビジネスは「目的」であると云える。システム自体はもちろん「手段」ということである。目的を単にブレークダウン、細分化しても、手段には結びつかない。逆に手段の階層をいくら積み上げていってもそのままでは何時までも手段のままである。目的と手段を結びつけるには、両者間のいわば“相転移”をうまく誘う必要がある。その相転移する境目を「目標」と称することにしている。目標は、目的を構成する部品となる。部品たる目標は目的から基本的には中立である。目標は、手段にとってはゴール、外部仕様となる。このような目標を介在させることで、手段が達成すべきゴールと目的の構成部品とを接続することができる。
 
目標を介在させることで、目的がどの手段に依存しているかトレーサブルになる点にも着目したい。目的と手段の界面となっている目標を管理することで、目的がどれほど充足されているか、という課題と、手段がどれ程実現されているか、という課題を、同時に透過的に捕捉することができる。
 
「目標」を、あるいはまた"what"と表現してみよう。であるなら「手段」はもちろん"how"である。「目的」は、"why"ということにしよう。ここで、“手段と目的”の「目的」を"what"に対応させないことがポイントだ。目的はそのままでは遂行できない。"what"たる目標は、なぜ何のために(why)、どうやって(how)やるのか、という問題構造に、何を(what)すれば良いのか、という足場を導入する。
 
存在に関する認識の表現としてのDDDは、こういった「目標」を描くときの枠組みとして用いることができる。DDDにおけるサブドメインやコンテキスト、ユビキタス言語等の諸概念は、問題構造を描くときの足場を如何に組もうかというときに、その足場組み立ての道具となる。
 
あるいは、「目的に内在する問題構造を表すところの管理可能な「目標」を描くこと」を*目的*だとするとき、そういう目的に対する一つの目標セットがDDDなのである。(ここには、DDDの自己言及的構造が見て取れる。)
 
目的と手段が邂逅するポイントとしての目標は、、目的と手段の間のどこかに在ることは確かなのだが、実際にはどのあたりに位置するのか、この見極めは本質的に難易度が高い。冒頭のとおり、その見極め作業は、カオスの辺縁を求めるような作業で、明らかに外していることは分かっても、エッセンスを十分に捉えているかは、いつまで経っても確信的になれないのだ。
 
 
<追記1>
目的に比べて、目標は、(それに縛られるものではないものの、)おそらく「特定の手段」を暗に想定している。目的は純粋に問題空間かもしれないが、目標は特定の解決空間を想定しつつの問題の描写なのかと思う。あるいは、特定の解決空間を想定しなければ問題を"what"として記述出来ないように思う。
 
<追記2>
本記事の文脈における「カオスの辺縁」という比喩は、あるいは「抽象と具象の狭間」と表現することもできる。抽象的なビジョンや価値感たる目的と、目の前の作業に関連付くところの手段、その間に漂う問題構造のエッセンスを一つの世界観として定着させたところの目標。
 
◆以上