カテゴリ: Laravel 更新日: 2025/12/15

LaravelのBladeで認証状態によって表示を切り替える方法(@auth, @guest)を初心者向けに解説!

LaravelのBladeで認証状態によって表示を切り替える方法(@auth, @guest)
LaravelのBladeで認証状態によって表示を切り替える方法(@auth, @guest)

先生と生徒の会話形式で理解しよう

生徒

「LaravelのBladeテンプレートで、ログインしている人とログインしていない人で表示を変えたいんですが、どうやればいいですか?」

先生

「いい質問ですね。LaravelのBladeには、ログイン状態を簡単に判定して表示を切り替えるための便利なディレクティブが用意されています。それが @auth@guest です。」

生徒

「具体的にはどうやって使うんですか?」

先生

「それでは、基本から順番に説明しますね!」

1. LaravelのBladeテンプレートとは?

1. LaravelのBladeテンプレートとは?
1. LaravelのBladeテンプレートとは?

Blade(ブレード)は、Laravelで使われるテンプレートエンジンです。テンプレートエンジンとは、HTMLの中にPHPのコードをわかりやすく書ける仕組みのこと。普通のPHPよりもシンプルに書けるので、初心者にも扱いやすい特徴があります。

Bladeには、いくつか特別な命令(ディレクティブ)があり、今回は認証状態を判定するための @auth@guest について解説します。

2. 認証状態とは?

2. 認証状態とは?
2. 認証状態とは?

認証状態とは、ユーザーがログインしているかどうかの状態のことです。例えば、ウェブサイトにメールアドレスとパスワードでログインすると「認証済み」になります。逆にログインしていない人は「ゲスト」と呼ばれます。

認証状態によって表示を切り替えれば、ログインしている人にはマイページを見せて、ログインしていない人にはログインフォームを見せる、といったことができます。

3. @auth ディレクティブの使い方

3. @auth ディレクティブの使い方
3. @auth ディレクティブの使い方

@auth は「ユーザーがログインしているとき」に中のHTMLやコードを表示します。ログイン済みのユーザー向けの表示をしたい時に使います。


@auth
    <p>こんにちは、ログインユーザーさん!</p>
@endauth

このように書くと、ログインしている人だけ「こんにちは、ログインユーザーさん!」というメッセージが表示されます。

4. @guest ディレクティブの使い方

4. @guest ディレクティブの使い方
4. @guest ディレクティブの使い方

@guest は「ユーザーがログインしていないとき」に中のHTMLやコードを表示します。つまり、まだログインしていない訪問者(ゲスト)向けの表示をするために使います。


@guest
    <p>ログインしてください!</p>
@endguest

この場合、ログインしていない人だけに「ログインしてください!」と表示されます。

5. @auth と @guest を組み合わせた表示切り替え

5. @auth と @guest を組み合わせた表示切り替え
5. @auth と @guest を組み合わせた表示切り替え

通常は、ログインしている人にはログアウトボタンやマイページへのリンクを表示し、ログインしていない人にはログインボタンを表示したいですよね。Bladeでは簡単に書けます。


@auth
    <p>ようこそ、{{ Auth::user()->name }} さん!</p>
    <a href="/logout">ログアウト</a>
@endauth

@guest
    <a href="/login">ログイン</a>
    <a href="/register">新規登録</a>
@endguest

ここで Auth::user()->name はログインしているユーザーの名前を取得するコードです。ログインユーザーだけに名前を表示できます。

6. なぜBladeで認証状態を判定するのが便利なの?

6. なぜBladeで認証状態を判定するのが便利なの?
6. なぜBladeで認証状態を判定するのが便利なの?

PHPだけで書く場合は、認証状態を判定するコードが複雑になりがちですが、Bladeの@auth@guestを使うととてもシンプルに書けます。これにより、ビューの見た目がスッキリして管理もしやすくなります。

また、コードを読む人も「この部分はログインしている人だけに表示されるんだな」とすぐ理解できるので、メンテナンス性もアップします。

7. もし認証機能をまだ設定していない場合は?

7. もし認証機能をまだ設定していない場合は?
7. もし認証機能をまだ設定していない場合は?

Laravelには簡単に認証機能を導入できる仕組みがあります。初心者には Laravel BreezeLaravel Jetstream といったパッケージがおすすめです。これらを使うと、ユーザー登録やログイン機能が簡単にセットアップできます。

認証機能がないと @auth@guest は正しく動かないので、まずは認証の導入を考えましょう。

8. 注意点と補足

8. 注意点と補足
8. 注意点と補足
  • @auth@guest はBladeでしか使えません。PHPファイルなどでは別の方法で認証を判定します。
  • Bladeの中で{{ Auth::user() }}を使う際は、ユーザーがログインしていることが前提なので、必ず@auth内で使うようにしましょう。ログインしていない時に使うとエラーになります。
  • ログイン状態を判定する他の方法として、auth()->check()auth()->guest()というPHP関数もありますが、Bladeではディレクティブを使う方が簡単です。

まとめ

まとめ
まとめ

Bladeで認証状態による表示切り替えを理解しよう

