Nao000のぶろぐ

蝶を追っている少年になりたい

「ビジネスロジック」とか「ドメインサービス」とか「ドメインロジック」とか「アプリケーションサービス」とか混乱するからフィーリングで一旦整理する

はじめに

ドメイン駆動設計やクリーンアーキテクチャに出てくる単語たちの個人的なフィーリングで整理します。

「ビジネスロジック」とか「ドメインサービス」とか「ドメインロジック」

自分の中で「ビジネスロジック」≒「ドメインサービス」≒「ドメインロジック」な関係です。システム固有のルールを記載する場所の名前で理解します。

ブログシステムであれば以下のようなルールを記載する場所とします。

  • 記事タイトルは10文字以上30文字以下とか
  • 本文は2000文字以下とか
  • カテゴリは必ず設定するとか

「アプリケーションサービス」

システム固有のルールを使用してアプリケーションとして成立させ処理(ユースケース)を記載する場所の名前で理解します。ブログシステムでは「記事タイトルは10文字以上30文字以下」というルールは記事を投稿するときの処理で使用することは勿論ですが、記事を更新する際にも使用します。

より具体的に言うと、「投稿する」というユースケースの中には以下のようなものがあるかもしれません。

  • バリデーション処理を行う(上記の文字数チェックとか)
  • エラーがあればエラー処理を行う
  • 正常に投稿したらTwitterに投稿通知を行う
  • 正常に投稿したらSearch Consoleにサイトマップ送信を行う

めっちゃ豪華なブログシステムな気がしますがデータベース保存する以外にもアプリケーションとして成立させる処理が行われる場合があります。

システム固有のルールを1箇所に管理することで冗長なコードを避ける

ブログシステムの場合、投稿するときと更新するときに「記事タイトルは10文字以上30文字以下」というルールを実現するコードを別々に記載すると冗長になってしまいます。これを避けるために「ビジネスロジック」に記載する。

終わり

以上です。考えが変わったら記事書いていきます。

Arek SochaによるPixabayからの画像