2026年3月21日土曜日

Infrastructure層とは?DBや外部APIを業務ロジックから分離する設計を解説

Infrastructure層は「技術的な詳細」を引き受ける場所

これまでの記事で、 ドメイン層とApplication層の役割を整理してきました。

では、DBや外部API、ファイル操作といった 技術的な処理は、 どこに置くのがよいのでしょうか。

その受け皿となるのが、 Infrastructure層です。

Infrastructure層が担当するもの

Infrastructure層は、 アプリケーションを動かすための 技術的な詳細を担当します。

具体的には、次のようなものです。

  • データベースへのアクセス
  • 外部APIとの通信
  • ファイル入出力
  • メール送信やメッセージング

これらは、 業務ルールそのものではありません

なぜ業務ロジックと分離するのか

DBや外部サービスは、 仕様変更や差し替えが起きやすい部分です。

もし業務ロジックの中に、 直接DB操作やAPI呼び出しを書いてしまうと、 技術変更の影響が 業務ルールにまで波及してしまいます。

Infrastructure層に閉じ込めることで、 業務ロジックは 技術的な変更から守られます。

Repositoryという考え方

Infrastructure層を語るうえで、 よく登場するのが Repositoryという考え方です。

Repositoryは、 「データの保存や取得の方法」を 業務ロジックから隠すための仕組みです。

ドメイン層やApplication層は、 「どう保存されているか」を知らずに、 データを扱えるようになります。

ここでは詳しい実装には踏み込みませんが、 依存の向きを逆転させる ための重要な役割を持っています。

Infrastructure層が太ると何が起きるか

Infrastructure層に 業務判断を書き始めると、 再び設計は崩れ始めます。

  • SQLの中に業務ルールが埋もれる
  • API呼び出しの条件分岐が複雑化する
  • 修正時に影響範囲が読めなくなる

Infrastructure層は、 あくまで技術の詳細を扱う場所です。

まとめ

  • Infrastructure層は技術的な処理を引き受ける層
  • 業務ロジックからDBやAPIを切り離す
  • Repositoryは依存を逆転させるための考え方

※ 参考:MVCの全体像から振り返りたい場合はこちら

▶ MVC学習シリーズ 目次

ドメイン層分離 学習シリーズ イメージ

0 件のコメント:

コメントを投稿