はじめに
はじめまして!
専門学校3年の@tk_zawaです。
AdventCalendar初参加な為緊張&前日までの皆さんガチすぎこわ…ってなりながら書いてます。よろしくお願いします。
私は半年前までほぼ生でPHPを書いていました。それから学校の授業等でLaravelをほんの少し触り始め、それから自主制作の中でガッツリ使うようになりました。
今回の記事ではLaravelについて調べながら使っていた中で、個人的に感動した機能について書いていこうと思います。(機能の使い方のガッツリした解説は今回はしません)
紹介するのはフレームワーク全般に言えるような機能だったり、ただLaravelに付属されてるだけのライブラリだったりと色々ツッコミどころ満載ですがゆるして…
機能の紹介
1. ORM
それまでSQLクエリをPHPファイルにPDO(PHPDataObjects)を使って直書きしていた中で、
データベースのテーブル構造を1つのクラスとして定義してそれに対してメソッドを展開していくというところが、学び始めた当初はマジで理解が進まなくてめちゃくちゃ困惑してました。
しかし色々触っていった結果、テーブルのリレーション操作というものがめちゃくちゃ便利だと気づき、試行錯誤の中で一気に理解が進みました。
特に、1対多や多対多な関係を持つテーブル群から、SQLクエリ直書きでは(数行程度じゃ)到底取り出せないようなキレイな形のデータを取得できるところと、
多対多な関係にあるテーブルの間に挟むPivot(中間)テーブルの操作を簡潔に書けるところが自分の中でアツかったです。
2. Bladeディレクティブ(ページング)
生PHPで使っていた頃自作していたテンプレート継承機能やループカウンタ変数が最初から用意されていたことでかなり捗りました。
(Bladeディレクティブの特徴について振り返ってみると、ただコードの見た目が簡潔になっただけでは…みたいなことばっかりなんですが、
それでもなんとなくフレームワークを使いこなせてる感が自分の中で生まれてモチベーションを上げてくれたのが個人的に推したい点)
中でも、色々あるBladeディレクティブの中で感動どころか便利すぎて怖っ…てなったのが、ページング機能でした。
Laravelでページングを実装したければ、サーバ側で前述のORM(Eloquent)を叩いて取得したインスタンスで
paginate(ページ数)
というメソッドを叩いて、フロント(Blade)側でインスタンス変数->links()
と書くだけで
↑が作れる。えっ簡単すぎこわ…(ボタンのデザインはもちろん弄れる)
3. 認証機能
Laravelが入ったディレクトリ上で$ php artisan make:auth
(Laravel5.8以下の場合)と打つと
アカウント登録ページ、登録/ログイン処理機能、アカウント用テーブルのマイグレーションファイルその他諸々が一括で生成されます。
後はログイン後の遷移先、Sessionに関する設定をルーティングファイル(routes/web.php)や自作のController等に盛り込むだけ。
それまで自分で登録/ログイン機能を全部イチから作っていたので、今までやっていたのって無駄…?ってなるくらいビビりました。
(この機能については拡張方法等についてまだ調べている途中で使いこなせていないのは内緒)
4. Vue/React連携(+Laravel Mix)
LaravelはデフォルトのJSフレームワークとしてVueを採用しており、アプリのルートディレクトリ上でnpm install
(Reactの場合事前に$ php artisan preset react
と叩いておく)と打って、
resources/js/app.js
をゴニョゴニョするだけでVue/Reactを使えるようになります。(ゴニョり方についての詳細はGoogle先生にて)
JSフレームワークを連携させる際はそれらのファイルをビルド(1つのJSファイルにする)して使うのですが、
そのビルド方法の設定ファイル(webpack)の記述が難しく、それを初心者でも書きやすく/分かりやすくしてくれるLaravel MixというツールがLaravelには初期搭載されてます。(Laravel Mixはその他のフレームワークでも使用可)
webpack等についてあまり詳しくは把握してないんですがとにかく、Laravelはフロントエンド技術導入へのサポート体制が整っているのがマジで初心者に優しいと感じた。
(VueでもReactでもCDN引っ張ってきて直接使うことももちろんできますが、そうなるとBladeディレクティブと書式が喧嘩したりとか色々支障を来すのでLaravel Mix経由で使うことを全力で推奨)
npmの話になるけど$ npm run watch
が便利すぎ…保存する度にビルドしてちゃんと動くかどうか見てくれるのやべー…
おわり
この記事は、今年の8月にTechBowlさんのイベントに参加させてもらった際にスーさんに直近の自分の将来像設計をサポートしていただいて考えついた、
「今年中にはLaravelについて他人に教えられるくらい詳しくなる」という像に辿り着けました、という報告も兼ねて書きました。
本当にあのイベントを企画されたTechBowlさんには感謝しかない…
これからも"""自走力"""を大事にしていきながらエンジニア生活頑張ります!ありがとうございました。