Laravelの@includeで部分テンプレートを読み込もう!初心者向けBladeテンプレート入門
生徒
「Laravelで同じHTMLを何回も書くのが面倒なんです。もっと楽に使いまわせる方法ってありますか?」
先生
「Laravelでは、Bladeテンプレートの@includeディレクティブを使うことで、HTMLの共通部分を簡単に読み込めますよ。」
生徒
「それってどうやって使うんですか?」
先生
「それでは、@includeの基本的な使い方を分かりやすく説明していきましょう!」
1. Bladeテンプレートの@includeとは?
LaravelのBladeテンプレートでは、HTMLの一部を分けて別ファイルにし、必要な場所で再利用できます。そのときに使うのが@includeディレクティブです。
@includeを使えば、ヘッダー・フッター・メニューなど、何度も使う部品を簡単に読み込めるようになります。これにより、ファイルの見通しが良くなり、コードの重複も減らせて効率アップです。
2. Bladeで@includeを使う基本の書き方
例えば、共通のヘッダーを表示したいときは、次のようなコードを書きます。
@include('partials.header')
これは、resources/views/partials/header.blade.phpというファイルを読み込む、という意味です。.blade.phpは書かなくてOKです。
3. 部分テンプレートの中身を作ってみよう
実際に、共通のヘッダーを作るとしたら、次のような内容になります。
<!-- resources/views/partials/header.blade.php -->
<header>
<h1>マイサイトのタイトル</h1>
<nav>
<a href="/">ホーム</a>
<a href="/about">このサイトについて</a>
</nav>
</header>
このようにしておけば、別のテンプレートファイルからいつでも@includeで呼び出せるようになります。
4. 変数を@includeに渡す方法
@includeでは、読み込むテンプレートにデータ(変数)を渡すこともできます。次のように書きます。
@include('partials.userinfo', ['name' => 'たろう'])
こうすると、partials/userinfo.blade.phpの中で、$nameという変数が使えるようになります。
<!-- resources/views/partials/userinfo.blade.php -->
<p>こんにちは、{{ $name }}さん!</p>
こんにちは、たろうさん!
5. 繰り返し使える部品として考えよう
@includeは、HTMLの「部品(パーツ)」を作っておいて、必要なときに組み合わせるような感覚です。
例えば、プラモデルを作るとき、頭や手、足を別々のパーツで作って最後に合体させますよね?LaravelのBladeテンプレートも同じで、@includeを使えば、パーツごとの管理が簡単になります。
6. @includeを使う上での注意点
ファイル名のスペルミスや、ディレクトリの構造を間違えると、Bladeで@includeが正しく動かなくなります。
ファイルは必ずresources/views/以下に置いてください。また、フォルダ名やファイル名は半角英数字で、拡張子は.blade.phpにします。
また、テンプレートの変更がすぐに反映されない場合は、キャッシュが残っている可能性があります。そのときは次のコマンドを使ってキャッシュをクリアしましょう。
php artisan view:clear
7. @includeと@includeIf、@includeWhenの違い
Bladeには他にも似た機能があります。
@includeIf:指定したテンプレートが存在すれば読み込み、なければ無視します。@includeWhen:指定した条件がtrueのときだけテンプレートを読み込みます。
初めのうちは@includeだけでも十分ですが、覚えておくと便利ですよ。
まとめ
Laravelの@includeディレクティブは、Bladeテンプレートの中で繰り返し利用するヘッダーやフッター、メニュー、ユーザー情報といった「部分テンプレート」を効率よく読み込むための重要な仕組みです。今回の記事では、基本的な@includeの使い方から、変数の受け渡し、テンプレートの構造を整える考え方、さらには@includeIf・@includeWhenといった派生ディレクティブとの使い分けまで、テンプレート開発に必要な基礎知識を幅広く学びました。 BladeはLaravelの大きな特徴であり、その柔軟な構文によって開発効率が大きく向上します。特に@includeは、重複したHTMLの量を減らしてコードを整理し、保守性と拡張性を高められるため、Laravel学習者にとって必ず身につけておきたい機能です。複数ページで共通するレイアウトが増えるほど、@includeの効果は大きくなり、部品ごとにファイルを分けることで可読性が向上し、チーム開発でも混乱が起きにくくなります。 また、変数を@includeに渡す仕組みを理解しておくと、ユーザー情報やカスタムメッセージなど動的なデータも柔軟に扱えます。パーツを単なる静的なテンプレートとして使うのではなく、Laravelアプリケーションのロジックと連動して動く「再利用可能なコンポーネント」として活かすことができます。BladeはVueやReactと違いコンポーネント指向の仕組みを持ちませんが、@includeを活用することで似たような構成を実現でき、初心者でも整理されたテンプレート構造を作れるようになります。 加えて、@includeIfや@includeWhenを併用することで、テンプレートの存在チェックや条件付きの読み込みなど、状況に応じた制御も行えます。例えばログイン中のみユーザーメニューを表示するケースや、テンプレートファイルが存在する場合にだけ特定のパーツを挿入したい場面で役に立つ構文です。また、テンプレートの更新が反映されない時にはviewキャッシュのクリアが必要になる点も押さえておくべき知識です。 このように@includeは、Laravelの画面設計を組み立てるうえで欠かせないディレクティブであり、ページ構造を自然に整理するための基盤となります。Bladeの機能を習慣として使いこなすことで、開発のスピードを高めながら、誰が見ても理解しやすいテンプレートを作成できるようになるでしょう。
部分テンプレート活用サンプル
下記は、共通レイアウトの中で@includeを複数利用して画面を構成する実践的な例です。
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<title>サンプルアプリ</title>
</head>
<body>
@include('partials.header')
<main class="container mt-4">
@yield('content')
</main>
@include('partials.footer')
</body>
</html>
<header class="p-3 bg-light">
<h1>共通ヘッダー</h1>
@include('partials.nav')
</header>
<nav>
<a href="/">ホーム</a>
<a href="/about">サイトについて</a>
</nav>
このように、ページ全体のレイアウトファイルから複数の部分テンプレートを@includeで取り込むことで、構造をシンプルに保ちながら柔軟な拡張ができます。
生徒
「@includeってすごく便利ですね!同じHTMLを書かずに済むので、テンプレートがスッキリしました。」
先生
「そうなんです。Bladeで画面を作るときは、重複を減らして再利用できる構造を作ることがとても大切ですよ。」
生徒
「部分テンプレートに変数を渡せるのも助かります。ページごとの表示内容を柔軟に変えられますね。」
先生
「はい。Bladeは軽量で扱いやすいので、Laravel初心者でも自然にテンプレート構成を学べます。」
生徒
「@includeIfや@includeWhenも便利そうですね。条件によって表示を切り替えたい時に使えそう。」
先生
「用途に応じて使い分ければ、もっと効率よくテンプレートを組み立てられるようになりますよ。」