0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【Clean Architecture】 Screaming Architecture(アーキテクチャが叫ぶ:構造は意図を示すべき)

Posted at

はじめに

ソフトウェアアーキテクチャは単なる「コードの配置ルール」ではありません。
Robert C. Martin(Uncle Bob)は「良いアーキテクチャは意図を叫ぶ(Screaming)」と述べています。

つまり、プロジェクトのディレクトリ構造や依存関係を見ただけで、
「このシステムは何をするものなのか」 が明確に分かるべきだ、という考え方です。


1. 悪い例:フレームワークが叫ぶ

典型的なWebアプリのプロジェクトを見てみましょう。

src/
 ├── controllers/
 ├── models/
 ├── views/
 ├── services/
 └── repositories/

一見きれいに見えますが、これでは フレームワークの用語(MVC) が前面に出てしまい、
「このシステムが何をするのか」が伝わりません。

これでは「フレームワークが叫んでいる」状態です。


2. 良い例:ドメインが叫ぶ

では、アーキテクチャが「ビジネスの意図」を叫ぶように構造を変えるとどうなるでしょうか。

src/
 ├── orders/
 │    ├── domain/
 │    ├── usecase/
 │    └── infra/
 ├── payments/
 │    ├── domain/
 │    ├── usecase/
 │    └── infra/
 ├── inventory/
 │    ├── domain/
 │    ├── usecase/
 │    └── infra/
 └── shared/

これを見るだけで、

  • このシステムは「注文」「支払い」「在庫」を扱う
  • ビジネスロジックが中心にある

ことが明確に伝わります。

これが「アーキテクチャが叫んでいる」状態です。


3. Screaming Architecture の狙い

  • ビジネスを第一に表現
    • 技術用語ではなく、ドメイン用語が構造に現れる
  • 意図が伝わる構造
    • 新しい開発者が見ても「このシステムは何をするか」がわかる
  • フレームワークに依存しない
    • 技術スタックが変わってもアーキテクチャの骨格は変わらない

4. Clean Architectureとの関係

Clean Architectureでは「ビジネスルールを内側に、技術詳細を外側に置く」ことを強調しています。
Screaming Architectureはその延長であり、外から見てもビジネスが中心に見える構造 を目指す思想です。


まとめ

  • 悪い構造 → コードが「フレームワーク用語」を叫んでいる
  • 良い構造 → コードが「ビジネスの意図」を叫んでいる

良いアーキテクチャとは、「このシステムは何を解決するのか?」を構造そのものが語る ものです。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?