【Laravel】10分で理解する「Hello World!」の表示と画面描画(Blade)の仕組み

Laravel

Laravelを学び始めたとき、最初に触れるのが「ルーティング」と「ビュー(テンプレートエンジン)」です。

この記事では、まず最もシンプルな routes/web.php で文字を表示する方法を試したあと、Laravelのテンプレートエンジンである Blade(ブレイド) ファイルを使って画面を描画します。後半では、ブラウザでアクセスしてから画面が表示されるまでの「仕組み」を分かりやすく解説します。

前提条件

XAMPPの Apache を起動し、htdocs 内のプロジェクト my-app にアクセスできる状態(http://localhost/my-app/public/)で進めます。

ステップ1:routes/web.php で直接「Hello World!」を表示する

Laravelのルーティング(URLと処理の紐付け)は、主に routes/web.php というファイルで管理されています。

1. コードの書き換え

routes/web.php を開き、次のように記述(または書き換え)します。

PHP
<?php

use Illuminate\Support\Facades\Route;

Route::get('/', function () {
    return 'Hello World!';
});

2. 動作確認

ブラウザで以下にアクセスします。

http://localhost/my-app/public/

画面にテキストで Hello World! と表示されれば成功です。


ステップ2:Bladeファイルを使って「Hello World!」を表示する

実際のWeb開発では、PHPファイル内に直接文字列を返すのではなく、HTMLを表示させるのが一般的です。Laravelでは Blade(ブレイド) というテンプレートエンジンを使います。

1. Bladeファイルの作成

resources/views ディレクトリの中に、hello.blade.php という名前で新しいファイルを作成します。

resources/views/hello.blade.php

HTML
<!DOCTYPE html>
<html lang="ja">
<head>
    <meta charset="UTF-8">
    <title>Hello World</title>
</head>
<body>
    <h1>Hello World!</h1>
    <p>Bladeテンプレートから出力しています。</p>
</body>
</html>

2. ルーティングの書き換え

routes/web.php を開き、先ほど作成したBladeファイルを呼び出すように変更します。

resources/views/hello.blade.php を指定する形に書き換えます。

routes/web.php

PHP
<?php

use Illuminate\Support\Facades\Route;

Route::get('/', function () {
    return view('hello');
});

ポイント: view('hello')'hello' は、resources/views/hello.blade.phphello 部分に対応しています(拡張子の .blade.php は省略します)。

3. 動作確認

再度ブラウザで http://localhost/my-app/public/ にアクセスします。大きな見出しで Hello World! と表示されていれば完了です。

なぜ動くの?Laravelの「仕組み」を解説

今回行った操作の裏側で、Laravelがどのようにリクエストを処理しているかを解説します。

1. リクエストの入口(public/index.php)

ブラウザでURLにアクセスすると、まずLaravelプロジェクトの public/index.php が呼び出されます。ここがすべての処理の入口(フロントコントローラー)となります。

2. ルーティング(Route)の役割

Route::get('/', ...) は、「トップページ(/)へのアクセスが来たら、この中の処理を実行する」 という指示(ルーター)です。

  • 第一引数('/': URLのパスを指定します。
  • 第二引数(無名関数): そのURLにアクセスされた時に実行する処理を書きます。
PHP
Route::get('/', function () {
    return 'Hello World!';
});

Route::get('/', function () {
    return view('hello');
});

3. view() ヘルパー関数の役割

ステップ2で使用した view('hello') は、Laravelに用意されている便利関数です。

  1. resources/views/ の中から指定された名前(hello.blade.php)を探す。
  2. Bladeファイルを解析して通常のHTMLに変換(コンパイル)する。
  3. 完成したHTMLをブラウザに返す。
web.php
Route::get('/', function () {
    return view('hello');
});
hello.blade.php
<!DOCTYPE html>
<html lang="ja">
<head>
    <meta charset="UTF-8">
    <title>Hello World</title>
</head>
<body>
    <h1>Hello World!</h1>
    <p>Bladeテンプレートから出力しています。</p>
</body>
</html>

全体の処理の流れ

[ ユーザー (ブラウザ) ]
        │  ① http://localhost/my-app/public/ にアクセス
        ▼
[ public/index.php ]
        │  ② Laravelのフレームワークを起動
        ▼
[ ルーティング (routes/web.php) ]
        │  ③ URL判定 ➔ view('hello') を呼び出す
        ▼
[ ビュー (resources/views/hello.blade.php) ]
        │  ④ HTMLを生成
        ▼
[ ユーザー (ブラウザ) ] ➔ ⑤ HTMLを受け取って画面表示
  • ステップ1 では、ビューを挟まずにルーティングから直接文字列を返していました。
  • ステップ2 では、ルーティングが「ビュー(Blade)」を呼び出し、HTMLを組み立てて出力する処理になりました。

まとめ

  • routes/web.php でURLと処理の紐付けを行う。
  • resources/views/xxxx.blade.php にHTML(画面見た目)を書く。
  • Route::get() 内で view('xxxx') を返すことで画面を表示できる。

まずはこの「ルーティング ➔ ビューで画面表示」という基礎の流れを押さえておきましょう。

コメント