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 を実行すると、登録されたルートと対応するコントローラーが一覧で確認できます。思ったページが出ないときは、まずここでルートが登録されているかを見るのが近道です。
よくあるつまずきと確認方法
起きやすい順に並べます。
- **
composer create-projectが途中で止まる**: 多くは PHP 拡張の不足か PHP のバージョン不足です。エラーメッセージにrequires php ^8.xやext-xxxと出ていれば、php -vとphp -mで該当箇所を確認し、拡張を追加します。 - 画面が真っ白、または 500 エラー:
storage/logs/laravel.logを開き、最後のほうに出ている例外を読みます。storage/とbootstrap/cache/に Web サーバーの実行ユーザーが書き込めないと、ログすら書けずに 500 になることがあります。権限を見直してください。 - 「No application encryption key has been specified.」:
.envのAPP_KEYが空です。php artisan key:generateで生成します。 - ルートを追加したのに 404:
php artisan route:listで登録を確認します。以前にphp artisan route:cacheを実行していると古いキャッシュが使われるため、php artisan route:clearで消してから試します。 - **
.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、各種キャッシュのクリアの順に確認する