この記事では、LaravelのBladeテンプレートを使って、ユーザーの認証状態に応じて表示内容を切り替える方法について詳しく解説してきました。 Webアプリケーションでは、ログインしているユーザーとログインしていないユーザーで、見せる情報や操作できる内容を変える場面が非常に多くあります。 例えば、ログイン済みのユーザーにはマイページやログアウトボタンを表示し、未ログインのユーザーにはログインフォームや新規登録リンクを表示するといったケースです。 こうした処理を分かりやすく、安全に実装できるのが、LaravelのBladeが提供する @auth@guest ディレクティブです。

Bladeテンプレートは、HTMLの中にPHPの処理をシンプルに書ける仕組みで、可読性が高く、初心者でも扱いやすいのが特徴です。 その中でも @auth は「ログインしているときだけ表示する」、@guest は「ログインしていないときだけ表示する」という役割を持っています。 if文を使って認証状態を判定する方法もありますが、Bladeディレクティブを使うことで、コードの意図が一目で分かるようになり、テンプレート全体がとても読みやすくなります。 これは、個人開発だけでなく、チーム開発においても大きなメリットになります。

実務でよく使われる表示切り替えの考え方

実際の開発現場では、ナビゲーションメニューやヘッダー部分で @auth@guest が頻繁に使われます。 ログイン中のユーザーにはユーザー名やログアウトリンクを表示し、ゲストにはログインや新規登録への導線を表示することで、ユーザー体験が大きく向上します。 また、Blade内で Auth::user() を使ってユーザー情報を表示する場合は、必ず @auth の中で使うことが重要です。 認証されていない状態でユーザー情報にアクセスするとエラーになるため、表示制御とセットで考える必要があります。

認証機能そのものがまだ導入されていない場合でも、Laravelには Breeze や Jetstream といった便利なスターターキットが用意されています。 これらを使えば、ログインや新規登録の機能を短時間で用意でき、すぐに @auth@guest を使った表示切り替えを試すことができます。 Bladeによる認証状態の判定は、Laravelを使ったWeb開発では基本中の基本となる知識なので、早い段階でしっかり理解しておくことが大切です。

認証状態による表示切り替えのサンプル

最後に、Bladeでよく使われる認証状態の表示切り替え例を改めて整理してみましょう。 ログインしているユーザーとゲストで、表示されるリンクが変わる基本的な構成です。


@auth
    <p>ようこそ、{{ Auth::user()->name }} さん</p>
    <a href="/logout">ログアウト</a>
@endauth

@guest
    <a href="/login">ログイン</a>
    <a href="/register">新規登録</a>
@endguest

このように書くだけで、Laravelが自動的に認証状態を判定し、適切な表示を行ってくれます。 複雑な条件分岐を書かなくてもよいため、テンプレートがすっきりし、後から見返したときも理解しやすくなります。 Bladeのディレクティブを正しく使うことで、見た目とロジックの役割分担が明確になり、保守性の高いコードを書くことができます。

先生と生徒の振り返り会話

生徒

「@auth と @guest を使うだけで、ログイン状態ごとの表示切り替えができるのは便利ですね。 if文を書かなくていいので、Bladeがすごく読みやすくなりました。」

先生

「そうですね。Bladeのディレクティブは、表示の意図がはっきり分かるのが大きな利点です。 特に認証まわりは、@auth と @guest を使うのが基本になります。」

生徒

「ログインしているときだけユーザー名を表示したり、ゲストにはログインリンクを出したりする理由もよく分かりました。」

先生

「その理解はとても大切です。 ユーザー体験を意識した表示切り替えは、Webアプリの使いやすさに直結しますからね。」

生徒

「これからLaravelで画面を作るときは、まず @auth と @guest を使えないか考えてみます。」

先生

「それは良い考えです。 Bladeでの認証状態の扱いを身につければ、Laravel開発が一段と楽になりますよ。」

カテゴリの一覧へ
新着記事
New1
Laravel
Laravelの認証状態をチェックする方法を完全解説!authとAuth::check()を初心者向けにやさしく説明
New2
CodeIgniter
CodeIgniterのコントローラクラスの作り方を完全ガイド!初心者でもわかる基礎から実践まで
New3
Symfony
Symfonyのフォームラベルを多言語対応!初心者でもわかる翻訳設定ガイド
New4
Laravel
Laravelでユーザー登録機能を作る方法!初心者向けにバリデーションとリダイレクトをやさしく解説
人気記事
No.1
Java&Spring記事人気No1
Laravel
Laravelのデータベース設定方法を完全ガイド!初心者でもわかる.envファイルの使い方
No.2
Java&Spring記事人気No2
Laravel
Laravelのビューとは?Bladeテンプレートの基本を解説
No.3
Java&Spring記事人気No3
Laravel
Laravelでセッションを扱う方法!保存方法と利用例を解説
No.4
Java&Spring記事人気No4
Laravel
Laravelのルート一覧を確認する方法!初心者でもわかるphp artisan route:listの使い方
No.5
Java&Spring記事人気No5
Laravel
Laravelでルーティングを設定する方法!web.phpと基本ルートの書き方を初心者向けに徹底解説
No.6
Java&Spring記事人気No6
Laravel
LaravelでルートをBladeテンプレートに記述する方法(route関数)
No.7
Java&Spring記事人気No7
Laravel
Laravelのルートキャッシュ機能を活用してパフォーマンス改善!初心者でもわかる完全ガイド
No.8
Java&Spring記事人気No8
Laravel
Laravelでログを出力する方法(Monolog・storage/logs)