巨人の足元でたじlog

そうして言葉を軽んじるから――― 君は私の言葉を聞き逃す

laravelのFacadeとserviceクラスがわからない

永遠にわからない。

Ruby on Rails出身の僕。
flaskはわかった。というより、むしろflaskを勉強したことでRuby on Railsの理解も深まった。
flaskだとスクラッチに近い形で書かないと行けないところを、Ruby on Railsだとそこらへんをフレームワーク側ですでに提供してくれている。
これはなんて便利なものなんだと改めて感じた。
flaskではMVCの全部を1つのファイルに収めることもできる。しかしそれは全体が見にくくなるので、普通に作るならやらない。
MVCのありがたみみたいなものも深く理解できた気がする。

しかし、laravelおまえときたら。
Facadeとは何ぞや。Serviceクラスとはなんぞや。Serviceコンテナーとはなんぞや。
新しい概念が多くて納得感がないまま早2ヶ月くらい。
コントローラーが肥大化してきてロジックの流れが見えづらくなるので、部分的に切り出して外にまとめる。という考え方はわかる。
この考え方がFacadeに近いはずだ。
これにあとはDIとかが入ってきて、より便利にラップしてくれて、呼び出し側からすれば単一のシンプルなインターフェースで呼び出せて、裏側ではよしなにやってくれている。
自分が集めた情報だとこんな感じだ。
それはわかるんだが、Serviceクラスとかをかませる理由がわからない。
Laravelのフレームワークがそういう仕様だといえばそれまでだが、そうなのだとしてなぜそんな仕様にしているのか。そうすることで何が嬉しいのか。これが腑に落ちない。 肥大化したコントローラーを切り出して、Facadeにまとめる。それをコントローラーから呼び出す。
これだけでいいじゃないか。なぜServiceというものを挟む必要があるのか。

そもそもFacadeを呼び出す際にいろいろ準備?が必要ということか?
ちゃんとテストコードを書いたことがないために、テストのために想定される実装・機能についてのイメージが湧かないことがこの非理解の原因だろうか。
テストをしやすいようにもっくとかすたぶとかをうまいことやる必要がある。らしい。 それらを呼び出したりするのがServiceクラスということになるのだろうか。

うーむ。来月あたりの自分に、この頃の自分頭わっるぅと言わしめたい。
ということでわからない備忘録終了。