記事 / 完了 / 公開#
アーキテクチャ#
三層フラクタルアーキテクチャ#
アーキテクチャを学ぶ際、さまざまな階層アーキテクチャに触れることになります。従来の三層、四層、DDD、六角形、MVC、MVP、MVVM などがあり、新しい階層方法も続々と登場しています。
本当にこれだけの階層方法を継続的に学ぶ必要があるのでしょうか?万能の階層方法を学ぶことはできるのでしょうか?
アーキテクチャ方法論 - 三層フラクタルアーキテクチャは、適用可能な階層方法を生成するための方法論を試みます。
なぜ階層化する必要があるのか?#
階層化の本質は焦点を絞ることです。従来の三層はビジネスロジックに焦点を当て、MVC はインタラクションフロー制御に焦点を当て、ORM はデータマッピングに焦点を当て、DDD はドメインサービスに焦点を当てます。
どのように階層化するか?#
まず、ソフトウェアシステムの中核はビジネスロジックです。ビジネスロジックに焦点を当てることで、最初の階層であるビジネスロジック層ができます。
ビジネスロジックは直接ユーザーに使用されることはできません。ビジネスロジックを適用するには、インタラクション層(または表示層、アクセス層とも呼ばれる)が必要です。
ビジネスロジックを構築するだけでは不十分であり、他のアプリケーションが必要です。そのため、基礎層(またはデータ層とも呼ばれる)が必要です。
他にも階層が必要ですか?
現時点では必要ありません。
ここでの基礎層は、他のシステムのアプリケーションでもあります。つまり、システムのアプリケーションは他のシステムを支え、システムの中核は他のシステムのアプリケーションに依存しています。システム間、システムとユーザー間の関係は支えと依存にすぎないため、これですべてのケースが網羅されています。
三層フラクタルアーキテクチャとは何ですか?#
では、なぜ DDD の階層には 4 つの層があり、ネットワークには 7 つの層があるなど、三層を超える設計があるのでしょうか?
三層以上の設計は実際には三層の基礎の上に、その中の 1 つの層を再び異なる中核に焦点を当てて再分割した三層を持つものです。
たとえば、中核層がエンティティと集約に焦点を当てる場合、アプリケーションドメインエンティティにはアプリケーションサービス層が必要であり、サポートドメインエンティティにはリポジトリ、ドメインイベントバスなどのサポートが必要です。
インタラクション層では、インタラクションフロー制御に焦点を当て、中核層はコントローラー、アプリケーション層はビュー、サポートはモデルです。異なる表示に焦点を当てる場合、中核層はプレゼンター、アプリケーションはビュー、サポートはモデルです。
三層アーキテクチャは特定の中核に焦点を当て、サポートとアプリケーションの関係に基づいて、三層に分割する方法です。
三層フラクタルアーキテクチャは、三層アーキテクチャ方法を適用し、各階層で再び三層アーキテクチャの再帰処理を使用するプロセスです。三層アーキテクチャの繰り返し適用のため、フラクタルのような形状をしているため、三層フラクタルアーキテクチャと呼ばれています。