0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Laravel9でcreate projectしてからコードを描き始めるまでの自分的ルーティン

Last updated at Posted at 2023-01-07

この記事は?

表題の通りですが、最近Laravel触っていないので、急に触るときに「あれこれどうやってセットアップしてたっけ?」が増えてきたので、まとめておきます。

環境

  • OS
    • macOS Monterey 12.6.2
  • PHP
    • 8.0.x
  • Laravel
    • 9.46.0
  • IDE
    • PhpStorm 2022.3.1

さくらのサーバがかたくなにPHP8.1に対応してくれないので、今回は8.0をターゲットに書きます。

各種セットアップ

PHPのインストール

自分はanyenv経由でphpenvを入れ、homebrewでインストールしたPHPの各種バージョンをphpenvのディレクトリにシンボリックリンクして使っています。簡単にやり方をまとめます。

anyenv, phpenvのインストール

まとまっているサイトが沢山あるので省略。

このQiita記事にも書かれていますが、ビルドをすると大量のエラーが出るので、いつの頃からかビルド(phpenv install x.x.x)するのを止めてしまいました。

PHPのインストール

以下のようにしてhomebrewでPHPの各バージョンをインストールします。

brew install php@7.4
brew install php@8.0
brew install php@8.1
brew install php

phpenvへの設定の反映

phpenvの設定が終わっていると、~/.anyenv/envs/phpenv/versionsというディレクトリが出来ているはずです。出来ていない場合は設定をしてからphpenv versionsを実行してみてください。
それでは設定を反映させます。バージョン番号はその時のHomebrewでインストールされる最新の物に読み替えてください。

cd ~/.anyenv/envs/phpenv/versions/
ln -s /usr/local/Cellar/php@7.4/7.4.32
ln -s /usr/local/Cellar/php@8.0/8.0.26
ln -s /usr/local/Cellar/php@8.1/8.1.13
ln -s /usr/local/Cellar/php/8.2.0
phpenv global 8.0.26

この状態でphpenv versionsを実行すると以下のような表示になるはずです。

phpenv versions
  system
  7.4.32
* 8.0.26 (set by /Users/foobar/.anyenv/envs/phpenv/version)
  8.1.13
  8.2.0

同じくphp -vの結果。

php -v       
PHP 8.0.26 (cli) (built: Nov 28 2022 11:39:58) ( NTS )
Copyright (c) The PHP Group
Zend Engine v4.0.26, Copyright (c) Zend Technologies
    with Zend OPcache v8.0.26, Copyright (c), by Zend Technologies

これでビルドエラーに悩まされずにphpenvが利用出来ます。composerも自動で入れてくれるので便利です。

ただ一点欠点がありまして、brew upgradeをしてPHPのバージョンがアップデートされると、phpenv/versions配下のシンボリックリンクが切れてしまいます。そう言うときは、切れたシンボリックリンクを削除して、改めてシンボリックリンクを張りphpenv globalphpenv localを実行してください。

composer create-project

では実際にLaravelのプロジェクトを作成します。先ほどインストールしたPHPは実はこのプロジェクト作成+α程度にしか利用していません。残りはLaravel Sail内のPHPに任せてしまいます。

composer create-project laravel/laravel foo_bar_test

初回git周りのあれこれ

表題の通りです。git周りのあれこれを済ませていまいます。

git init
git add .
git commit -a -m 'First commit.'

.gitignoreの末尾に https://www.toptal.com/developers/gitignore/api/intellij+all,visualstudiocode,vim,emacs,macos,windows,laravel で得られる結果を追加して、git commitしておきます。
ディレクトリなどの重複でアラートが出ますので、適宜コメントアウトしてください。

Laravel Sailの設定

dockerを使って開発を進めるので、Laravel Sailを利用する事にします。現在はLaravel Sailは標準でインストール済みですので、有効化して設定を変更します。ここで有効にするサービスを選びます。サービス名も指定出来るようですが、数字でカンマ区切りが便利かと思います。

php artisan sail:install

 Which services would you like to install? [mysql]:
  [0] mysql
  [1] pgsql
  [2] mariadb
  [3] redis
  [4] memcached
  [5] meilisearch
  [6] minio
  [7] mailhog
  [8] selenium
 > 0,7,8

Sail scaffolding installed successfully.
(中略)
Sail build successful.

この状態だと、デフォルトでPHP8.1が利用されるので、今回はPHP8.0にする方法をまとめます。docker-compose.yml8.18.0に書き換えて、docker imageをビルドし直すだけです。

docker-compose.yml
-            context: ./vendor/laravel/sail/runtimes/8.1
+            context: ./vendor/laravel/sail/runtimes/8.0

-        image: sail-8.1/app
+        image: sail-8.0/app
./vender/bin/sail build

ついでに~/.zshrc~/.zprofileにalias設定をしておきます。

~/.zprofile
alias sail='[ -f sail ] && bash sail || bash vendor/bin/sail'

これで./vendor/bin/sailと入力しなくてもsailだけでコマンドが使えるようになりました。

以下のコマンドで起動しておきます。終了はCtrl+Cです。

sail up

地域・ローカライズ周りの設定

config/app.phpの変更

タイムゾーンとロケールを変更します。

config/app.php
-    'timezone' => 'UTC',
+    'timezone' => 'Asia/Tokyo',

 
-    'locale' => 'en',
+    'locale' => 'ja',


-    'faker_locale' => 'en_US',
+    'faker_locale' => 'ja_JP', 

Laravel-Lang周りの設定

多言語対応のため、Laravel-Lang/langを利用します。設定にはLaravel-Lang/publisherを用います。このとき、sail経由で行う事でLaravel Sail内のPHPのバージョンに合ったパッケージがインストールされます。

sail composer require laravel-lang/publisher laravel-lang/lang --dev

パッケージをインストールしたので、artisan経由で日本語関係のファイルをインストールします。

sail artisan lang:add ja

Laravel UIのインストールと設定

Laravel Breezeなど色々な認証系パッケージがありますが、今回は昔ながらのLaravel UIを使います。

sail composer require laravel/ui
sail artisan ui bootstrap --auth

routes/web.phpAuth::routes()Route::get('/home', [略]);が追加されます。意外と知られていないようなのですが、Auth::routes()は引数に配列で設定を指定する事が出来ます。ルートの追加を設定でオンオフする事が可能です。以下の設定がデフォルトとなっています。必要無いページはfalseにしておきましょう。

route/web.php
Auth::routes([
    'login'    => true, // ログインページの有無
    'logout'   => true, // ログアウト動作の有無
    'register' => true, // 登録ページの有無
    'reset'    => true, // パスワードリセットページの有無
    'confirm'  => true, // パスワードの再確認ページの有無
    'verify'   => true, // メールアドレスの確認ページの有無
])

続けてアセット類のビルドです。

sail npm install
sail npm run build

最後にDBマイグレーションをしておきます。

sail artisan migrate

まとめ

自分の備忘録的な投稿でした。今度はもうちょっと実のある投稿をしたい物です。

0
1
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
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?