「現場で役立つシステム設計の原則」の感想
書籍
現場で役立つシステム設計の原則 〜変更を楽で安全にするオブジェクト指向の実践技法
- 作者: 増田亨
- 出版社/メーカー: 技術評論社
- 発売日: 2017/07/05
- メディア: Kindle版
- この商品を含むブログ (4件) を見る
感想
かなりさらっと読めてしまった。プログラムの関心で設計するのではなく、業務の関心で設計していくことがオブジェクト指向の視点から重要という学びだった。マイクロサービスという言葉はあまり出てこないが、オブジェクト指向はマイクロサービスとかなり関連がある概念なのではないか。パッケージや業務ドメインの小さい単位で分類することで、プログラムの変更の影響を小さいものにして、安全で柔軟なソフトウェアを構築する技法がオブジェクト指向設計であるという認識である。
今まではデータは基本的にDTOを用いる設計が多かった、DTOの中に業務ロジックを記述したことはない。(int や String をラップして業務に特化したクラスを設計する、というアプローチもあまり業務では見かけなかったように思える。なぜだろうと思ったが、これは業務ロジックはほぼデータベースに寄せる設計であったからのように思える。)データとロジックと同じクラスにもつことがオブジェクト指向らしいクラス設計とあった。「データとロジックを1つのクラスにまとめる」という記述はこの書籍の中で何回も出現するのでよほど強調したい事項なのだろう。これは少し見直してみたい。概念的な理解をより具体化するためには、モノリシックなコードをリファクタリングすることで学べると感じている。新装版リファクタリングを通じて感じてみたい。
オブジェクト指向設計のよさは最初から完璧なクラス設計を実現するのではなく、重要度の高い業務から少しずつ改良していくことができることと感じた。サービスを利用する側になるべくロジックを寄せない。使われる側のクラスで完結させることでロジックの凝縮度が上がることは嬉しい。
(途中までw) アプリケーション間の連携方式 GETとPOSTだけを利用するとシステム間が疎結合になって嬉しいよね、API提供はなるべく小さい単位で提供したほうが変更に強い。APIを使ってどうロジックを組み立てるかはAPIを使う側の責務。 本書はあくまで概念の話なので、身につけるには実際に手を動かしてオブジェクト指向設計でプログラミングしないといけないという話。一般的に概念だけでは理解が難しいことが多いので、具体例や具体的に手を動かして感じる/考えることは重要。 ちょっと過激なコーディング規則メモ
小さくまとめてわかりやすくする
場合分けのロジックを整理する
業務ロジックをわかりやすく整理する
ドメインモデルの考えで設計する
アプリケーションの機能を組み立てる
データベースの設計とドメインオブジェクト
画面とドメインオブジェクトの設計を連動させる
アプリケーション間の連携
方法
説明
ファイル転送
データベース共有
Web API
メッセージング
メッセージ基盤*1を使って非同期にデータ(メッセージ)を送る
オブジェクト指向の開発のプロセス
オブジェクト指向設計の学び方と教え方