【れいやーどあーきてくちゃ】
レイヤードアーキテクチャ とは?
💡 ミルフィーユのように重ねて整理する、ソフトウェアの定番設計
📌 このページのポイント
- プレゼンテーション層・ビジネスロジック層・データアクセス層などに分ける
- 各層は直下の層だけに依存し、層をまたいだ呼び出しは避ける
- 層ごとに独立して変更・テストできるため保守性が高い
- シンプルで理解しやすいが、層が増えすぎるとパフォーマンスが落ちることもある
レイヤードアーキテクチャって何なの?
ソフトウェアを「層」に分けて設計する方法だよ。たとえばケーキのスポンジ・クリーム・フルーツみたいに、それぞれ役割が違う層を積み重ねるイメージだね。
具体的にはどんな層があるの?
よくある3層構成だと、一番上が「プレゼンテーション層」で画面表示を担当、真ん中が「ビジネスロジック層」で計算や判定を担当、一番下が「データアクセス層」でデータベースとのやり取りを担当するよ。
層に分けると何がうれしいの?
変更の影響範囲が小さくなるんだ。たとえば画面のデザインを変えたいときはプレゼンテーション層だけ直せばいい。ビジネスロジックやデータベースに触る必要がないから、安全に変更できるよ。
層と層のルールってあるの?
大事なルールが一つ。上の層は下の層を使えるけど、下の層は上の層を知らない。プレゼンテーション層がビジネスロジック層を呼ぶのはOKだけど、逆はNGなんだ。この一方通行の依存がコードの整理に効くよ。
デメリットはないの?
あるよ。層を通過するたびにデータの変換が入るから、層が多すぎるとパフォーマンスが落ちたり、コードの量が増えたりする。「ただ下の層に渡すだけ」の中間層ができちゃう問題は、よく議論されるポイントだね。
クリーンアーキテクチャとは違うの?
クリーンアーキテクチャはレイヤードアーキテクチャを進化させたものと言えるね。レイヤードは上から下への一方通行だけど、クリーンアーキテクチャは依存の方向を内側(ビジネスルール)に向ける。「依存性逆転の原則」を活用して、より変更に強い構造にしているんだよ。
どういうプロジェクトに向いているの?
まとめ:ざっくりこれだけ覚えればOK!
「レイヤードアーキテクチャ」って出てきたら「ソフトウェアを役割ごとの層に分けて積み重ねる設計」と思えればだいたいOK!
📖 おまけ:英語の意味
「Layered Architecture」 = 層状の設計構造
💬 建築の「層(Layer)」から来ていて、各階が別の役割を持つビルのイメージだよ