現在地の把握に必要な「戦略的ドメイン駆動設計」とは?
4象限のスタート地点にあたるドメイン駆動設計から話を始めていこう。ドメイン駆動設計は、既存領域が混じり、広範囲に及ぶモダナイズだ。Eric Evans氏が考案したドメイン駆動設計(DDD)には、大きく分けて「戦略的ドメイン駆動設計」と「戦術的ドメイン駆動設計」の2つがある。日本だと戦術的ドメイン駆動設計が有名で、オブジェクト指向言語の設計方法として広まった。しかし本来は、戦略的ドメイン駆動設計の方が重要だ。
戦略的ドメイン駆動設計とは、企業の事業戦略を考慮したモデリングパターンである。暮林氏は「大局観をビジュアライズするもので、ドメイン駆動設計の神髄に近い」と言う。ドメイン駆動設計を解説する『実践ドメイン駆動設計』の著者、Vaughn Vernon氏は次のように語っている。「飛行機からの眺めは本当に素晴らしいが、自分が一体どこにいるのか分からず、どうやって移動したらいいのかすら分からない。DDDを使いこなす人たちは地図上にコースを定め、ナビゲーション装置もチューニングしているようなものだ。その他大勢の人たちには、この安心感がない」
実際のモダナイゼーション案件に照らして考えてみよう。ここでは事業がA、B、Cと裏方Dがあるとする。それぞれの事業の売上規模、成長の度合い、組織における位置づけや相関などから対象となるシステムがビジネス全体のどこにポジショニングしているか把握することで全体像を作ることができる。これがEvans氏の言う「現在地を把握している」だ。地図があれば向かうべきTo Be像が明確になり、どのシステムに変更を加えなくてはならないかが明確になる。
もし地図がなく、現在地不明のままいきなり開発を進めたらどうだろう。請負開発でよく起こりうる状況だが、開発を進めていくうちに周囲の不都合な事情や環境が見えてくるだろう。例えば「基幹システム変更の事業Bへの影響に関するクレーム対応は、事業Aから受注しているからスコープ外」とトラブルになる。後から気づいても後の祭りだ。こうした混乱を避けるために「地図を描いてから始める」ことが必要で、ドメイン駆動設計の「戦略的」の方が大事だと分かる。
なおレッドハットでは「Ansibleトレイルマップ」という手引きを公開していて、こちらはITプロセスのモダナイゼーションの道のりを飛行機ではなく登山の地図に例えている。
戦略的ドメイン駆動設計では、全員が全体像を把握できることが大きなメリットだ。そしてドメインで分けた領域に名前を付けられる。暮林氏は「日本語の“命名”はすごい言葉だと思います。名前を付けることで対象に命を与え、認識できるようになるからです」と言う。モダナイズしたい領域を特定し、すでにシステム化されていたらアプリケーションシンプリファイへ、新しくシステム化すべきならアジャイルアプローチへと、次の方向性が見えてくる。