web系のサーバーサイドエンジニアを目指す奴のメモ書きです。
Laravelとは
PHP界隈で世界一使われているフレームワーク。比較的新しいのにすでに人気一位なので今から学ぶのであればLaravelが無難そう。
cakePHPもかなり人気ではあるけど追い越された立場なので今回は調べない。それぞれ特徴があるけどとにかく今は無難さ重視でLaravelのみ調査。
Laravelの誕生(激薄小話)
Laravelを考えた人が.NETの開発者の一人らしい。.NetはC#のフレームワーク。唯一経験のあるC#に関連付けできるところがちょこちょこあったのでLarvelできるようになれば似たような感じで.Netでwebページ作ったりAPIを作ったりできるかも
Laravelの特徴(メリット)
学習難易度が低い
すごく主観的だと思うけどLaravelは比較的わかりやすいという発言が多い。
また世界一のフレームワークだからネットにたくさん情報があるようです。
MVCアーキテクチャ
LaravelはMVCモデルを採用しているフレームワーク。明確に各層を分けることで各層の作業をチームで分担できる。
Mはモデル層でDBとの通信ロジックを記載する層
Vはビュー層で表示内容を記述する層
Cはコントローラー層でリクエストを適切にモデル層、ビュー層に割り振るロジックを記述する
作成したWebページが見たいとリクエストを受けるときはルーティングを設定する必要がある。もう少しいうとどういうURLのリクエストが来たらコントローラー内のどの関数を実行するかということだと思う。
けどルーティングについてはもっと実装寄りの話のときに触れることにする。
自由度が高い
Laravelは世にある様々なフレームワークの中でもコードの融通が効く部類のよう。
そう言われてもあまりイメージは湧わかないがフレームワークによって自動生成できるコードを変更する際に割と許容範囲が広いらしく自由度が高いみたい
Artisan(アーティザン)とかいうCLI
Laravelで使われているCLI。
コマンド一つでコードを自動生成したりDB構造を編集したりできる。
C#にもdotnetコマンドでいろいろできたけどそれときっと同じ。
Artisanコマンドでコントローラーやモデル、マイグレーションファイルのコードのベースを自動生成してくれる。あくまでベースなので作成してくれた奴にコードを追加していく。
マイグレーションファイルはDB構造を定義するファイル。また実装的な話になったときに具体的に見ていく。Artisanコマンドで作成したマイグレーションファイルに基づいてDBの構造の変更もできる。
色々自動生成できるのにビューはArtisanコマンドでは自動生成出来ない。
ビュー層のテンプレートとしてBladeテンプレートとかいう比較的軽量なテンプレートをLaravelでは使用されているらしいけどさっぱりイメージが湧かないので調査が必要。
もしかしたらこれがある故自動生成がないのかもしれない。
しかもちょっと調べてみたらBladeはHTMLとはまた別物らしいのでこれもまた別の機会に掘り下げることにする。
ArtisanコマンドはWindows 上で実行するならコマンドプロンプトで操作するみたい。
ただ分かっていないけどVS Codeを使ってもできるのではないかと思う。
もっとできることがありそうなのでまた別の機会に掘り下げる。
バリデーションチェックができる
Laravelでも入力値の値の確認(バリデーションチェック)ができるみたい。やり方は完全に予想だけどC#ではアノテーションでバリデーションチェックができるようにしていたからきっとPHPもそんな感じだろう。
また実装関連の話のときにちゃんと調べる。
Eloquent ORM(エロクアントORM)とかいうORマッパー
DBテーブルのカラムに対応するプロパティを持つクラスをモデルクラスとかエンティティクラスとかいう。
モデルクラスとかエンティティクラスとかとDBデータと対応させることがORマッピング。
SQLなしでCRUDができる点で楽というのが特徴で便利だし簡単。だけど理解してなくても使えてしまいそう。
仕組み的なところはなかなか納得できる答えを見つけられなかったしこれもまた実装関連の話のときに持ち越し。
Laravelの特徴(デメリット)
自由度が高いが故・・・
自由度が高いのはよさでもあるけど人によってコードがバラつきがちだから統一感を出しづらい。
そうならないためにもベストプラクティスを意識して記述すると良いかも。
若干重い
Laravelは豊富な機能と引き換えに若干重いらしい。でも「Laravelは重いよね」って今の自分の技術的に測定するのは難しい。なのでとりあえずそうなんだって感じでOKとする。
とりあえず速度重視のプロジェクトではLaravelは避けたほうが良いらしいです。
とはいえ・・・
Laravel自体のアップデートもあるし、様々なプラグインも作成され続けている。
プラグインは簡単に言うとより強化するためのパーツというイメージ。
だから今後に期待しよう的な感じで。本当に知らんけど・・
補足
Composerとかいうパッケージ管理ツールで管理できるから依存関係のあるライブラリとかをまとめてダウンロードできたりするので便利っぽい。
パッケージ管理ツールが無いと必要なライブラリを全部自分で集めなきゃいけないからどれだけ助かるか。
Composerは環境構築のときにさらっと使うことになりそうなので別で調べた!
https://qiita.com/4U5zo/items/b74cff8114fb7b4ca3ba#composer%E3%81%A8%E3%81%AF
個人的なLaravel関連の未解決課題
・BladeとかいうViewのテンプレートについて
・Artisanでできること深堀
・バリデーションチェックのやり方
・Eloquent ORMの仕組み(納得できればよし)
参考資料
https://www.acrovision.jp/career/?p=2776
https://webukatu.com/wordpress/blog/11938/
https://hnavi.co.jp/knowledge/blog/laravel/
https://vitalify.jp/app-lab/vietnam-offshore/20200609_laravel/
https://knowledge.cpi.ad.jp/howto-cpi/laravel-artisan/
https://www.ritolab.com/entry/120#:~:text=Eloquent%20ORM%EF%BC%88Eloquent%20Object%20Relational,%E3%81%AE%E6%A9%9F%E8%83%BD%E3%81%AB%E3%81%AA%E3%82%8A%E3%81%BE%E3%81%99%E3%80%82