本書ではジャクソン法を授業形式で平易に解説している。ジャクソン法の誕生は古いが、その本質的な設計法は現在でも十分に通用する。
ジャクソン法は、システム全体を設計するJSDと、JSDの一部として機能を入出力データと構造で分析するJSPから構成される。
JSDでは
(1)要求は変わりやすいからより安定した現実世界を先に記述する。
(2)現実世界では「共有事象」の抽出を行う。
(3)共有事象の抽出とその順序関係から実体を導出する。
という手順を踏む。この手順を踏む限り、属人性のない、ぶれない安定した設計が可能であるところが重要な点である。
現在のクラウドを前提した開発では、要求がはっきりしないことも、将来変化することも想定される。だからこそ、NoSQLの機能には動的スキーマ定義の機能が存在し、できるだけスキーマ定義の変更をフレッキシブルにできるようにしている。したがって、従来のように情報構造が固定されていた時代のデータ中心アプローチとは別に、動的モデル、JSDでいうところの共有事象の時間順序に注目する価値は再認識されていいだろう。
共有事象とは、独立して動作するインスタンスが相互作用するための出来事である。たとえば、図書館での本の貸し出しは、利用者と書籍という独立したライフタイムを持つインスタンスが貸し出しという点でランデブーすることを意味する。そのような出来事には、時間順序があり、貸し出し後には返却があり、貸し出すためには書籍の購入があるといったことから、現実世界をモデル化していく。こうしたモデルはそのモデルを利用した、機能の要求とは無関係に存在する、ドメインモデリングの一種である。最近は、エバンス氏のDomain Driven Design(DDD)も流行っているようだが、より本質的な説明を明快に記述するJSDに立ち戻ることはより価値あることだろう。
さらに、クラウドとの関係で説明をすれば、この共有事象は現実世界の並列処理の同期点でもあるので、その同期点でどういった情報(あるいはサービス)がどう関連づけられ、価値を生成するかを考慮すれば、Big Dataにおける情報の持つ価値の創出のための分析手法にもなりうるし、また、よりインフラよりの並列分散処理のアーキテクチャースタイルを採用した場合の同期点の分析手法にもなりうる。たとえば、MapReduceジョブの設計分析や、関数型とオブジェクト指向パラダイムの接続点の分析への応用などが考えられる。
本書では問題を平易な例で説明している箇所が多い。このあたりは、筆者の長年の経験によるところが大きい。もっとも、若干古い例が見られるのところは、若いソフトウェア開発者のために改善すべきかもしれない。