🤔 クエリサービスの設計でよく悩む DDDやCQRSの文脈では、書き込み(コマンド)と読み取り(クエリ)を分離することがあります。書き込み側ではリポジトリが集約エンティティの永続化を担い、読み取り側ではクエリサービスが画面表示やレポートなどに必要なデータ取得を担います。 リポジトリは UserRepository に Create・Update・Delete・GetByID を生やすのが一般的です。同じノリで UserQueryService にも複数メソッドを生やすと、プロダクトが育つにつれてじわじわ辛くなりそうだなと感じています。 いろいろ考えた結果、自分はシングルアクション(1インターフェース1クエリ)の方が筋が良いと考えるようになりました。リポジトリとクエリサービスでは、責務の性質が違うからです。 📦 なぜリポジトリは複数メソッドを持てるのか リポジトリの責務は集約エンティティ