いきさつ
最近PHPのMVC方式のフレームワークである,Laravelにめちゃくちゃハマっております.
そしてLaravelの中には色んなパッケージが入ってるわけですが,その中でログイン認証機能などが便利に作成できるLaravel Breezeというものがあります.今回はそれを使ってみた上での備忘録です.
そもそもLaravelとはなんなのか
前述の通り,LaravelはPHPのフレームワークです.MVC方式なのでデータベースを使用したWebアプリケーションがわかりやすく作れます.
さらにArtisanと呼ばれるコマンドを使用することによってデータベースの操作,マイグレーションの実行,Dockerfileの自動生成,その他便利なLaravel用ライブラリのインストールなどを一括で行うことができます.また,バリデーションやミドルウェアの作成も標準対応しており,こちらも簡単に実装することができます.
そしてLaravel Breezeとは
Laravelのライブラリ群の中にLaravel Breezeというものがあります.これはLaravelのログイン認証機能などを作成するときに使われるライブラリで,これを使用することで認証らへんの実装が簡単に行うことができます.
Laravel7まではLaravel/uiというものでReact.jsやVue.jsを使ってこれらの機能の実装を行なっていましたが,Laravel8からこのライブラリが公式で非推奨になり,代わりにJetStream機能が導入されました.しかしこれはLivewireやInertiaなどを使用しているので勉強するべき部分が多く,正直初心者には習得が難しいところがあります.なのでその後に新しく追加されたLaravel Breezeというもので比較的シンプルにログイン認証などの実装を行うことができるようになりました.
開発環境
- MacOS Monterey version 12.6
- PHP 8.1.12
- Composer 2.4.4
- Laravel Framework 9.39.0
- Docker version 20.10.8
- docker-compose version 1.29.2
実際にLaravel Breezeを使ってみよう
Laravel Breezeの便利さを実感してみましょう.まず,laravelのプロジェクトを立ち上げます.
curl -s "https://laravel.build/example-app?php=81" | bash
プロジェクトが立ち上がりましたら,Laravel Sailを起動してDockerコンテナを構築してデーモンを起動します.
cd example-app
./vendor/bin/sail up -d
この状態で127.0.0.1に接続するとサーバが立ち上がっているのがわかります.
そして次にComposer経由でLaravel Breezeのパッケージをインストールします.
./vendor/bin/sail composer require laravel/breeze --dev
./vendor/bin/sail artisan breeze:install
更に,ユーザ情報を格納するテーブルを作ります.
Laravel Breezeをインストールすると,自動的にUsersというテーブルを作成するマイグレーションファイル(データベースの設計書のようなもの) が作られます.これをマイグレートすることでデータベースに必要なテーブルが作られることになります.
./vendor/bin/sail artisan migrate
これで準備は整いました.
ここでもう一度127.0.0.1に接続すると右上にログインと新規登録のリンクが二つできているのがわかります.
これでもうログイン認証機能自体は完成しました.とても簡単ですね.
では,ここで新規登録画面からユーザを登録してみましょう.右上の新規登録のリンクから新規登録の画面に飛んでください.
するとフォームが出てきます.ここに名前,メールアドレス,パスワードを入力して登録をすると,
ダッシュボード画面が作成されているのがわかります.この画面をいじって自分の作りたいWebページにしていきます.
このようにLaravel Breezeを使用すると自分で一から作るよりも安全に認証機能の実装を行うことができます.
また,ユーザデータはAuthという独自のクラスで取り扱われているので,このクラスの機能を使えばログイン状態の保持やテーブル上でのidの取得などが簡単に行うことができ,ユーザデータに対する処理も容易に行えます.
LaravelにはこのBreeze以外にもサブスクを実装させたいときに使われるLaravel Cashier, GUIでプロジェクトを管理することができるVoyagerなどの便利なライブラリなどが多く存在しているのでぜひ色々調べてみるのもいいかもしれません.
参考: