2026年8月31日

2026年8月31日

LaravelのインストールとHello World表示までの手順

Laravel は Composer で新しいプロジェクトを作り、php artisan serve で開発用サーバーを起動すれば、数分でブラウザに「Hello World」を表示できます。この記事では、PHP と Composer の準備からプロジェクト作成、ルート・コントローラー・Blade ビューでの Hello World、そしてつまずきやすいエラーの見分け方までを順に説明します。読み終えるころには、Laravel の「リクエストがどこを通って画面になるか」が一通りつかめるはずです。

前提と動作環境の確認

Laravel はメジャーバージョンごとに必要な PHP のバージョンが決まっています。たとえば Laravel 12 は PHP 8.2 以上が要件で、新しいメジャー版ほど下限が上がる傾向があります。最新の要件は公式ドキュメントの「Installation」と「Deployment」のページで確認してください(2026年10月現在)。この記事の手順は、Laravel 11 以降の「bootstrap/app.php を中心にしたスリムな構成」を前提にしています。

まず、ターミナルで次の3つが動くかを確かめます。

php -v
composer -V
php -m

php -m は読み込まれている拡張モジュールの一覧です。Laravel は mbstring、openssl、pdo、tokenizer、xml、ctype、fileinfo などを使います。ディストリビューションのパッケージで PHP を入れた場合、php-mbstring や php-xml が別パッケージになっていて、プロジェクト作成の途中で止まる原因になりがちです。

ローカル環境をまとめて用意したい場合は、Laravel 公式の Laravel Herd(macOS / Windows)や、Docker ベースの Laravel Sail を使う方法もあります。どれを選んでもプロジェクトの中身は同じなので、まずは手元で PHP と Composer が動く状態を作れば十分です。

プロジェクトを作成する

Composer で作る方法

いちばん依存が少ないのは Composer の create-project です。

composer create-project laravel/laravel hello-app
cd hello-app

このコマンドは Laravel の雛形をダウンロードし、依存パッケージを vendor/ に入れ、.env.example を .env にコピーし、アプリケーションキー(APP_KEY)を生成するところまで自動で行います。Laravel 11 以降はデータベースの既定値が SQLite になっており、database/database.sqlite を作ってマイグレーションまで流すので、MySQL を用意しなくてもすぐ動かせます。

Laravel インストーラーを使う方法

React・Vue・Livewire などのスターターキットを選びながら作りたい場合は、Laravel インストーラーが便利です。

composer global require laravel/installer
laravel new hello-app

対話形式でスターターキットやテストフレームワーク、データベースを選べます。質問項目はインストーラーのバージョンで変わるため、画面の表示に従って選んでください。laravel コマンドが見つからない場合は、Composer のグローバル bin ディレクトリに PATH が通っていないのが原因です。composer global config bin-dir --absolute で場所を確認し、シェルの PATH に追加します。

開発用サーバーを起動する

プロジェクトのディレクトリで次を実行します。

php artisan serve

http://127.0.0.1:8000 をブラウザで開き、Laravel のウェルカムページが出れば成功です。ポートが使用中なら php artisan serve --port=8080 のように変えられます。

最近の雛形では composer run dev というスクリプトも用意されており、開発サーバー・キューワーカー・ログ表示・Vite(フロントエンドのビルド)を同時に起動できます。CSS や JavaScript を触り始めたらこちらが便利ですが、Hello World の段階では php artisan serve だけで足ります。

なお、php artisan serve はあくまで開発用です。本番では Nginx や Apache と PHP-FPM の組み合わせで動かし、Web サーバーのドキュメントルートを public/ ディレクトリに向けます。プロジェクトの一番上をドキュメントルートにすると .env などが外から読める危険があるため、ここは最初に押さえておいてください。

Hello World を表示する

ルートでいちばん短く書く

routes/web.php を開き、次のルートを追加します。

<?php

use Illuminate\Support\Facades\Route;

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

http://127.0.0.1:8000/hello を開くと「Hello World」と表示されます。クロージャーが返した文字列が、そのまま HTTP レスポンスの本文になるという仕組みです。

