はじめに
Laravelを理解するため実際に簡単なシステムを作ってみよう!それを後で見返せるようにしておこう!という記録です。
もともとPHPの学習のために「PHPのみ」で作っていたものを、Laravelで再現しようとしています。
元のシステム
- ログイン
- アカウント作成
- アカウント情報編集
- アカウント一覧
- アカウント削除
今回はLaravelのインストールから初期設定や起動まで行います。
Laravelのインストール
composer create-project laravel/laravel hoge
最初にやること
■依存パッケージのインストール
// コンポーザーのインストール
composer install
// npmのインストール
npm install
Composerとは
・PHPの部品係
・composer.jsonに部品のリストがあり、comporser installでそれをプロジェクトのvenderフォルダに入れてくれる。
・データベース用の部品や暗号化の部品などがvenderフォルダに入る。
・venderがないとLaravelは動かない。
・バージョンもチェックして組み合わさるセットだけを選んでくれる。
npmとは
・JavaScript の部品係
・フロント側の部品係でpackage.jsonに部品のリストがあり、npm installで部品を集めてnode_modulesフォルダに入れてくれる。
・npm run devなどのように部品を動かすこともしてくれる。
・Laravelでは主にViteやTailwind CSSのために使われる
・Vite … CSS や JavaScript をまとめて、ブラウザが読める形にする
・Tailwind … ボタンやレイアウトの見た目を整える
Laravel を動かすだけなら Composer だけで足りることもあります。きれいな画面やスタイルを使うなら、npm も必要になります。
■.envファイルの作成
//最低限の内容
APP_NAME="Hoge" //アプリ名
APP_ENV=local // 開発環境
APP_KEY= // アプリケーションキー(空欄だと動かない。php artisan key:generateで生成する)
APP_DEBUG=true // 開発中はエラー詳細を表示
APP_URL=http://127.0.0.1:8000 // 起動用のURL
APP_LOCALE=ja // デフォルトの言語
APP_FALLBACK_LOCALE=ja // 翻訳がない場合のフォールバック(予備選択)
APP_FAKER_LOCALE=ja_JP // Seeder / Factory用
APP_TIMEZONE=Asia/Tokyo // タイムゾーン
DB_CONNECTION=mysql // 接続するデータベースの種類
DB_HOST=127.0.0.1 // データベースのホスト
DB_PORT=8889 // データベースのポート
DB_DATABASE=hoge_db // データベース
DB_USERNAME=root // データベースのユーザー名
DB_PASSWORD= // データベースのパスワード
■アプリケーションキーの生成
php artisan key:generate
セッション暗号化・CSRF などに必要
.env の APP_KEY に生成されたキーが反映する
■日本語化
1.翻訳ファイルの用意
Laravel13ではlangディレクトリが含まれていないので生成する
php artisan lang:publish
lang/en/ に auth.php, validation.php などが作成される。
2.日本語訳の追加
バリデーション・認証メッセージなどをまとめて日本語化できます。
AかBのどちらかを行う。
| やること | A.Laravel-Lang | B.breezejp |
|:---|:---:|:---:|
| lang/ja/validation.php など | ✅ 作る | ✅ 作る(上書き) |
| .env の日本語設定 | ❌ しない | ✅ する |
| config/app.php の変更 | ❌ しない | ✅ する |
// A.Laravel-Lang(翻訳ファイルのみ):翻訳ファイルjaの追加だけ
composer require laravel-lang/lang laravel-lang/publisher --dev
php artisan lang:add ja
// B.breezejp(設定変更も自動):翻訳ファイルの配置 + 設定ファイルの書き換え
// 今回はこちらを使用
composer require askdkc/breezejp --dev
php artisan breezejp
Breeze 等のスターターキットは使わなくても、バリデーション日本語化だけ利用できます。
3.固有メッセージの日本語化
システム固有の文言は翻訳ファイルではなく、コントローラや Blade に直接書くか、lang/ja/messages.php を自作して __('messages.login_failed') のように呼び出す
// lang/ja/messages.php(自作例)
return [
'login_failed' => 'ログイン情報が正しくありません。',
'logout' => 'ログアウトしました。',
'login_required' => 'ログインしてください。',
];
4.日本語化の確認
php artisan tinker
>>> __('validation.required', ['attribute' => 'メールアドレス'])
日本語メッセージが返れば OK
ここまででphp artisan serveを実行してもDBを設定できていないのでエラーが出る。
以下でデータベースも設定していく。
DBの用意
1.データベースの作成
- 左メニューまたは「データベース」タブを開く
- データベース名
login_db_laravelを入力 - 照合順序
utf8mb4_unicode_ciを選択 - 作成
utf8mb4_unicode_ciについて
・「文字をどう並べ替えて、どう比べるか」のルール
utf8mb4 _ unicode _ ci
│ │ │
│ │ └─ 大文字小文字を区別しない(case insensitive)
│ └─ 世界中の文字を Unicode ルールで比較
└─ 4バイト UTF-8(絵文字も保存できる)
・ciはAdmin と admin を同じとみなす
・Laravel のデフォルトもこれ(database.php)
・日本語含む一般的なWebアプリで一般的に使われている
【よく選ばれている理由】
・Laravel のデフォルトと一致する → 設定ミスが起きにくい
・日本語・英語・記号・絵文字 をまとめて扱える
・ログイン時のユーザー名比較 で、大文字小文字の違いを吸収できる(ci)
・Webアプリではよく使われる定番 で、情報も多い
2.DBとの接続を確認
php artisan migrate:status
// まだマイグレーションしていないので Migration table not found. が出ていればOK
3.マイグレーションの実行
Laravelインストール時にデフォルトで存在しているマイグレーションを実行する
php artisan migrate
作成される主なテーブル:
| テーブル | 用途 |
|---|---|
users |
ユーザー(ログイン認証) |
sessions |
セッション(デフォルト driver が database の場合) |
cache |
キャッシュ(デフォルトが database の場合) |
jobs |
キュー(使用時) |
シンボリックリンク
今回はアイコン画像の設定のためにユーザーが画像をアップロードする仕組みを作るため、画像にアクセスできるように以下を実行する
php artisan storage:link
シンボリックリンク...?
・ブラウザからはpublicディレクトリのみ見える
・ユーザーがアップロードした画像はpublicに保存しないほうがいい
・public:ユーザーがアイコンを変更したりで古いファイルが残り続ける&手動で掃除が必要
・storage:Laravelが古いファイルを自動で削除してくれる!
・storage/app/publicに保存するのが良い ← ブラウザから見えない...!
・シンボリックリンク(ショートカットみたいなもの)を使うことで、 public/storage/ → storage/app/public/ への近道ができる
実際のアクセス: ブラウザ: http://localhost:8000/storage/icons/user123.jpg
↓ public/storage/icons/user123.jpg (入口・近道)
↓ storage/app/public/icons/user123.jpg (実際の場所)
サーバーの起動
php artisan serve
これでLaravelのプロジェクトが問題なく起動します!