6
3

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 10から13へアップグレードしたら、Kernelが消えていて驚いた話

6
Last updated at Posted at 2026-05-13

はじめに

最近、いくつかのプロジェクトをLaravel 10から最新の13へ一気にアップグレードする機会がありました。

正直、新しいディレクトリ構造を初めて見た時の感想は……

「あれ、泥棒にでも入られた??」

と思うくらい、中身がスッキリしていて驚きました(笑)。

もしこれからアップグレードを考えている方がいたら、まず伝えたいのは、

パニックにならなくて大丈夫です。

今回は、Laravel 13(正確にはLaravel 11から導入された)Slim Skeleton の大胆な変更点と、実際にアップグレードしてみてハマったポイントを、できるだけ分かりやすくまとめてみます。


背景:何が変わったのか?

Laravel 10までは、設定ファイルやKernel周りなど、

「これ、いつ触るんだっけ……?」

みたいなファイルが結構ありましたよね。

Laravel 11以降では、そういった“ボイラープレート”を減らし、

  • よりシンプルに
  • より軽量に
  • より直感的に

管理できる構成へ変わっています。

ただし最初は、

「設定どこ行った!?」

となりがちです。


具体的な変更点


1. Kernel廃止:すべては bootstrap/app.php

Laravel 10まではおなじみだった、

  • Http/Kernel.php
  • Console/Kernel.php
  • Handler.php

これらがLaravel 13では消えています。

最初見た時、本当にびっくりしました。

今のLaravelでは、アプリケーションの中心が

bootstrap/app.php

に集約されています。


ミドルウェア・ルーティング・例外処理を一括管理

bootstrap/app.php
use Illuminate\Foundation\Application;
use Illuminate\Foundation\Configuration\Exceptions;
use Illuminate\Foundation\Configuration\Middleware;

return Application::configure(basePath: dirname(__DIR__))
    ->withRouting(
        web: __DIR__ . '/../routes/web.php',
        api: __DIR__ . '/../routes/api.php',
        commands: __DIR__ . '/../routes/console.php',
        health: '/status',
    )
    ->withMiddleware(static function (Middleware $middleware) {

        // ミドルウェア設定
        $middleware->alias([
            'auth' => \App\Http\Middleware\Authenticate::class,
            'check_api_version' => \App\Http\Middleware\CheckApiVersion::class,
        ]);
    })
    ->withExceptions(static function (Exceptions $exceptions) {

        // 例外処理もここ
    })
    ->create();

設定が1つのファイルにまとまったおかげで、

「あのミドルウェア、どこで定義したっけ?」

という宝探しゲームをしなくて済むようになりました。

最初は、

「1ファイルに詰め込みすぎでは……?」

と思ったんですが、慣れると意外と快適です。

ファイルを何往復もしなくていいので、むしろ探しやすくなりました。


2. タスクスケジュールは routes/console.php

昔は Console/Kernel.php に書いていたSchedulerですが、今は違います。

Laravel 13では、

routes/console.php

に直接書くスタイルになっています。


こんな感じで書けます

routes/console.php
use Illuminate\Support\Facades\Schedule;
use App\Jobs\CleanupFilesJob;

Schedule::command('telescope:prune --hours=48')->daily();

Schedule::job(new CleanupFilesJob())
    ->everyTenMinutes();

めちゃくちゃ直感的です。


3. bootstrap/providers.php の登場

以前は config/app.php に長い providers 配列がありましたよね。

Laravel 13では、Service Provider登録は専用ファイルへ移動しました。

bootstrap/providers.php

Laravelが自動でここを読み込んでくれます。

かなりスッキリしました。


4. カスタムConnection実装は要注意

ここが個人的に一番ハマったポイントです。

もしプロジェクトでLaravelのコアクラスをオーバーライドしている場合、特に注意してください。

例えば:

  • カスタムDB Connection
  • 独自Builder
  • Custom Grammar
  • 独自Queue Driver

などです。


メソッドシグネチャが変わっている

Laravel内部で、引数が追加されているケースがあります。

例えば:

- public function select($query, $bindings = [], $useReadPdo = true)

+ public function select(
+     $query,
+     $bindings = [],
+     $useReadPdo = true,
+     array $fetchUsing = []
+ )

これを修正し忘れると、起動時にPHPから

「型違うよ!!!」

と怒られます。

アップグレード時は、

grep -R "extends .*Connection" app/

みたいにして、独自実装を洗い出すのがおすすめです。


実際にアップグレードしてみた感想

1. とにかくスリム

不要なファイルが減ったことで、

  • 見通しが良い
  • 初見でも理解しやすい
  • 「Laravelっぽさ」が減った

という印象でした。


2. 起動が軽く感じる

体感レベルですが、起動が少し軽く感じます。

特に:

  • PHP 8.4
  • OPcache
  • Laravel Pulse

あたりと組み合わせるとかなり快適です。


3. チーム開発で迷子になりにくい

以前は、

「ミドルウェアどこだっけ?」

「例外Handlerどこ?」

みたいな会話がよくありました。

今は入口がかなり整理されたので、新規メンバーも理解しやすそうです。


アップグレード前のチェックリスト

Laravel 13へ上げる前に、これだけは確認しておくと安心です。

  • PHPバージョン確認
  • サードパーティPackageの対応状況
  • 独自Connection実装
  • 独自Middleware登録
  • Exception Handlerの移行
  • Scheduler移行
  • PHPUnit / Pest対応確認

まとめ

Laravel 13へのアップグレードは、最初こそ構造変化に驚きます。

でも実際に触ってみると、

「あ、これ未来のLaravelだ」

という感じがしました。

特にSlim Skeletonは、

  • 学習コストを減らし
  • ボイラープレートを削減し
  • 本来のアプリ開発に集中できる

かなり良い方向の進化だと思います。


最後に

これからアップグレードする方へ。

まずは公式ドキュメントをざっと読むのがおすすめです。

特に:

  • Slim Skeleton
  • Upgrade Guide

は事前に目を通しておくと安心です。

そして何より、

Package互換性チェックは先にやりましょう。

ここをサボると、後半で地獄を見ます(笑)。

皆さんのLaravelアップグレードが、残業なしで平和に終わることを祈っています 🙏


参考リンク

6
3
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
6
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?