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開発の基本リズムです。まずは小さな画面をひとつ、手を動かして完成させてみてください。

カスタマイズに関するお問い合わせはこちら