レイヤードアーキテクチャ

アプリケーションを役割ごとの層に分け、画面、業務処理、データアクセスなどの責務を整理する設計方法。

作成日: 2026-07-14 / 更新日: 2026-07-14

キーワード: presentation layer / application layer / domain layer / infrastructure layer / controller / service / repository / DAO / DTO / 責務分離

概要

レイヤードアーキテクチャは、アプリケーションを役割ごとの層に分けて整理する設計方法です。

典型的には、画面やAPIを受ける層、業務処理を行う層、データベースへアクセスする層に分けます。

内容

よくある分け方は次の通りです。

Javaの業務システムでは、Controller、Service、DAO、DTO のような名前で分かれていることが多いです。

業務システムでの意味

レイヤードアーキテクチャは、業務システムでかなりよく見る考え方です。

たとえば、注文登録や決済処理のような機能では、次のように分けて考えられます。

この分け方により、画面の処理、業務判断、DB操作が一箇所に混ざりにくくなります。

利点

注意点

層を分けても、実際には Service にすべての処理が集まりすぎることがあります。

また、Controller から DAO を直接呼ぶ、DAO に業務判断を書く、DTO が肥大化する、といった崩れ方も起きます。

形だけ層を作るのではなく、どの層が何を責任として持つのかを考える必要があります。

クリーンアーキテクチャとの違い

レイヤードアーキテクチャは、比較的実装上の分け方として使われます。

一方、クリーンアーキテクチャは、依存の向きやビジネスルールの独立性をより強く意識します。

ただし、両者は対立するものではありません。 レイヤードアーキテクチャを整理していくと、クリーンアーキテクチャの考え方に近づく部分もあります。

見るときの観点

関連する概念

参考文献

更新履歴

  • 初版作成

関連項目

このページを参照しているページ