LoginSignup
9
2

ADR(Action-Domain-Responder)ってなんだ??

Posted at

初めに

 本格的にプログラミングを始めて約5ヶ月経過しましたが、今まで「MVC」について触れたり聞いたりすることはあっても「ADR」については耳にしたことすらありませんでした。
 しかし、触れる機会に恵まれたので今回は「ADR」について学んだことを記していこうと思います!

まずはざっくり

 「ADR」とはAction-Domain-Responderの頭文字をとったもので、ソフトウェアアーキテクチャパターンのひとつです。「MVC」の問題点を解決するためにPaul M. Jonesさんによって作られました。
「MVC」の問題点というのは主に二つあり、
1, Fat Controllerに
  開発が大規模になればなるほどControllerに書く処理の数が増えて肥大化してしまう

2, 責務の分散が不明瞭に
  プレゼンテーションロジックを記述する際にControllerに書けば肥大化に繋がり、Modelに書けば処理責任がブレてしまい、Viewに書けばフロントエンドの可読性が落ちてしまう

これらの問題を解決してくれるのが「ADR」です。

Actionについて

 Actionは「MVC」でいうところのControllerで、DomainとResponderを中継する役割を持ちます。
Controllerと違うのは、ひとつのActionファイルにひとつのメソッドを記述する点です。これによりファイルの数は増えますが、大規模な開発でもActionがControllerのように肥大化することはありません。
 また実際に使ってみて、ファイル検索ができるのが非常に便利だと感じました!

Domainについて

 Domainは「MVC」でいうModelで、ビジネスロジックの記述やデータの加工を行います。この二つはほとんど同じでよく宗教論争になったりします。私自身も特に違いを感じませんでした...。

Responderについて

 Responderは「MVC」だとModelとViewの中間に位置し、Actionから受け取ったデータをもとに最終的なレスポンス(HTML、JSON、XMLなど)を生成します。なのでここでデータベースに接続するような処理を書いてはいけません。
 個人的にはResponderクラスを作るのは少し面倒くさいですが、責務が明瞭になる点は魅力に感じます!

最後に

 この記事は大まかな内容になってしまいましたが、Webアプリケーション開発で『ADR』を採用する人が増えることを願っています!

9
2
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
9
2