🙆

[laravel11 ディレクトリ]

2024/02/14に公開

こんにちは、まだまだプログラミングひよこのこうです。
まだまだ入社歴が半年くらいのインターン生ですが、今回はブログを書ける機会をいただけました〜
つい最近、やっと卒研発表が全部終わったのでやっと自分に興味のあることを没頭できます。😎
これからは最後の春休みを ENJOY して色々な所に旅立ちます!(いっぱい食べるぞ〜)🛫

さて、前置きも程々にして、内容に入っていきたいと思います。
普段は Laravel というフレームワークを使っていますが、つい最近に Laravel が v11 を発表しました!!
まだまだ正式版が出ていませんが、今回の記事にベータ版を使ってディレクトリの構造について主な変更点を初心者でもわかるように話して行こうと思います。

はじめ

v10 と v11 の違いをみんなの手元にでも確認できるように以下の手順を踏まえれば簡単にダウンロードすることが可能になります。(今回は composer と php の説明を省きます。)
Laravel インストーラーをインストールさえすれば、どのバージョンでも気軽に入手可能になります!
とても簡単ですよね!以下はそれらのコマンドです。

Laravel のインストールプロセス

//Laravelインストーラーのインストール
composer global require laravel/installer
//アップグレードの場合は以下のコマンド
composer global update laravel/installer -W
//好きなパスに移動して、Laravelのv10とv11をダウンロード
cd choose/your/path
laravel new laravel-10-app -n --git --pest
laravel new laravel-11-app --dev -n --git --pest

ざっと見た感じでは何が変わっているのが全くわかりませんよね 💦
でも大丈夫!まずは以下のコマンドを叩いてみましょう!!

find . -type f -not -path "./vendor/\*" | wc -l
>>221 (Laravel v10)
>>152 (Laravel v11)

こちらのコマンドは vendor(Laravel フレームワークが持っている便利機能たちのファイル群)を除くディレクトリとサブディレクトリに存在するすべてのファイルの数を数えてくれます。
その差は何と 69 個のファイルの削減もありました!(2/8 時点)
何が減ったのか?そして何の変化が現れるのかはますます気になりませんか?😆
これから Laravel v11 の世界へ行ってみましょう!

app ディレクトリ

app ディレクトリはアプリケーションを作る上に必要となる処理を記載する場所です。
下の写真を見れば変化が一目瞭然ですね。

v10 と v11 の app ディレクトリーの違い

一番の驚きといえば、デフォルトで設定されていたミドルウェアが完全に消滅されていることです。これらはどこに移行されたかと言うと。。。フレームワークです!全てフレームワークが吸収したおかげで、プロジェクトがすごくシンプルになりました!

bootstrap/app.php
<?php

use Illuminate\Foundation\Application;
use Illuminate\Foundation\Configuration\Exceptions;
use Illuminate\Foundation\Configuration\Middleware;

return Application::configure(basePath: dirname(__DIR__))
    ->withProviders()
    ->withRouting(
        web: __DIR__.'/../routes/web.php',
        // api: __DIR__.'/../routes/api.php',
        commands: __DIR__.'/../routes/console.php',
        // channels: __DIR__.'/../routes/channels.php',
        health: '/up',
    )
    ->withMiddleware(function (Middleware $middleware) {
        //middleware追加
        $middleware->web(append: \App\Http\Middleware\YourMiddleware::class);
    })
    ->withExceptions(function (Exceptions $exceptions) {
        //
    })->create();

すでに組み込みされているミドルウェアをカスタマイズしたり、新しいミドルウェアが欲しかったりする時は絶対にありますので、Laravel v11 は新しい方法を提供する予定です。
例として、元々 Kernel.php にて新しいミドルウェアを追加していたが、今回の改変でそれらは全て bootstrap/app.php に通して実現されます。

config ディレクトリ

config ディレクトリの中身はアプリケーションの全設定ファイルの集まりです。

config ディレクトリの中を覗いてみると。。。💦💦💦
.gitkeep しか存在しません!!
そのかわりに .env.example ファイルを見るとわかりますが、構成用のオプションがちょっと増えることで今までの設定ファイルを全て置き換えられました!👏👏

もし、あなたはそれらの設定ファイルをカスタマイズしたい場合では、以下のようなコマンドを真似して使えば良いでしょう。

//設定ファイルを公開してカスタマイズしたい時
php artisan config:publish database
php artisan config:publish logging
php artisan config:publish

//変更した設定の中身を調べたい時
//方法1
php artisan config:show
//方法2
php artisan config:show logging
cat vendor/laravel/framework/config/logging.php

このように、改変したい設定ファイルのみ実体化させることで自由に拡張でき、気にしなくて良いものはフレームワーク上に存在しているので、全てのファイルを保持しなくて良くなります。
また、今までに設定していたことを調べたかったらコマンドでいつでも確認することが可能になります。

database ディレクトリ

database ディレクトリは名前の通り、database を管理するところです。

こちらでは、大きな変更点はありませんでした。

細かいところで、ファイルの綴りを見れば気づくと思うが、今までの日程順ではなくて保持した順番になりました。

また、create_personal_access_tokens.php というマイグレーションファイルが消えました。
こちらのファイルはパーソナルアクセストークンを保存するためのデータベーステーブルを作成するために使用されます。パーソナルアクセストークンは、API 認証において、ユーザーが自身のアカウントに代わって API リクエストを行うことを許可するトークンであるためです。こちらの機能は routes ディレクトリでカバーされるような変更になっています。

そして、新しい Laravel のプロジェクトを立ち上げるときに、どんなデータベースのオプションを選択しても、database.sqlite ファイルは追加されます。
database.sqlite とは、SQLite データベースファイルの一般的な命名規則に従ったファイル名です。SQLite とは、リレーショナルデータベース管理システム(RDBMS) の 1 つです。サーバーレスかつ軽量であり、設定や管理がほとんど不要でというメリットがあります。

routes ディレクトリ

routes ディレクトリとは、アプリケーションの全てのルートを管理する部分です。

今回の更新により、api.phpchannels.php の2つのファイルが消え、web.phpconsole.php のみ保留されることになりました。
もし API と broadcasting の機能 を作りたい場合では、以下のコマンドを利用できます。

php artisan install:api
php artisan install:broadcasting

こちらのコマンドは、必要分だけのマイグレーション、JS と設定ファイルを持ってきます。そのため、これらを必要としないアプリケーションは不要である余計なファイルを気にしなくて済みます。

tests ディレクトリ

tests ディレクトリは自動テストが配置されるところです。

今回の更新により、CreatesApplication.php ファイルのみ削除されることになりました。
こちらのファイルの役割は、テスト環境で Laravel アプリケーションのインスタンスを作成するためのトレイトを提供します。このトレイトは、テストケースでアプリケーションを起動し、フレームワークの機能をテストする際に、必要な環境設定や初期化プロセスを行います。

もし、laravel v10 からアップグレードされた時、tests/TestCase の一部として提供されることにより、個人で CreatesApplication.php を削除できます。

終わり

初めてのブログでしたが、みんなにとってはわかりやすかったのでしょうか?
今回はディレクトリ全体を確認しつつ、まとめてみました。やっぱりこのようなアプデが来るたびにワクワクが止まりませんね。

これからはみんなや自分が興味がある記事をどんどん書いちゃうので、よかったら見に来てくださいね〜

それでは!ハッピーバレンタイン〜🍫

ソーシャルデータバンク テックブログ

Discussion