Magnolia Tech

いつもコードのことばかり考えている人のために。

『データモデリングでドメインを駆動する ――分散/疎結合な基幹系システムに向けて』”基幹システム”とは何か、どう作るのか、ということへの道標を示してくれる1冊

著者の杉本啓様より献本いただきました。


「基幹システム」……よく考えると最近だんだんと聞く機会の減ってきたキーワードです。たまにメインフレーム上で動くCOBOLで組まれた基幹システムが負債になっている、といった比較的後ろ向きな話題の文脈で出てきて、あまり「攻めた」話題の文脈では出てこないイメージがあります。

本書は、この「そもそも基幹システムとは何か?」、その基幹システムの中心にある「帳簿」とはどんな役割を果たすのか?それらを支える「データモデル」はどのようなもので、どのような設計になるのか?といったことが、長年経営管理システムを作ってきた経験に裏打ちされた知識をもとに分かりやすく解説されます。

この手の、業務システムの設計の考え方、「要件に沿って設計する」以上の解説がなかなか出回らず、それぞの現場で「秘伝のタレ化」した固有のノウハウに基づいて開発が行われることがほとんどなので、本当にこの本は貴重なノウハウが詰まっています。


さて、一度「基幹システム」をキーワードに戻ります。「基幹システム」というキーワードで検索すると、NTTコミュニケーションズのサイトがトップに出てきて、ここにはこんな解説が書かれていました。

【徹底解説】どこよりも詳しい基幹システムのすべて | NTTコミュニケーションズ

基幹システムとは、「販売管理」「在庫管理」「会計」など企業がビジネスを遂行するために必須である業務を効率化ためのシステムです。「基幹」という言葉が分かりづらくしていますが、受発注管理や販売管理、生産管理、在庫管理、会計業務を行うためのシステムと理解して良いでしょう。

おそらく何を以てその組織の「基幹」なのかは、定義がバラけてしまうと思うのですが、その企業の主たる関心ごとを管理するシステム、と言えます。

特定企業のシステムの完全オーダーメードシステムか、特定のパッケージに長く関わることはあっても、「基幹システム」と呼ばれるものをいくつも満遍なく経験するというのはなかなか無いのではないでしょうか。


ちなみに最初に「そーそれそれ」と思ったのは、第3章「基幹系システム設計のアプローチ」に書かれているデータモデルに関する考察。

伝統的な?設計アプローチとして、よく行われている以下の二つのアプローチ(数限りなく見てきた)

  • 帳票/画面といった「ユーザーインタフェース(UI )」の設計を起点とするデザイン
  • データベース設計(DB)の設計を起点とするデザイン

この二つに対して、「データモデル」を使って帳簿をデザインすべきではないか、というのが本書の主張。ここが本書の肝であり、本書を通じて一貫して語られている部分です。

昔、DDD本を初めて読んだ時に感じた「んーなんか言いたいことは分かるけど、具体的に設計に落とすところが見てみたいんだよなー、なんか一番肝心なところがぼやかされている気がするなー」という疑問に対する答えがここにありました。

ちなみに、著者杉本さんの「ドメイン駆動設計に対する考え方、スタンスは、ちゃんと後半に「データモデルとドメインモデル」という章をまるまる割いて書かれていますので、そちらも必読です。


という訳で、特定企業の経営管理システム、アプリケーションや、特定パッケージだけに慣れている方にとって、その視点を変えたい、拡張したい、といった危機感が有る人にはめちゃめちゃオススメの1冊です。というか、なんとかこれ30年前くらい前にタイムスリップして出版されないですかね、ダメですかね。過去に遡って読ませたい人がたくさん居るんですけど!!

一方で、この本の価値が分かる、というか、この本を一読して、「これは自分に絶対に必要な本だ!」と最初から気づく人は決して多くは無いのではないか?というところも感じました。「今、ちゃんとやっているよ?」という正常性バイアスの中から一歩踏み出して、より良い設計のために、どんな視点を獲得すべきか?そういう気付きのためにも色々な人に読んでほしいと思います。