【第四弾】Laravel入門資料

📚 Laravel公式ドキュメント - Authentication

https://laravel.com/docs/12.x/authentication

💡 この講座では、上記の公式ドキュメントを基に解説していきます。
公式ドキュメントは初学者には内容が難しいため、エッセンスを優しく噛み砕いて解説していきます。

認証機能 - Laravel認証ライブラリの紹介

Webアプリケーションには、ユーザー認証機能が必要不可欠です。
Laravelには複数の認証ライブラリが用意されており、プロジェクトの要件に応じて選択できます。

🎯 この章で学ぶこと

  • ✅ Laravel認証ライブラリ一覧
  • ✅ 各ライブラリのメカニズムとユースケース
  • ✅ どのライブラリを選ぶべきか
  • ✅ なぜスクラッチで学ぶべきか

Laravel認証ライブラリ一覧

Laravelには、用途に応じた複数の認証ライブラリが用意されています。

1. Laravel Breeze

📦 メカニズム

セッションベース認証

✨ 何をしてくれるのか

  • ✅ usersテーブル、password_reset_tokensテーブル、sessionsテーブルを作成
  • ✅ ログイン/登録/パスワードリセットのUI(Blade + Tailwind CSS)
  • ✅ 認証ルート(/login, /register, /logout, /dashboard)
  • ✅ 認証コントローラー全部
  • ✅ プロフィール編集ページ

🎯 ユースケース

  • • 小〜中規模のWebアプリケーション
  • • シンプルな認証機能で十分な場合
  • • カスタマイズ性を重視する場合
  • • 学習用(生成されたコードが読みやすい)

💡 インストール

composer require laravel/breeze
php artisan breeze:install blade
npm install && npm run dev
php artisan migrate

🔍 各コマンドが生成するファイル

① composer require laravel/breeze

→ Breezeパッケージをインストール(足場ツール)

② php artisan breeze:install blade

