radioc@?

レディオキャットハテナ

【読書メモ】現場で役立つシステム設計の原則

毎朝15分の読書会で本書を読んだ。現場で役立つということでチームで共有するテーマとしても良い本だと思う。

コードをわかりやすくまとめるテクニック

  • 小さくまとめてわかりやすくする
  • 場合分けのロジックを整理する
  • 業務ロジックをわかりやすく整理する

前半はコードをシンプルにわかりやすくする手法について。リーダブルコードのような形でわかりやすく良いコードに変えているテクニックの解説が中心。

リーダブルコード ―より良いコードを書くためのシンプルで実践的なテクニック (Theory in practice)

リーダブルコード ―より良いコードを書くためのシンプルで実践的なテクニック (Theory in practice)

ドメインオブジェクトの考え方

ドメインオブジェクトの考え方に基づいて設計し、コードをまとめていくための考え方について解説されている。本書の中でも最も重要でページを割いている部分。

コードをドメインオブジェクトにまとめる考え方

  • 判断/加工/計算のロジックをまとめる
  • 業務の関心事とコードを対応させる

三層+ドメインモデルの組み立て

  • アプリケーション機能を組み立てる
  • データベースの設計とドメインオブジェクト
  • 画面とドメインオブジェクトの設計を連動させる

ドメインモデルの考え方を元に三層+ドメインモデルを組み立てていく考え方が解説されている。基本的にはプレゼンテーション層とデータソース層から判断/加工/計算のロジックを切り出してドメインオブジェクトにまとめていく。業務の関心事に合わせてプレゼンテーション層の画面を整理して設計する。

  • アプリケーション間の連携

近年当たり前となっているアプリケーション同士の連携での設計について、WebAPIを中心に解説されている。シンプルで簡単に利用できるAPIとして提供することから始める。WebAPIを利用する場合、以下についてWebAPIとドメインオブジェクトとの間に不一致が起こり変換が必要になる。

  • データ構造
  • 業務の関心事

オブジェクト指向開発プロセス

  • DDDにより従来のV字モデルの開発から短期間で開発と修正を繰り返す手法が可能になった
  • 無駄なドキュメントを減らしてソースコードやテストコード中心に成果物をまとめる

オブジェクト指向の学び方と教え方

新装版 リファクタリング―既存のコードを安全に改善する― (OBJECT TECHNOLOGY SERIES)

新装版 リファクタリング―既存のコードを安全に改善する― (OBJECT TECHNOLOGY SERIES)

ThoughtWorksアンソロジー ―アジャイルとオブジェクト指向によるソフトウェアイノベーション

ThoughtWorksアンソロジー ―アジャイルとオブジェクト指向によるソフトウェアイノベーション

実装パターン

実装パターン

オブジェクト指向入門 第2版 原則・コンセプト (IT Architect’Archive クラシックモダン・コンピューティング)

オブジェクト指向入門 第2版 原則・コンセプト (IT Architect’Archive クラシックモダン・コンピューティング)

オブジェクト指向入門 第2版 方法論・実践 (IT Architects' Archiveクラシックモダン・コンピューティング)

オブジェクト指向入門 第2版 方法論・実践 (IT Architects' Archiveクラシックモダン・コンピューティング)

エリック・エヴァンスのドメイン駆動設計

エリック・エヴァンスのドメイン駆動設計

まとめ

基本的にDDDを現場のシステム設計に取り入れることに主眼が置かれており、それが現在の開発の現場に最も適したアプローチだと理解した。WebAPIのような近年の技術についてもしっかり言及されておりイメージしやすく配慮されている。ただし、ここで解説されているのはあくまでシステム設計の原則であり、具体的には各々の現場に合わせて適したドメインオブジェクトの設計を模索する必要はある。そのためには本書で取り上げられている名著もカバーすることでさらに理解を深めてより良い設計を目指すことができるだろう。