Laravel - 3. プロジェクトの構成
ここではLaravelプロジェクト( hello_laravel フォルダ)の中身について確認しておきましょう。まずは各フォルダの役割について見ていきます。
| フォルダ名 | 用途 |
|---|---|
| app | アプリケーションの主要なプログラムを配置する |
| bootstrap | フレームワークの初期化を行うファイルやキャッシュファイルなどを配置する |
| config | 設定ファイルを配置する |
| database | データベースのマイグレーション、ファクトリー、シードデータなどを配置する |
| public | 公開フォルダ。画像やJavaScript、CSSなどのアセットを配置する |
| resources | ビューなどの未コンパイルのファイルや、言語ファイルなどを配置する |
| routes | アプリケーションのルート定義を管理する |
| storage | コンパイル済みのBladeテンプレート、セッション情報、ログファイルなどを管理する |
| tests | 自動テストプログラムを配置する |
| vendor | Composerによって取得したライブラリを配置する |
最初からすべてのフォルダの役割を理解することは難しいので、実際にアプリケーションの開発を進めながら各フォルダの使い方について学習していきましょう。現時点では、これから開発するプログラムの多く(コントローラやモデルなど)は app フォルダに配置し、ビューファイルは resources フォルダ、データベースに関係するものは database フォルダに配置する、程度に見ておきましょう。
続いて hello_laravel フォルダ直下に作成されているファイルについても確認しておきましょう。
| ファイル名 | 用途 |
|---|---|
| README.md | アプリケーションの説明書き |
| artisan | php artisan コマンドの実行ファイル |
| composer.json | composerのパッケージ管理ファイル |
| composer.lock | composerのパッケージ管理ファイル(依存性を解決済みのもの) |
| package.json | Node.jsのパッケージ管理ファイル |
| phpunit.xml | PHPUnitの設定ファイル |
| server.php | ビルトインサーバの起動ファイル |
| webpack.mix.js | フロントエンドのアセットをバンドルするLaravel Mix(webpack)の設定ファイル |
| .env | 環境変数を設定するファイル |
| .env.example | 環境変数の設定のサンプルファイル |
他にも
.gitignoreファイルなどいくつかの隠しファイルも生成されます。
PHPのバージョン確認やビルトインWebサーバの起動に利用した php artisan コマンドで指定した artisan ファイルや、composerのパッケージ管理ファイルである composer.json ファイルや composer.lock などがあります。これらの中で一つ重要なのは .env ファイルです。 .env ファイルには環境変数に登録する変数を定義します。具体的にはデータベースとの接続情報や、セッションの管理方法、メールサーバの設定などを定義します。
php artisanコマンドはLaravelのコマンドラインインタフェースです。以降の開発の中で利用方法を学習します。
.env ファイルの修正
それでは以降の開発の準備として .env ファイルを修正してデータベースへの接続情報を定義しておきましょう。まずデフォルトの .env ファイルを確認しておきましょう。
APP_NAME=Laravel
APP_ENV=local
APP_KEY=base64:XPw7R5TmXNmhz3UbTqWkbrsgGSKPougbKtpYSmiOnq4=
APP_DEBUG=true
APP_URL=http://localhost
LOG_CHANNEL=stack
DB_CONNECTION=mysql
DB_HOST=db
DB_PORT=3306
DB_DATABASE=laravel
DB_USERNAME=root
DB_PASSWORD=root
BROADCAST_DRIVER=log
CACHE_DRIVER=file
QUEUE_CONNECTION=sync
SESSION_DRIVER=database
SESSION_LIFETIME=120
REDIS_HOST=127.0.0.1
REDIS_PASSWORD=null
REDIS_PORT=6379
MAIL_DRIVER=smtp
MAIL_HOST=smtp.mailtrap.io
MAIL_PORT=2525
MAIL_USERNAME=null
MAIL_PASSWORD=null
MAIL_ENCRYPTION=null
MAIL_FROM_ADDRESS=null
MAIL_FROM_NAME="${APP_NAME}"
AWS_ACCESS_KEY_ID=
AWS_SECRET_ACCESS_KEY=
AWS_DEFAULT_REGION=us-east-1
AWS_BUCKET=
PUSHER_APP_ID=
PUSHER_APP_KEY=
PUSHER_APP_SECRET=
PUSHER_APP_CLUSTER=mt1
MIX_PUSHER_APP_KEY="${PUSHER_APP_KEY}"
MIX_PUSHER_APP_CLUSTER="${PUSHER_APP_CLUSTER}"
上記の設定情報の中からデータベース接続部分を以下のように編集します。
DB_CONNECTION=pgsql
DB_HOST=localhost
DB_PORT=5432
DB_DATABASE=laravel
DB_USERNAME=dbuser
DB_PASSWORD=dbpass
ここではPostgreSQLへの接続情報を定義しています。接続先のホストに localhost 、接続先ポートに 5432 、PostgreSQLの接続先データベースを laravel 、ユーザを dbuser 、パスワードを dbpass としています。
ユーザ名やパスワードなどについては開発環境に合わせて修正してください。
参考 - PostgreSQLの準備
以降の学習を進めていくために、PostgreSQL上に laravel データベースを作成します。PostgreSQLのクライアントツールを起動して以下のように入力します。
laravel=# create database laravel;
CREATE DATABASE
コマンドが成功したら \l コマンドを使ってデータベースが作成できているか確認しておきましょう。
laravel=# \l
List of databases
Name | Owner | Encoding | Collate | Ctype | Access privileges
-----------+--------+----------+------------+------------+-------------------
laravel | dbuser | UTF8 | en_US.utf8 | en_US.utf8 |
postgres | dbuser | UTF8 | en_US.utf8 | en_US.utf8 |
template0 | dbuser | UTF8 | en_US.utf8 | en_US.utf8 | =c/dbuser +
| | | | | dbuser=CTc/dbuser
template1 | dbuser | UTF8 | en_US.utf8 | en_US.utf8 | =c/dbuser +
| | | | | dbuser=CTc/dbuser
(4 rows)
また \c コマンドを使って作成した laravel データベースに接続しておきましょう。
laravel=# \c laravel
You are now connected to database "laravel" as user "dbuser".
まとめ
- Laravelでは規定のプロジェクトの構成に従ってプログラムを開発する
appフォルダにコントローラやモデルといったプログラムを配置し、resourcesフォルダにビューを配置する- データベースの接続情報は
.envファイルで管理する