→ 以下のファイルを自動生成:

  • app/Http/Controllers/Auth/* - 認証コントローラー(ログイン/登録/パスワードリセット)
  • resources/views/auth/* - 認証画面(Blade + Tailwind CSS)
  • resources/views/dashboard.blade.php - ログイン後のダッシュボード
  • resources/views/profile/* - プロフィール編集画面
  • routes/auth.php - 認証ルート定義
  • database/migrations/* - users/sessions/password_reset_tokensテーブル

③ npm install && npm run dev

→ Tailwind CSSのビルド(認証画面のスタイル適用)

④ php artisan migrate

→ users/sessions/password_reset_tokensテーブルを作成

2. Laravel Jetstream

📦 メカニズム

セッションベース認証 + 高機能(2FA、チーム管理、API)

✨ 何をしてくれるのか

  • ✅ Breezeの全機能
  • ✅ 2段階認証(Two-Factor Authentication)
  • ✅ チーム管理機能
  • ✅ API トークン管理(Laravel Sanctum統合)
  • ✅ プロフィール写真アップロード
  • ✅ セッション管理(デバイス別ログアウト)

🎯 ユースケース

  • • SaaSアプリケーション
  • • チーム/組織機能が必要な場合
  • • エンタープライズレベルのセキュリティが必要
  • • 高度な認証機能が必要な場合

💡 インストール

composer require laravel/jetstream
php artisan jetstream:install livewire
npm install && npm run dev
php artisan migrate

3. Laravel Fortify

📦 メカニズム

バックエンド認証ロジックのみ(フロントエンドなし)

✨ 何をしてくれるのか

  • ✅ ログイン/登録/パスワードリセットのバックエンド処理
  • ✅ 2段階認証のロジック
  • ✅ メール認証のロジック
  • ❌ UIは生成されない(自分で作る)

🎯 ユースケース

  • • SPA(Vue.js / React / Angular)のバックエンドAPI
  • • フロントエンドを完全に自由に作りたい場合
  • • BreezeやJetstreamのUIが不要な場合

💡 補足

JetstreamとBreezeの内部でFortifyが使われています。

4. Laravel Sanctum

📦 メカニズム

トークンベース認証(API認証特化)

✨ 何をしてくれるのか

  • ✅ SPAセッション認証(Cookie認証)
  • ✅ APIトークン認証(Bearer Token)
  • ✅ モバイルアプリ用トークン発行
  • ✅ トークンのスコープ管理

🎯 ユースケース

  • • モバイルアプリのバックエンドAPI
  • • Vue/React SPAとLaravel APIの組み合わせ
  • • 個人アクセストークンが必要な場合
  • • シンプルなAPI認証で十分な場合

💡 インストール

composer require laravel/sanctum
php artisan vendor:publish --provider="Laravel\Sanctum\SanctumServiceProvider"
php artisan migrate

5. Laravel Passport

📦 メカニズム

OAuth2サーバー(本格的なAPI認証)

✨ 何をしてくれるのか

  • ✅ OAuth2サーバーとして機能
  • ✅ アクセストークン / リフレッシュトークン発行
  • ✅ サードパーティアプリにAPIアクセスを許可
  • ✅ クライアント管理

🎯 ユースケース

  • • 「〇〇でログイン」機能を自分のサービスで提供したい
  • • サードパーティアプリに自分のAPIアクセスを許可
  • • 本格的なOAuth2が必要な場合

⚠️ 注意

シンプルなAPI認証ならSanctumで十分です。
Passportは重量級なので、本当に必要な場合のみ使用してください。

6. Laravel Socialite

📦 メカニズム

OAuth認証クライアント(ソーシャルログイン)

✨ 何をしてくれるのか

  • ✅ Google / GitHub / Facebook / Twitterなどでログイン
  • ✅ OAuthフローの簡略化
  • ✅ ユーザー情報の取得

🎯 ユースケース

  • • 「Googleでログイン」機能
  • • 「GitHubでログイン」機能
  • • ほぼすべての本番プロジェクトで併用

💡 インストール

composer require laravel/socialite

ライブラリ比較表

各ライブラリの特徴を一覧で比較します。

ライブラリ メカニズム UI 主な用途
Breeze セッション ✅ あり 小〜中規模Web
Jetstream セッション + 高機能 ✅ あり SaaS / エンタープライズ
Fortify バックエンドのみ ❌ なし SPA / カスタムUI
Sanctum トークン ❌ なし API / モバイル
Passport OAuth2 ❌ なし OAuth提供側
Socialite OAuth クライアント ❌ なし ソーシャルログイン

プロジェクト規模別の推奨

プロジェクト 推奨ライブラリ
小規模Webアプリ Breeze + Socialite
中規模Webアプリ Breeze + Socialite + Spatie Permission
SaaSアプリ Jetstream + Socialite
API + SPAアプリ Sanctum + Fortify
モバイルアプリAPI Sanctum
OAuth提供サービス Passport

なぜスクラッチで学ぶべきか

ライブラリは便利ですが、学習段階では自分で認証機能を作るべきです。

❌ ライブラリに頼ると起こる問題

  • • 認証の仕組みがブラックボックスになる
  • • セッション・Cookie・ハッシュ化の理解が浅くなる
  • • カスタマイズが必要になった時に対応できない
  • • エラーが出た時に原因が分からない
  • • 面接で「なぜそう動くのか」を説明できない

✅ スクラッチで作ると得られるもの

  • • セッションの仕組みが理解できる
  • • パスワードハッシュ化の重要性が分かる
  • • CSRF・XSS・SQLインジェクションなどのセキュリティ知識
  • • ミドルウェアの動作が理解できる
  • • 実務で応用が効く
  • • 面接で自信を持って説明できる

学習の正しい順序

ステップ1: スクラッチで認証を作る
   ├─ ユーザー登録(Hash::make())
   ├─ ログイン(Auth::attempt())
   ├─ ログアウト
   ├─ ミドルウェアで保護
   └─ セキュリティ対策

ステップ2: Breezeのコードを読む
   ├─ 自分の実装と何が違うか?
   ├─ なぜそう書かれているのか?
   └─ 理解が何倍も深まる

ステップ3: 実務ではライブラリを使う
   ├─ 車輪の再発明をしない
   ├─ セキュリティが保証されている
   └─ メンテナンスが楽

💡 重要なポイント

次の章では、スクラッチで認証機能を実装します。
Breezeは「仕組みを理解した後」に使うべきツールです。
まずは自分の手で作って、認証の仕組みを完全に理解しましょう。

まとめ

Laravel認証ライブラリについて学んだことをまとめます。

✅ この章で学んだこと

  • 1. Breeze - シンプルな認証、小〜中規模向け
  • 2. Jetstream - 高機能、SaaS向け
  • 3. Fortify - バックエンドのみ、SPA向け
  • 4. Sanctum - API認証、モバイル向け
  • 5. Passport - OAuth2サーバー
  • 6. Socialite - ソーシャルログイン
  • 7. 学習方針 - まずスクラッチで作って理解する

🎉 認証ライブラリの紹介完了!

次の章では、スクラッチで認証機能を実装します。
セッション、Cookie、ハッシュ化、ミドルウェアなど、認証の仕組みを深く理解していきましょう。