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 ファイルで管理する