A Web Developer

Laravelでレイヤードアーキテクチャを実装してみた感想

Laravelにてレイヤードアーキテクチャを学んでみたので、それをtyamahori.comにて実践してみました。

Category: Laravel
Tags: tyamahori Laravel
Date: 2019-01-17 04:37:49


より良い実装を求めて

最近はこの本を読んでいます。

PHPフレームワーク Laravel Webアプリケーション開発 バージョン5.5 LTS対応

いちゃもんをつけると、電子書籍版がないのが本当にダメ

まさに読んでいて耳ならぬ目が痛かったです。Controllerに直接Modelを使用する処理が当たり前と思っており、そのような実装をtyamahori.comでもしておりました。

ただ、そうするとテストが実装しにくかったり、DBの載せ替えが発生した際の対応などで後々の開発に影響が出るんですよね。。

なのでこの機会なのでリファクタリングと称して、レイヤードアーキテクチャを実装してみます。

理解していること

乱暴にいうと、以下の通りです。

呼び出す流れ

Controller -> Service -> Interface -> Concrete->Model

Controller

Serviceを呼び出して、必要な処理を実装していく場所。変数をViewに渡す。

Service

中継役。 Interface 経由で 具象クラスを呼び出す役周り。

Interface

事象クラスにて使用するメソッドを設定する場所。

Concrete

Interfaceに対しての事象クラス。ここが肝。Modelに関連する処理をゴリゴリと記載する場所

Model

Concrete と同じくらい肝。Concreteと住み分けについては理解が足りていない。

悩みどころ

描くレイヤーの責務の理解がグダグダになると大変になりそう。特にConcreteとModelでの処理の書き分けはゆくゆくに悩みそう。まずはConcreteに処理を実装し、Modelでは捻りのない処理を書くようにしてみようとは思います。

学べば学ぶほどわからない事柄が増えていく。。。