勘と経験と読経

略すとKKD。ソフトウェア開発やITプロジェクトマネジメントに関するあれこれ。

「データモデリングでドメインを駆動する」を読む Part.2

読むのがホネな技術書やビジネス書を取り上げて2週間の読書期限を課して読んでアウトプットする仮想読書会「デッドライン読書会」の第66回。同僚と読書期限を約束することによって積読が確実に減るという仕組み。過去記事はこちら

さて、今回は前回に引続き「データモデリングでドメインを駆動する──分散/疎結合な基幹系システムに向けて」である。前回、前半の第2部まで読んだが、今回は残りを最後まで読んだ。

「データモデリングドメインを駆動する」はレコード駆動設計(?)の本

前回の記事では本書を以下のように紹介した。

さて、(まだ半分しか読んでいないけど)本書は概ねこのような本である

  • 既存の基幹系システムを概観し、課題を指摘した上でよりよい基幹システム像を提言する(第1部)
  • 基幹システム(SoR)を、活動のシステム(SoA)と経営管理のシステム(SoM)に大きく分離し、データアーキテクチャレベルで検討する(第2部)
  • 横断的な関心事となりそうな重要要素について整理検討する(第3部)※まだ読んでない
  • データモデリングの基礎を再考する(第4部)※まだ読んでない

今回通読し、あらためて本書は(このような表現をされてはいないのだけれども)レコード駆動設計の本という印象を持った。

  • 本書で通底するテーマはビジネスの核心としての「帳簿」である。そういう意味では帳簿駆動設計になるのだが、帳簿という言葉の印象もまた広すぎるので、あえて言うなら「(ビジネス)レコード駆動設計」と考えるのが個人的には良さそうに思えたのだった。
  • 類似のコンセプトは、業務設計に関する素晴らしいエッセイ集である「Web世代が知らないエンタープライズシステム設計」で示される「帳簿組織を意識した設計(帳簿設計)」というコンセプトの詳解版とも言えるだろう。
  • ドメイン駆動設計(DDD)の良さと重要性は認めつつ、その危うさを指摘し、エンタープライズ企業システム設計における要点を、今は薄れつつあるデータ中心設計(DOA)から展開した設計論で拡張している。

かなりハイレベルな内容を扱っているので、ビギナーにはお勧めできない一方で、一度でもエンタープライズ企業システム設計に関わり悩んだ人であれば、非常に大きな学びが得られる本だと思う。
またエンジニアではなくビジネスユーザーの立場で、要件定義やデータ設計に課題感がある人にも(ちょっと難しいけれど)ぜひ目を通して欲しい本である。

上流工程でデータモデリングが軽視されがちな問題

というわけで本書は極めて良い本なのだけれども、一方で上流工程でデータモデリングはあいかわらず軽視されがちである。これを何とか出来ないものか
DXブームとアジャイル開発手法の追い風もあって、現在主流の要求分析の手法はユーザー中心的なアプローチである

  • ユーザー中心的なアプローチとは、ユーザーストーリーやそれに類する要求分析手法のこと
    • もちろんこの手法は誤りではない。機能中心の分析に比べれば極めて適切な進歩ではある
    • しかしエンタープライズ向けの基幹システム設計には向いていない。この点についての理解がまだ業界的には正しく出来ていない印象だ
  • 例えばIPAのユーザー向け要件定義ガイドではデータモデリングの重要性は語られているが、浸透していないのが実情ではないか
  • ドメイン駆動設計によって、ある程度「ドメインについて深く考察する」重要性は再認識されつつあると思う一方で、これは本書で指摘される通り別の課題もあるのだ

ドメイン駆動設計は、ソフトウェア作りという私たちの日々の営為をドメインにおける情報処理の進化と結び付けたいという、エヴァンス氏の希望から生まれたものととらえています。知識のかみ砕き、深いモデルといった表現はそのことをよく表しています。そうした思想は広範な支持を集めました。しかしその一方で、軽量DDDにみられるとおり、ドメインに対峙せずに実装に近い設計を競う換骨奪胎的な動きも広くみられます。また、帳簿の重要性を看過し、過剰に計算判断寄りになる傾向や、過剰にドメイン寄りになって、技術がもたらす可能性を十分に活用しない傾向など、設計における焦点のズレを助長している面があるようにも見受けられます。
データモデリングでドメインを駆動する──分散/疎結合な基幹系システムに向けて、14.5 ドメイン駆動設計に共感しつつ批判する、より

思うに、データモデリングの作業は検討者への負担が重いのだ。少数の検討者で深い考察を行う(そして正解はない)ものであるので、われわれは自然とデータモデリングを避けてしまっているのだろう。しかし本書で語られている通り、データモデリングエンタープライズ向けの基幹システムという領域においては、避けて通れない核心であろう。忌避せず真正面から向き合うために、本書はヒントを与えてくれるような気がしている。