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】Boundaries: Drawing Lines(境界線の引き方)

Last updated at Posted at 2025-09-30

はじめに

ソフトウェアアーキテクチャにおける「境界線(Boundary)」とは、
責務や関心ごとを分離するために引かれる線 を指します。

どこに線を引くかによって、システムの保守性・拡張性・テスト容易性が大きく変わります。
境界線は単なる抽象概念ではなく、設計上の「生きたルール」として機能します。


境界線を引く目的

  1. 責務の分離(Separation of Concerns)
    • UIとビジネスロジックを分ける
    • ドメインとインフラを分ける
  2. 独立性の確保(Independence)
    • 境界を超える依存を制御し、システムを柔軟に保つ
  3. 変更影響の局所化(Localizing Change)
    • ある部分の修正が他に波及しないようにする

境界線の典型例

1. レイヤーアーキテクチャ

  • Presentation Layer(UI)
  • Application Layer(ユースケース)
  • Domain Layer(ビジネスルール)
  • Infrastructure Layer(DB・APIなど外部依存)

各レイヤー間に明確な境界を引くことで、責務が明確になります。


2. クリーンアーキテクチャの同心円

  • 境界線は円で描かれる
  • 内側(Domain)は外側を知らない
  • 境界線をまたぐ際は インターフェースデータ構造の変換(DTO, Mapper) を利用

3. モジュール境界

  • core/domain
  • core/data
  • feature/auth
  • feature/profile

モジュールごとに境界を定義し、依存方向を制御する。


境界線を引く際のポイント

  1. ビジネスルールを最優先に守る
    • UIやDBは変わるが、ビジネスロジックは長生きする
  2. 依存方向を一定に保つ
    • 外側 → 内側
    • 下位レイヤーは上位に依存しない
  3. 契約を明示する
    • インターフェース・DTO・イベントなどで境界を越える通信を制御

境界線を曖昧にした場合の問題

  • UIにビジネスロジックが混ざる → テスト困難、変更困難
  • DBの構造変更がドメインロジックに波及 → 脆い設計
  • 境界線なしにモジュールが肥大化 → スパゲッティコード化

まとめ

境界線を引くことは、アーキテクチャ設計において最も重要な作業の一つです。

  • 責務の分離
  • 独立性の確保
  • 変更の局所化

これらを意識して境界を設計することで、ソフトウェアは 長期的に成長し続ける強い構造 を持つことができます。

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?