0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Laravelのインストール〜起動まで Laravel学習実践編 #1

0
Posted at

はじめに

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 などに必要
.envAPP_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.データベースの作成

  1. 左メニューまたは「データベース」タブを開く
  2. データベース名 login_db_laravel を入力
  3. 照合順序 utf8mb4_unicode_ci を選択
  4. 作成
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のプロジェクトが問題なく起動します!

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?