Slim4 Skeleton と ADRパターン のメモ

slimphp/Slim-Skeleton (Slim4) についてずっと読解を試みては挫折を繰り返してきたのですが、ようやく骨子が見えてきたのでメモ。

Slim4 の Slim-Skelton をカスタマイズして dotenv, Whoops, debugbar を入れるでちょこっと触ってから2年経過しているという恐ろしさ……。ずっと取り組んでいたわけではなく散発的とはいえ……。

ディレクトリ・ファイルと役割

  • Action:
    • MVC の Controller 。ルーティングやパラメータによって対応する Domain とやり取りをする。
    • ただし Fat Controller にならないように1メソッドを1クラスに切り分けるイメージ。
    • Slim4 Skeleton の場合、 respond()メソッド が Action クラスの中にいるので Responder が同居している。サンプルでは JSON のレスポンスだけで超薄いのでわざわざ別で記述しなくても……ということなのかもしれない。
  • Domain:
    • MVC の Model 。データモデルというだけでなく、ビジネスロジックも表現する。
  • Repository:
    • Model のデータ永続化を抽象化したオブジェクト。Slim4 Skeleton の場合は抽象化しているので Interface 。
  • Middleware:
    • ADR ではなく汎用的な話。各 Action で共通する処理。
  • Infrastructure:
    • ADR 固有の話ではない。外部データソースとのやり取りが責務。
    • 相手は DB や API が想定される。
  • Persistence:
    • ADR 固有の話ではない。 DB とのやり取りとデータの永続化が責務。
    • DB とやり取りするということは、 Domain (Model) を具象化することになる。サンプルでもインメモリだが Interface の Repository を implements している。

これで「この場合はどのディレクトリ・ファイルをいじれば良いか」の感覚が掴めてきました。

参考

Slim4

ADR

Repository

Infrastructure, Persistence

Interface, implements

この記事を書いた人

アルム=バンド

フロントエンド・バックエンド・サーバエンジニア。LAMPやNodeからWP、Gulpを使ってejs,Scss,JSのコーディングまで一通り。たまにRasPiで遊んだり、趣味で開発したり。