関心ごとの分離の原則(セパレーション・オブ・コンサーンズ)

SoC(Separation of Concerns)原則とは、ソフトウェア開発の原則の一つで、コードの異なる部分は、一箇所ですべてを行おうとするのではなく、異なる問題の解決や異なるタスクの実行に焦点を当てるべきであるというものです。コードの異なる側面を、それぞれ特定の責任を持つ個別のコンポーネントやモジュールに分離することで、あるコンポーネントやモジュールに変更を加えても、他のコンポーネントやモジュールへの影響を最小限に抑えることができるというものです。

コードの中で「Separation of Concerns」の原則に従うには、いくつかの異なる方法があります。

  • Model-View-Controller (MVC) または Model-View-Presenter (MVP) デザインパターンを使用して、データとビジネスロジックを処理するコード(モデル)とユーザーインターフェースを処理するコード(ビュー)および両者間のインタラクションを処理するコード(コントローラーまたはプレゼンター)を分離します。
  • ObserverパターンやMediatorパターンなどのデザインパターンを使用して、コードの異なる部分間の直接通信を最小限に抑えます。
  • Clean architecture や hexagonal architecture など、ビジネスルール、関心事、インターフェースごとにコードベースを分離する層やアーキテクチャパターンを使用し、すべてのコードを変更することなく変更を容易にする。

Separation of Concernsの原則に従うことで、コードをよりモジュール化し、保守しやすくすることができます。コードを異なるコンポーネントやモジュールに分離することで、コードの異なる部分を理解し、テストすることが容易になり、コードのある部分に変更を加えても、その変更に影響を与える可能性が低くなります。