たれぱんのびぼーろく

わたしの備忘録、生物学とプログラミングが多いかも

関心の分離 −利点とそれを促すアーキテクチャ−

関心の分離 / separation of concerns、SoC

  • 依存関係逆転の原則 / Dependency Inversion Principle
  • 依存ルール

密結合とは
関心が分離しても密結合みたいなケースはありうるか

上位と下位が頭を固くしてる気がする。ブラックボックスでいいんじゃない?
interfaceが重要、は大原則。
アーキテクチャ: 線引きのベストプラクティスを教えてくれる.

ヘキサゴナルアーキテクチャ

関心の分離はほって置くと失われるもの.

自動化された回帰テスト?

前提:
“内部ビジネスロジック
”外部エンティティーとのやりとり”
は別の関心

クリーンアーキテクチャ

Robert C. Martin (Uncle Bob). 2012. The Clean Architecture. link
低レベルな具象的部分が、高レベルの抽象的な方針に対し、依存する、という依存ルール/The Dependency Ruleを明確に示した。

概要

ヘキサゴナルアーキテクチャ・オニオンアーキテクチャ等はいずれも関心の分離を達成するためのアーキテクチャである。
これらアーキテクチャの方針を統合し、実現可能なアイデアとしたもの1クリーンアーキテクチャ.
肝は依存ルール.
それを実現する技術として依存性逆転の原則を紹介。

重要部分

抽象度による4段階の切り分けは本質ではない、と明記されている。

Only Four Circles?
No, the circles are schematic.
You may find that you need more than just these four.
There’s no rule that says you must always have just these four.

本質は、依存ルール、すなわち依存性の方向。
常に、低レベルで具体的な詳細部が、高レベルの抽象的な方針に対し、依存する。

The overriding rule that makes this architecture work is The Dependency Rule. This rule says that source code dependencies can only point inwards.
...
However, The Dependency Rule always applies.
Source code dependencies always point inwards.

ドメインモデルを独立せよ

ただ、本質的には ドメインモデルがどこにも依存しない形で書ければあとは誤差
DDDに関する質問にバシバシお答えしました [ドメイン駆動設計] - Qiita


  1. The diagram at the top of this article is an attempt at integrating all these architectures into a single actionable idea.