
コンニチハ
パンに塗り塗りジャム太郎です!
今回のテーマは「Laravelで簡単ログイン機能を作る方法」についてです。
はじめに
LaravelでWebアプリを作るときに欠かせないのが「ログイン機能」です。しかし、Laravel公式が提供しているJetstreamは高機能すぎて、初心者には少し難しく感じるかもしれません。
そこで今回は、もっとシンプルに始められる「Laravel Breeze」を使って、最短でログイン機能を作る方法を紹介します!
Laravel Breezeとは?
Laravel Breeze は、Laravel公式が提供している軽量な認証システムです。以下の機能が最初から揃っています。
- ユーザー登録
- ログイン/ログアウト
- パスワードリセット
- メール認証(オプション)
Jetstreamとの大きな違いは、LivewireやInertiaといった技術を使わず、標準的なBladeテンプレートとコントローラーだけで動く点です。初心者には非常にわかりやすい構成です。
開発環境の準備
まずはLaravelの新規プロジェクトを作成します。
①Laravelをインストール
composer create-project laravel/laravel mantap-app
cd mantap-app
②Breezeをインストール
composer require laravel/breeze --dev
php artisan breeze:install
③フロントエンドのビルド
npm install && npm run dev
※ npm
が使えない場合は pnpm
や yarn
でもOK
④マイグレーション実行
php artisan migrate
これでBreezeの準備は完了です!
Breezeのログイン機能を動かしてみる
ブラウザでアプリを起動してみましょう。
php artisan serve
ブラウザで http://localhost:8000
にアクセスすると、すでに以下の画面ができています。
- ユーザー登録画面
/register
- ログイン画面
/login
実際にユーザー登録→ログイン→ログアウトまで確認してみましょう。
ここまでで、ログイン機能はほぼ完成です!
少しだけカスタマイズしてみよう
実際のアプリでは、ユーザー登録時に追加情報を保存したい場合もあります。
例として「ニックネーム」を登録してみます。
①マイグレーションにカラム追加
●database/migrations/xxxx_create_users_table.php
を編集
$table->string('nickname')->nullable();
●マイグレーションを再実行
php artisan migrate:fresh
②バリデーションに項目追加
●app/Http/Controllers/Auth/RegisteredUserController.php
の $request->validate()
を修正
$request->validate([
'name' => 'required|string|max:255',
'nickname' => 'nullable|string|max:255',
'email' => 'required|string|email|max:255|unique:users',
'password' => ['required', 'confirmed', Rules\Password::defaults()],
]);
③保存処理に追加
User::create([
'name' => $request->name,
'nickname' => $request->nickname,
'email' => $request->email,
'password' => Hash::make($request->password),
]);
これでニックネームも登録できます!
Jetstreamとの違いまとめ
機能 | Breeze | Jetstream |
---|---|---|
難易度 | 簡単 | やや高め |
使用技術 | Blade | Livewire or Inertia |
機能 | 最低限 | 多機能(2FA、API、チーム管理等) |
初心者はまずBreezeで基礎を固めるのがおすすめです!
まとめ
Laravelでログイン機能を作りたい初心者には、Breezeが最適です。今回紹介した手順で、最短10分ほどで基本的な認証システムを作れます。
次は以下のような発展にもチャレンジしてみましょう。
- メール認証の追加
- SNSログインの実装(Laravel Socialite)
- 管理者権限(認可機能)の導入
では、また次の記事で〜