Laravelの開発環境を構築する(Composer・Laravel Sail・Herd)
Laravelを始めるには、PHP 8.2以上とComposerが動く環境が必要です。かつてはXAMPPが定番でしたが、今はDocker製の「Laravel Sail」やmacOS向けの「Herd」を使えば数分で環境が整います。ここでは、その最短経路から最初のルーティングまでを一気に押さえましょう。
どの方法を選んでも、土台になるのはComposerです。まずはこの基本から確認します。
Composerを使ったプロジェクト作成の手順
新規プロジェクトはコマンド一発で作れます。ターミナルで次を実行すると、指定した名前のディレクトリにLaravel一式が展開されます。
composer create-project laravel/laravel example-app
cd example-app
php artisan serve
php artisan serveを叩けば、開発用サーバーがhttp://127.0.0.1:8000で立ち上がります。ブラウザでウェルカム画面が出れば成功です。PHPさえ動けば追加のミドルウェアは不要で、まず感触を掴むには十分な構成です。
Laravel SailとHerd、どちらを選ぶべきか
チーム開発で環境差をなくしたいならSailです。DockerでMySQLやRedisをまとめて起動でき、本番に近い構成を全員で共有できます。一方、macOSで手軽さを優先するならHerdが強力で、PHPのインストールを意識せずネイティブ速度で動きます。
迷ったら、EC-CUBE案件のように複数サービスを組み合わせる開発はSail、単独のプロトタイプ検証はHerド、と目的で切り分ければ判断がぶれません。
プロジェクトのディレクトリ構成と設定ファイルの読み解き方
生成直後は多くのフォルダに戸惑いますが、日常的に触るのは限られます。特に重要なのは次の3つです。
routes/:URLと処理の対応を定義する場所app/Http/Controllers/:リクエストを受け取る処理本体resources/views/:画面表示を担うBladeテンプレート
設定値はconfig/以下にまとまっていますが、これらは基本的に環境変数を参照します。つまり値を直接書き換えるのではなく、次に説明する.envを編集するのが正しい作法です。
.envファイルで管理する環境依存の設定
.envは、開発機・ステージング・本番で異なる値を切り分けるファイルです。データベース接続情報やアプリのURLなど、環境ごとに変わる設定はここに集約します。
重要なのは、このファイルをGit管理から外すことです。認証情報の漏洩を防ぐため、リポジトリには値を空にした.env.exampleだけを含め、実際の値は各環境で個別に設定します。デプロイ時のトラブルは、この.envの反映漏れが原因であることが少なくありません。
ルーティングの基本:URLと処理を結びつける
ルーティングとは、どのURLにアクセスされたら何を実行するかを決める対応表です。最もシンプルな形はroutes/web.phpに次のように書きます。
Route::get('/hello', function () {
return 'Hello Laravel';
});
/helloにアクセスすると、この無名関数が返す文字列がそのまま表示されます。この「URLと処理が一対一で結びつく」感覚を掴むことが、Laravel理解の入口です。
ルートパラメータと名前付きルートの使い方
URLの一部を動的に受け取りたいときは、波括弧でパラメータを定義します。Route::get('/users/{id}', ...)と書けば、{id}が関数の引数として渡されます。
ルートに->name('users.show')と名前を付ければ、テンプレート側でroute('users.show', $id)としてURLを生成できます。文字列を直書きせずに済むため、後からパス構造を変えても修正は一か所で済みます。
コントローラへのルーティングとリソースルート
処理が複雑になったら、無名関数ではなくコントローラに切り出します。php artisan make:controller UserControllerで雛形を作り、Route::get('/users', [UserController::class, 'index'])のように紐付けます。
CRUD一式ならRoute::resource('users', UserController::class)の一行で、一覧・作成・更新・削除に対応する7つのルートが自動生成されます。定型的な管理画面を素早く組むときに効く書き方です。
Bladeテンプレートで画面を表示するまでの流れ
最後に、実際の画面を返す流れです。コントローラでreturn view('users.index', ['users' => $users]);と書くと、resources/views/users/index.blade.phpが読み込まれ、渡した変数をテンプレート内で使えます。
Blade側では{{ $user->name }}のように変数を出力できます。この二重波括弧は自動でHTMLエスケープされるため、XSS対策も兼ねます。ルーティングでリクエストを受け、コントローラでデータを整え、Bladeで表示する——この三段構えがLaravel開発の基本リズムです。まずは小さな画面をひとつ、手を動かして完成させてみてください。