Service object, class, layer
サービスクラス、サービスオブジェクト、サービスレイヤーのややこしさを整理
いろんなところで語られている、概念の曖昧さがある。どのサービス?
アプリケーション層に基づくユースケースを書くもの
ドメインの知識に基づかない、アプリケーション特有の処理を書く
Value objectでもEntityでもないが、ドメイン層に基づくビジネスロジックを書くもの
モデル層を守る障壁、モデル層へのアクセスに規律を課すもの
なぜ欲しくなるのか?
MVCではcontrollerとmodelのどちらか、特にモデル層にビジネスロジックの記述が押し付けられやすい その処理を特定のユースケースごとに分割して吸い出すためのサービス
複数のモデルを操作したい
課題・考察すべきこと
どこに置くか、ファイルレイアウト、レイヤー
新たなレイヤーを追加することの問題
規律がないレイヤーは破綻する
曖昧な責務のオブジェクト、レイヤー
モデル app/models
composed_ofなど
ActiveRecordでない場合
このPOROがDDDにおけるドメインサービスであったりする このパターンに則る限りはサービスを考える必要はほとんどない
2025-09
上述の通りPOROやイベントモデル、フォームオブジェクトなどを紹介