【オニオンアーキテクチャ】
オニオンアーキテクチャ とは?
💡 タマネギのように層を重ね、中心のビジネスルールを外の都合から守る設計
📌 このページのポイント
- 中心(ドメインモデル)は何にも依存せず、最も重要なビジネスロジックを担う
- 依存の方向は必ず外側から内側へ(内側が外側を知らない)
- データベースやUIなどの技術的詳細は外側の層に閉じ込める
- クリーンアーキテクチャや六角形アーキテクチャと同じ思想を持つ
オニオンアーキテクチャって、タマネギと何か関係あるの?
構造がタマネギの断面みたいに見えるんだよ。一番内側にドメインモデル、その外側にドメインサービス、さらに外側にアプリケーションサービス、一番外側にUIやDBが来るんだ
それって普通の層構造と何が違うの?
DBがドメインに依存するって、逆じゃないの?
なるほど、ビジネスロジックが一番偉いんだね!
まさにそう!この設計の一番のメリットは、PostgreSQLをMySQLに替えてもドメインに影響しないこと。テストも外側のインフラなしで内側のロジックだけ単体テストできるんだよ
クリーンアーキテクチャとはどう違うの?
ほぼ同じ思想だよ。クリーンアーキテクチャはロバート・マーチンが、オニオンはジェフリー・パレルモが提唱したけど、「依存は内側へ」「ドメインを中心に置く」という核心は共通なんだ
まとめ:ざっくりこれだけ覚えればOK!
「オニオンアーキテクチャ」って出てきたら「ドメインを中心に外側から依存する同心円構造」と思えればだいたいOK!
📖 おまけ:英語の意味
「Onion Architecture」 = 玉ねぎアーキテクチャ
💬 Jeffrey Palermoが2008年に提唱したよ。層を重ねた構造がタマネギに見えることからこの名前がついたんだよ