徹底比較 - Laravel Breeze vs Laravel Jetstream
Time to read:
Laravelは、堅牢でモダンな認証レイヤーを迅速に構築できる、複数の認証オプションを提供しています。Laravelスターターキットには、Laravel BreezeとLaravel Jetstreamがセットになっています。
Laravel Breezeは、迅速な業務立ち上げや事業推進を実現する強力なツールです。一方、Jetstreamは、2要素認証、APIトークン管理、チーム管理機能を備えています。機能性を重視するなら、Jetstreamがおすすめです。
この記事では、両方のパッケージを使いこなすために必要な基礎知識を解説します。インストールの手順、相違点と共通点、状況に応じた使い分けなども併せて説明します。
さぁ、始めましょう!
前提条件
このチュートリアルを進めるには、以下の要件が必要です。
- Laravelを使用した経験があること
- Laravel InstallerまたはComposerがシステム全体にインストールされていること
- PHP 8.1以上
- データベースがLaravelでサポートされていること(各アプリケーションのデータベースの移行を実行する前に、必要になります)
Laravel Breeze
Laravel Breezeは、Laravelの認証機能をすべて搭載しています。高度なビュー、コンポーネントシステム、ダッシュボードレイアウト、そして信頼性の高い認証フローを完備したアプリケーションの基盤をLaravel Bladeで構築します。
Laravel Breezeは、基本的なログイン、登録、ログアウト、パスワードを忘れた場合の再設定、パスワード設定、メール認証、パスワード確認機能を実装した、Laravel UIのアップグレード版です。特定のジョブスクリプトのフレームワークに依存せず、LaravelとBladeのみで構成されているため、ニーズに合わせて自由にカスタマイズできる点が強みです。フロントエンドをプログレードでスタイリングするため、Tailwind CSSフレームワークを採用しています。
Laravel Breezeは、認証設定・構成に必要なコントローラー、ルート、ビューをすべて生成します。
Laravel Breezeのインストール
新しいLaravelプロジェクトを作成した後、新規作成したディレクトリに移動し、以下のコマンドで移行を実行します。
その後、以下のコマンドでLaravel Breezeサポートを追加します。
コマンドが完了すると、ターミナルに次の出力が表示されます。
続いて、以下のコマンドでフロントエンドの依存関係をインストールし、フロントエンドのアセットをコンパイルします。
次に、Laravelをデータベースに接続するように設定してください(あるいは、Laravel Sailを使用して設定)。その後、新しいターミナルウィンドウまたはタブで、以下のコマンドを実行してアプリケーションを起動します。
アプリケーションが起動した後、選択したブラウザーでアプリケーションを開きます。デフォルトでは、http://127.0.0.1:8000からアクセスできます。以下の例のように、上部にログインと登録のリンクが表示されたデフォルトのLaravelページが表示されます。
ログインリンクをクリックすると、ログインフォームの例が表示されます。
ここで、登録リンクをクリックすると、アカウント登録フォームの例が表示されます。
次に、ファイル構造を見てみましょう。
Breezeのファイルとディレクトリ構造
ルート
ルートとは、アプリケーションのリクエストURLを作成する方法です。ルートは、routes/auth.phpファイルで定義されます。ファイルを確認すると、ログイン、登録、パスワードのリセット、メールアドレス認証、パスワードの確認、ログアウト用のルートを含む、認証ルートのリストが含まれていることがわかります。これは、次の行によってweb.phpファイルに直接含まれています。
コントローラー
認証コントローラークラスは、app/Http/Controllers/Auth/に保存されます。フォルダには、次のコントローラーがあります。
- AuthenticatedSessionController.php
- ConfirmablePasswordController.php
- EmailVerificationNotificationController.php
- EmailVerificationPromptController.php
- NewPasswordController.php
- PasswordController.php
- PasswordResetLinkController.php
- RegisteredUserController.php
- VerifyEmailController.php
ビュー
ビューは、コントローラーやドメインロジックをプレゼンテーションロジックから分離する役割を果たし、resources/views/auth/ディレクトリに配置されています。使用可能なブレードビューのリストは次の通りです。
- confirm-password.blade.php
- forgot-password.blade.php
- login.blade.php
- register.blade.php
- reset-password.blade.php
- verify-email.blade.php
どのような場合にBreezeを使用しますか?
Breezeは、以下のようなケースに最適です。
- アプリがBladeテンプレート中心で構成されている、または人間のレビューや判断が必要なコードを使用せず、素早く簡単に認証機能を実装したい場合
- アプリの認証機能を素早く修正したい場合
- FortifyやJetstreamが提供する機能を必要としないアプリをゼロから構築する場合
- LaravelのUIを最新版にしたい場合
次に、Jetstreamに移りましょう。
Laravel Jetstream
Jetstreamは、基本認証機能に加え、多彩な機能を搭載しており、Breezeを凌ぐ高度なシステムです。Jetstreamの機能:
- SanctumによるAPI認証
- メール認証
- ログインおよび登録機能
- セッション管理
- チーム管理
- 2要素認証
Jetstreamは、フレームワーク上に構築されたフレームワークとして設計されており、完全な機能を持つSassダッシュボードを容易に構築できる土台やライブラリ機能を提供します。Laravel Jetstreamは、オープンソースの無料ツールです。
Jetstreamは、Laravel Fortifyを使用しています。Fortifyは、アプリケーション認証用のルートとコントローラーを定義し、Jetstream UIからルートへリクエストを送信する構造です。
Jetstreamをインストールすると、config/fortify.php設定ファイルがアプリケーションにインストールされます。フロントエンドを完全に制御したい場合、APIを構築している場合、あるいはフロントエンドがまったく不要な場合に、このパッケージを使用します。Laravel Jetstreamは、オープンソースの無料ツールです。
インストール
Jetstreamは、ComposerまたはLaravelインストーラーのいずれかを使用してインストールできます。
LaravelインストーラーでJetstreamをインストールする
まず、以下のコマンドを実行して、Laravelインストーラーを使用してJetstreamでLaravelプロジェクトを新規作成します。
[Which Jetstream stack do you prefer?](どのJetstreamスタックをご希望ですか?)というプロンプトが表示されたら、希望するもの、あるいは使い慣れているものを選択してください。
アプリケーションで[Will your application use teams? (yes/no) [no]:](Teamsを使用しますか?(はい/いいえ)[いいえ]:)というプロンプトが表示されたら、Enterキーを押します。次に、
- 新規作成したプロジェクトディレクトリに移動し、
- Laravelのデータベース接続を設定します(または、Laravel Sailを使用して設定することもできます)。
- 以下のコマンドを実行して、移行を実行します。
Livewireスタックを利用するには、以下のコマンドを実行し、必要なBladeコンポーネントを公開します。
次に、ターミナルで以下のコマンドを実行して、アプリケーションを起動します。
これで、ブラウザーでhttp://localhost:8000を開くと、Laravel Breezeの前回のセクションと同様にデフォルトのルートがレンダリングされるのを確認できます。
JetstreamをComposerでインストールする
また、以下のコマンドを実行することで、Jetstreamが組み込まれたLaravelプロジェクトを新規作成することもできます。
LivewireまたはInertiaをインストールする
完了後、プロジェクトの初期構造を作成する、任意のスキャフォールディングツールをインストールします。Livewire with Bladeテンプレートを使用したい場合は、次のコマンドを実行してください。
InertiaをVueと組み合わせて使用したい方は、以下のコマンドを実行します。
コマンドが完了した後、以下のコマンドを使用してフロントエンドアセットをダウンロードしてコンパイルします。
最後に、データベースを接続し、移行を実行します。
新しいターミナルウィンドウまたはタブで、以下のコマンドを実行してアプリケーションを起動します。
アプリケーションが起動した後、選択したブラウザーでアプリケーションを開きます。デフォルトでは、http://127.0.0.1:8000からアクセスできます。以下の例のように、上部にログインと登録のリンクが表示されたデフォルトのLaravelページが表示されます。
ログインリンクをクリックすると、ログインフォームの例が表示されます。
ここで、登録リンクをクリックすると、ユーザー登録フォームの例が表示されます。
認証
新規インストールされたLaravel Jetstreamプロジェクトには、ログインフォーム、2要素認証、登録フォーム、パスワードのリセット、メール認証が付属しています。これらのテンプレートはすべて、resources/views/authにあります。
前にも書きましたが、JetstreamはLaravel Fortifyというパッケージを使用しています。Fortifyアクションは、app/actions/Fortify/にあり、Fortifyの構成はconfig/fortify.phpにあります。ここでは、さまざまな機能のオン/オフ切り替えなどの設定を変更できます。
プロフィール管理
Jetstreamにはプロフィール管理機能があり、ユーザー名、メールアドレス、プロフィール写真を自由にアップロード・更新できます。ユーザープロフィールビューは、resources/views/profile/update-profile-information-form.blade.phpに保存されます。Inertiaを使用している場合は、resources/js/Pages/Profile/UpdateProfileInformationForm.vueでビューを確認できます。
セキュリティ
アプリケーションのセキュリティ対策でお悩みですか? それなら、問題ありません。Laravel Jetstreamには、ユーザーによるパスワード更新やログアウトなどの機能が標準装備されており、単なる「安全」を超えた安心を届けます。
さらに特筆すべきなのは、ユーザーが簡単に有効・無効を切り替えられる、QRコードを用いた2要素認証(2FA)に対応している点です。また、ユーザーは他のブラウザーセッションからログアウトすることもできます。ユーザープロフィールブレードテンプレートは、resources/views/profile/にあります。Inertiaで作業している場合は、resources/js/Pages/Profile/にあります。
JetstreamのAPI
Laravel Jetstreamは Laravel Sanctumを使用してトークンベースのAPIを提供しています。これは、Single Page Applications(SPA)、モバイルアプリケーション、基本的なトークンベースのAPIの認証用に作成されたLaravelパッケージです。
Sanctumを使用するAPIについては、こちらの記事をお読みください。Sanctumを使用すると、各ユーザーは作成、読み取り、更新、削除(CRUD)などの特定の権限を持つAPIトークンを生成できます。
Jetstream Teams
Jetstreamのインストール中に--teamフラグを使用すると、Webサイトでのチームの作成と管理が可能になります。Jetstream Teams機能を使用すると、各ユーザーは複数のチームを作成したり、複数のチームに所属したりできます。
どのような場合にJetstreamを使用しますか?
Jetstreamは、以下のようなケースに最適です。
- ユーザーがLaravel Livewire、Inertia.js、Tailwind CSSに関する深い知識を有している、あるいは導入に際して習得に時間を割くことを厭わない場合
- 新しいLaravelアプリケーションを構築する際、ユーザー認証などの機能に対応する事前構築されたソリューションが必要な場合
相違点
両ツールの大きな違いは、Jetstreamが特定のフロントエンドスタックに依存している点です。Jetstreamには、「Livewire Blade」テンプレートと「Inertia Vue」テンプレートの2つのオプションが用意されています。普段のアプリケーション構築でVueを使い慣れている場合は、Inertiaルートをおすすめします。それ以外の場合は、LivewireやBladeを選ぶとよいでしょう。
また、使用経験がある場合はわかると思いますが、Laravel Jetstreamはやや扱いにくく、習得に少し時間がかかるのがネックでした。一方、Laravel Breezeは環境構築が非常に容易にできるよう設計されています。
共通点
両者は、フロントエンドとバックエンドの両機能をアプリケーションに追加できるという点で、その類似性は明らかです。
まとめ
ここまで、Laravel BreezeとJetstreamのインストール方法、相違点、共通点、それぞれに適した場面について説明してきました。どちらも認証プロセスにおいて優れた機能を備えています。このパッケージは、セキュリティ保護エリアへの不正アクセスや制限されたアクションの実行を防ぐことが目的です。最も自分のスタイルに合うと思う製品を選んでください。記事の内容が参考になったという場合は、ぜひシェアしてください。
Temitope Taiwo Oyedeleは、ソフトウェア開発者であり、テクニカルライターです。自分が経験し、習得した情報や知識を発信しています。