URL の一部を受け取ることもできます。

Route::get('/hello/{name}', function (string $name) {
    return view('hello', ['name' => $name]);
});

こちらは次の Blade ビューと組み合わせて使います。

Blade ビューで表示する

resources/views/hello.blade.php を作ります。

<!DOCTYPE html>
<html lang="ja">
<head>
    <meta charset="UTF-8">
    <title>Hello</title>
</head>
<body>
    <h1>Hello, {{ $name }}!</h1>
</body>
</html>

{{ $name }} は値を HTML エスケープして出力します。URL から受け取った値をそのまま画面に出す場面なので、ここでエスケープされることが重要です。エスケープしない {!! $name !!} は、中身が安全だと分かっている HTML 以外には使わないでください。/hello/Taro を開いて「Hello, Taro!」と出れば成功です。

コントローラーに分ける

処理が増えてきたら、ルートのクロージャーからコントローラーに移します。

php artisan make:controller HelloController
<?php

namespace App\Http\Controllers;

class HelloController extends Controller
{
    public function show(string $name = 'World')
    {
        return view('hello', ['name' => $name]);
    }
}
use App\Http\Controllers\HelloController;

Route::get('/hello/{name?}', [HelloController::class, 'show']);

{name?} の ? はパラメーターを省略可能にする記号で、省略時はメソッド側の既定値 'World' が使われます。php artisan route:list を実行すると、登録されたルートと対応するコントローラーが一覧で確認できます。思ったページが出ないときは、まずここでルートが登録されているかを見るのが近道です。

よくあるつまずきと確認方法

起きやすい順に並べます。

  1. **composer create-project が途中で止まる**: 多くは PHP 拡張の不足か PHP のバージョン不足です。エラーメッセージに requires php ^8.x や ext-xxx と出ていれば、php -v と php -m で該当箇所を確認し、拡張を追加します。
  2. 画面が真っ白、または 500 エラー: storage/logs/laravel.log を開き、最後のほうに出ている例外を読みます。storage/ と bootstrap/cache/ に Web サーバーの実行ユーザーが書き込めないと、ログすら書けずに 500 になることがあります。権限を見直してください。
  3. 「No application encryption key has been specified.」: .env の APP_KEY が空です。php artisan key:generate で生成します。
  4. ルートを追加したのに 404: php artisan route:list で登録を確認します。以前に php artisan route:cache を実行していると古いキャッシュが使われるため、php artisan route:clear で消してから試します。
  5. **.env を書き換えても反映されない**: php artisan config:cache を実行済みだと、.env ではなくキャッシュが読まれます。php artisan config:clear で解除します。

開発中は .env の APP_DEBUG=true で詳しいエラー画面が出ますが、本番では APP_DEBUG=false にします。デバッグ画面には環境変数や内部パスが表示されるため、公開サーバーで有効のままにしないでください。

次に進むときのポイント

Hello World が出たら、次はデータベースとの接続、認証、ミドルウェアと広げていくのが自然な流れです。.env はリポジトリにコミットせず、.env.example に項目名だけを残しておく運用にしておくと、チーム開発や本番デプロイのときに困りません。Composer のパッケージを追加したときは composer.lock もコミットして、全員が同じバージョンで動かせるようにしておきます。

まとめ

  • Laravel の要件はメジャー版ごとに違うため、公式ドキュメントで PHP のバージョンと拡張を先に確認する
  • composer create-project laravel/laravel か Laravel インストーラーでプロジェクトを作り、php artisan serve で表示を確かめる
  • Hello World は routes/web.php のクロージャー、Blade ビュー、コントローラーの順に書き方を広げると構造が理解しやすい
  • 出力は {{ }} でエスケープし、本番ではドキュメントルートを public/、APP_DEBUG=false にする
  • 表示されないときは storage/logs/laravel.log、route:list、各種キャッシュのクリアの順に確認する

お気軽にご相談ください

お見積りへ お問い合わせへ
▲