Laravelを使った感想
Updated Date: 2024/01/01 02:55
はじめに
お手伝いさんとして自己啓発的にLaravelでコードを書かせてもらえる機会にをいただき、 ここ最近ではありえないくらいに真面目にコーディングを頑張った。 最近(1年間くらい)はほぼYAMLかアーキテクチャに頭を使い続けてたので久しぶりのプログラミング作業となったが、 自分でもびっくりなくらい自分の設計力不足を感じた。TODOがめっちゃたくさんある。 今は時間が優先として諦めてもらう方向で(勝手に)頑張ってる。
Laravel使った感想
感想だけばばっと。細かいところは各章でちょろっと所感を書く。
- 思った以上にRailsに似てる
- ControllerとModel以外のリソースをどう表現するかさっぱりわからん
- テンプレートエンジンblade(Railsでいうerb)とVueとの変数表現がぶつかる
- もはやPHPではない(PHPという言語をほぼ意識しなくていい)
思った以上にRailsに似てる
僕は過去にPHP3を5ヶ月くらいやった経験しかないので、正直「PHPなんて$_SESSION['XXX']書きまくってなんとかする中途半端言語。Rails最高」みたいに 思ってたんだけど、Laravelやってその認識が完全に誤っていたことを知った。 というのも、LaravelがとてもRailsに似ているからである。
例えばメールの送信。Rails3からAction MaileというメールをRailsのテンプレートエンジンのERB とかControllerとかと連携していい感じに作れる仕組みがあるのだが、これがまんまLaravelにも類似のMailableという仕組みが存在する。
また、Mailableの仕様以外でもディレクトリの構成だとかルーティングの仕方だとかそのへんもほぼRails。 つまりLaravelできる人は必然的にRailsもできると考えてもいいと思う。 もちろん別のプログラミング言語の知識やフレームワークを使うが故の慣れみたいなのは必要かもしれないが、 MVCモデルと基本的な作法を再学習する手間暇が消えるだけでかなり最初から生産性高く取り組めるのではないだろうか。
この状況に鑑みると、PHPやってたWeb系エンジニアや駆け出しエンジニアの人たちがRailsを次の学びの場に移してるという Twitterの一部界隈で見られる一連の動きは、意外と理にかなってるなと思った。
ControllerとModel以外のリソースをどう表現するかさっぱりわからん
Railsには「設定より規約」というCoC(Convention over Configuration)の原則が存在しており、
色んな人がRailsにおけるディレクトリ構成のベストプラクティスみたいなのを書いてくれていいるおかげで、
あまり悩まずにControllerとModel以外の、例えばconcerns/services/libsあたりにソースを
分けてを使おうみたいな議論はだいぶ進んでるというか終わってる。
Laravel界隈だとググってもあんまり出てこなかったんでよくわからない。まぁ、Railsに従ってもいい気がする。
(やり方はわからん)
テンプレートエンジンblade(Railsでいうerb)とVueとの変数表現がぶつかる
Vueと、Laravelのテンプレートエンジンであるbladeを一緒に使おうとするとエラーになる。 そのため、Vue側の変数の先頭に「@」をつける必要がある。まぁそれだっけちゃそれだけ。
1
2
動かない: <span> {{ param }} </span>
動く: <span> @{{ param }} </span>
もはやPHPではない(PHPという言語をほぼ意識しなくていい)
僕の前提がPHP3時代のピュアPHPで組んだWebサイトなので、そもそも今どきのPHPerでさえ使ったことないんじゃね? という感じだけど、そこから比べるとLaravelを使う上ではPHPという言語そのものを意識することはあまりないなという印象だった。
もちろんPHPとしての作法やコーディングの仕方(empty($val)みたいな便利関数の使い方など)は学ぶ必要はあるけど、 そのあたりの多くはググれば解決できる。 それにLaravel公式ドキュメントは日本語だし充実してるので悩んでも意外となんとかなる。 この辺を加味しても最初のチャレンジでPHP(Laravel)っていう選択肢はありだなと思った。 ずっと過去の経験を引きずっていて、なぜWeb系に未経験で入るエンジニアの人たちはPHPなんて古い言語を使うんだろう?と思ってたが、 これは老害の一歩手前だったなと改めて反省するしかない。
まとめ
Laravel書いてみたけど、言語やフレームワークより自分の中ではAPIのクラス設計だとか定義だとかいう部分で悩むことが多く、 動やったら効率的でクリーンでリーダブルなコードが書けるだろうか・・・みたいなことを一生懸命考えることになった。 手を動かさないと頭で想定していた物事ってうまく疎通しないなってこともわかるし、 経験を積まないとその想定が抽象的すぎて具体化に時間がかかる&破綻するということもよくわかった。
結論: 手を動かすことは大事。エンジニアならプログラムを0からとにかく書くべし。
なお普段は書け書けと言う側にもかかわらず、今回僕はテストコードを一切書いてません。一から出直します。