【Laravel】開発環境のセットアップとプロジェクト作成
はじめに
私は主にモバイルエンジニアとして勤務しています。ですが、本業のプロジェクトのサーバーサイドは Laravel を採用しており、触る機会が増えてきたので入門してみます。
必要な準備
Laravel を始めるには以下のものが必要です:
- PHP
- Composer(PHP のパッケージ管理ツール)
- データベース(MySQL など)
- Web サーバー(Apache や Nginx)
1. PHP のインストール
macOS の場合
Homebrew を使ってインストールするのが簡単です:
brew install php
インストール確認
ターミナルまたはコマンドプロンプトで以下のコマンドを実行:
php -v
以下のように Version が表示されれば OK
PHP 8.4.4 (cli) (built: Feb 11 2025 15:36:20) (NTS)
Copyright (c) The PHP Group
Built by Homebrew
Zend Engine v4.4.4, Copyright (c) Zend Technologies
with Zend OPcache v8.4.4, Copyright (c), by Zend Technologies
2. Composer のインストール
Composer は、PHP のパッケージ管理ツールで、Laravel プロジェクトの作成や依存パッケージの管理に必須です。
macOS の場合
ターミナルで以下のコマンドを実行:
curl -sS https://getcomposer.org/installer | php
sudo mv composer.phar /usr/local/bin/composer
chmod +x /usr/local/bin/composer
コマンド内容
-
curl -sS https://getcomposer.org/installer | php
- Composer のインストーラーをダウンロードして実行します
-
-sS
オプションは「サイレントモード」でエラー時のみ出力を表示します
-
sudo mv composer.phar /usr/local/bin/composer
- ダウンロードされた
composer.phar
ファイルをシステムの実行パス上に移動します -
/usr/local/bin/
はシステム全体からアクセス可能な実行ファイルの標準的な場所です -
sudo
は管理者権限でこの操作を実行します
- ダウンロードされた
-
chmod +x /usr/local/bin/composer
- composer ファイルに実行権限を付与します
- これにより、
composer
コマンドをどこからでも実行できるようになります
インストール確認
composer --version
以下のように Version が表示されれば OK
Composer version 2.8.6 2025-02-25 13:03:50
PHP version 8.4.4 (/opt/homebrew/Cellar/php/8.4.4/bin/php)
Run the "diagnose" command to get more detailed diagnostics output.
3. PostgreSQL のインストール
macOS の場合
Homebrew を使ってインストールします:
brew install postgresql
インストール確認
psql --version
以下のように Version が表示されれば OK
psql (PostgreSQL) 14.17 (Homebrew)
4. PostgreSQL の設定
データベースの作成
PostgreSQL のコマンドラインツールにログインします:
# macOSの場合
psql postgres
エラー出力
上記のコマンドを実行すると以下のエラーありました。
psql: error: connection to server on socket "/tmp/.s.PGSQL.5432" failed: No such file or directory
Is the server running locally and accepting connections on that socket?
PostgreSQL サーバーが実行されていないか、デフォルトのソケットファイルが見つからないエラーを出力しています。
エラー対応
PostgreSQL サービスの状態を確認します。
Name Status User File
php none
postgresql@14 none
そもそも起動していなかったため、起動します。
brew services start postgresql
==> Successfully started `postgresql@14` (label: homebrew.mxcl.postgresql@14)
成功しましたが、念の為サービス状態を確認します。
Name Status User File
php none
postgresql@14 started 〇〇 ~/Library/LaunchAgents/homebrew.mxcl.postgresql@14.plist
起動しました。
再度、以下を実行します。
# macOSの場合
psql postgres
以下の出力であれば OK です。
psql postgres
psql (14.17 (Homebrew))
Type "help" for help.
postgres=#
この状態は、「postgres」データベースに接続し、データベース管理者として操作できる状態であることを示しています(#記号は管理者権限を表します)。
psql での SQL 操作方法
この状態では SQL コマンドを入力でき、データベースの操作(テーブルの作成、データの挿入、クエリの実行など)を行うことができます。例えば以下のようなコマンドが使えます:
\l - データベース一覧の表示
\dt - テーブル一覧の表示
\d テーブル名 - テーブル構造の表示
\q - psql の終了
データベースを作成します:
CREATE DATABASE todo_app;
CREATE USER todo_user WITH ENCRYPTED PASSWORD 'your_password';
GRANT ALL PRIVILEGES ON DATABASE todo_app TO todo_user;
\q
上記の SQL 文の詳細について
CREATE DATABASE todo_app;
新しいデータベース「todo_app」を作成しています
このデータベースが、TODO アプリケーションのすべてのデータを格納する場所となります
CREATE USER todo_user WITH ENCRYPTED PASSWORD 'your_password';
「todo_user」という名前の新しいデータベースユーザーを作成しています
このユーザーにはパスワード「your_password」が設定されます(実際の使用時には強力なパスワードに変更すべきです)
ENCRYPTED 指定により、パスワードはデータベース内に安全に暗号化された形式で保存されます
GRANT ALL PRIVILEGES ON DATABASE todo_app TO todo_user;
作成したユーザー「todo_user」に、「todo_app」データベースに対するすべての権限を付与しています
これにより、このユーザーはデータベース内でテーブルの作成・変更・削除、データの挿入・更新・削除などすべての操作が可能になります
5. Laravel プロジェクトの作成
新しい Laravel プロジェクトの作成
ターミナルまたはコマンドプロンプトで、プロジェクトを作成したいディレクトリに移動し、以下のコマンドを実行します:
composer create-project laravel/laravel todo-app
todo-app
は作成するプロジェクト名です。任意の名前に変更可能です。
プロジェクトディレクトリへの移動
cd todo-app
VSCode を開く
code .
すると以下のような構成の Laravel プロジェクトが作成されています。
7. 基本設定ファイルの確認と編集
環境設定ファイル(.env)
Laravel プロジェクトのルートディレクトリには、.env
ファイルが作成されています。PostgreSQL 用に設定を変更します:
APP_NAME=TodoApp
APP_ENV=local
APP_KEY=base64:ランダムな文字列
APP_DEBUG=true
APP_URL=http://localhost
DB_CONNECTION=pgsql
DB_HOST=127.0.0.1
DB_PORT=5432
DB_DATABASE=todo_app
DB_USERNAME=todo_user
DB_PASSWORD=your_password
8. データベース設定の確認
config/database.php
ファイルを開き、PostgreSQL の設定を確認します:
// PostgreSQL設定部分
'pgsql' => [
'driver' => 'pgsql',
'url' => env('DATABASE_URL'),
'host' => env('DB_HOST', '127.0.0.1'),
'port' => env('DB_PORT', '5432'),
'database' => env('DB_DATABASE', 'todo_app'),
'username' => env('DB_USERNAME', 'todo_user'),
'password' => env('DB_PASSWORD', 'your_password'),
'charset' => 'utf8',
'prefix' => '',
'prefix_indexes' => true,
'search_path' => 'public',
'sslmode' => 'prefer',
],
設定後にサーバーを立ち上げます。
php artisan serve
エラー出力
ですが、ここでエラーが出力されます。
Database file at path [todo_app] does not exist. Ensure this is an absolute path to the database. (Connection: sqlite, SQL: select * from "sessions" where "id" = y9hiW5fhn9s5LmpoUOyNIVtdaMM6U82JjFn9GjDp limit 1)
データベースファイルが存在しないとエラーが出力されます。
エラー対応
config/database.php ファイルを開いて、デフォルト接続が正しく設定されているか確認します。
'default' => env('DB_CONNECTION', 'mysql'),
この行が DB_CONNECTION 環境変数の値を使用していることを確認します。もし直接'default' => 'sqlite'
などと設定されていたら、'default' => env('DB_CONNECTION', 'pgsql')
に変更します。
エラー出力
再度、立ち上げるもエラーが出力されます。
SQLSTATE[42P01]: Undefined table: 7 ERROR: relation "sessions" does not exist LINE 1: select *** from "sessions" where "id" = $1 limit 1 ^ (Connection: pgsql, SQL: select * from "sessions" where "id" = gtZtQVHcfVhOtZSiBJKkvHDVFXw2H1sa0SBZ8FwE limit 1)**
PostgreSQL に「sessions」テーブルが存在しないというエラーです。
デフォルトでセッションデータを保存するために「database」ドライバーを使用するよう設定されているからです。
なぜセッションテーブルが必要なのか?
セッション管理の仕組み:
Web アプリケーションはステートレス(状態を保持しない)な HTTP プロトコル上で動作しています
ユーザーの状態(ログイン情報など)を維持するためにセッションを使用します
セッションデータは一時的な情報で、どこかに保存する必要があります
Laravel のセッション保存方法は他にもあります。
ドライバー名 | 保存先 | 特徴 |
---|---|---|
file | サーバーのファイルシステム | デフォルト設定、シンプルで導入しやすい |
database | データベースのテーブル | SQL データベースにセッション情報を保存 |
redis | Redis キャッシュ | 高速なキー・バリュー型ストアを利用 |
memcached | Memcached | 分散メモリキャッシュシステム |
cookie | 暗号化されたクッキー | クライアント側で保存 |
array | PHP の配列 | テスト用、リクエスト後に消える |
エラー対応
セッションテーブルを作成します。
php artisan session:table
ですが、
Migration already exists.
と出力されます。
マイグレーションの実行
マイグレーションの実行を忘れていました。
php artisan migrate
マイグレーションを実行します。
Preparing database.
Creating migration table .............. 23.70ms DONE
INFO Running migrations.
0001_01_01_000000_create_users_table ............. 13.44ms DONE
0001_01_01_000001_create_cache_table ........ 3.65ms DONE
0001_01_01_000002_create_jobs_table ......... 9.34ms DONE
と出力されれば OK
9. 開発サーバーの起動
Laravel には開発用の簡易サーバーが内蔵されています。以下のコマンドで起動できます:
php artisan serve
コマンドを実行すると、通常はhttp://127.0.0.1:8000
でアプリケーションにアクセスできます。
Laravel 初期画面
初期の立ち上げ画面が表示されたので、環境構築としては OK です。
参考資料
Discussion