公開日: 2019-09-04
更新日: 2020-05-27

リリースされたLaravel 6.0をインストールした。

Laravel 6.0

2019年9月3日、Laravel 6.0がリリースされました!

Laravel 6.0は、2017年8月にリリースされたLaravel 5.5以来のLTS(Long Term Support)となります。
当初は2019年8月にリリースされるということでしたので、少し遅れてのリリースとなりました。
現在、日本語訳のドキュメントが整備されているhttps://readouble.comには、まだLaravel 6.0のドキュメントが掲載されていません。(2019年9月5日 削除)
まだ(翻訳中)の文字がありますが、2019年9月5日にLaravel 6.0の日本語訳が掲載されました!
(翻訳中)の文字が取れるのも時間の問題ですね。関係者のみなさま、ご尽力に感謝します。
そこで、英語の公式ドキュメントを参照しながら違いを見てみます。

準備

Laravel 6.0のインストールには、php 7.2以上のバージョンが必要です。7.1系列を使っている人は7.2以上にバージョンアップしましょう。MAMPやXAMPを使っている人はパッケージのアップデートが必要になる場合があります。
合わせて、composerも最新バージョンにしておきましょう。composerをアップデートするには、以下のコマンドを実行します。

sudo composer selfupdate
            

インストール

以前のバージョンと同じようにcomposer create-project --prefer-dist laravel/laravel laravelでlaravelというディレクトリを作成して、その中に必要なファイルがインストールされます。
インストール直後のphp artisanの実行結果とcomposer.jsonは以下のとおりです。

Laravel Framework 6.0.0

    Usage:
      command [options] [arguments]

    Options:
      -h, --help            Display this help message
      -q, --quiet           Do not output any message
      -V, --version         Display this application version
          --ansi            Force ANSI output
          --no-ansi         Disable ANSI output
      -n, --no-interaction  Do not ask any interactive question
          --env[=ENV]       The environment the command should run under
      -v|vv|vvv, --verbose  Increase the verbosity of messages: 1 for normal output, 2 for more verbose output and 3 for debug

    Available commands:
      clear-compiled       Remove the compiled class file
      down                 Put the application into maintenance mode
      env                  Display the current framework environment
      help                 Displays help for a command
      inspire              Display an inspiring quote
      list                 Lists commands
      migrate              Run the database migrations
      optimize             Cache the framework bootstrap files
      preset               Swap the front-end scaffolding for the application
      serve                Serve the application on the PHP development server
      tinker               Interact with your application
      up                   Bring the application out of maintenance mode
     auth
      auth:clear-resets    Flush expired password reset tokens
     cache
      cache:clear          Flush the application cache
      cache:forget         Remove an item from the cache
      cache:table          Create a migration for the cache database table
     config
      config:cache         Create a cache file for faster configuration loading
      config:clear         Remove the configuration cache file
     db
      db:seed              Seed the database with records
      db:wipe              Drop all tables, views, and types
     event
      event:cache          Discover and cache the application's events and listeners
      event:clear          Clear all cached events and listeners
      event:generate       Generate the missing events and listeners based on registration
      event:list           List the application's events and listeners
     key
      key:generate         Set the application key
     make
      make:channel         Create a new channel class
      make:command         Create a new Artisan command
      make:controller      Create a new controller class
      make:event           Create a new event class
      make:exception       Create a new custom exception class
      make:factory         Create a new model factory
      make:job             Create a new job class
      make:listener        Create a new event listener class
      make:mail            Create a new email class
      make:middleware      Create a new middleware class
      make:migration       Create a new migration file
      make:model           Create a new Eloquent model class
      make:notification    Create a new notification class
      make:observer        Create a new observer class
      make:policy          Create a new policy class
      make:provider        Create a new service provider class
      make:request         Create a new form request class
      make:resource        Create a new resource
      make:rule            Create a new validation rule
      make:seeder          Create a new seeder class
      make:test            Create a new test class
     migrate
      migrate:fresh        Drop all tables and re-run all migrations
      migrate:install      Create the migration repository
      migrate:refresh      Reset and re-run all migrations
      migrate:reset        Rollback all database migrations
      migrate:rollback     Rollback the last database migration
      migrate:status       Show the status of each migration
     notifications
      notifications:table  Create a migration for the notifications table
     optimize
      optimize:clear       Remove the cached bootstrap files
     package
      package:discover     Rebuild the cached package manifest
     queue
      queue:failed         List all of the failed queue jobs
      queue:failed-table   Create a migration for the failed queue jobs database table
      queue:flush          Flush all of the failed queue jobs
      queue:forget         Delete a failed queue job
      queue:listen         Listen to a given queue
      queue:restart        Restart queue worker daemons after their current job
      queue:retry          Retry a failed queue job
      queue:table          Create a migration for the queue jobs database table
      queue:work           Start processing jobs on the queue as a daemon
     route
      route:cache          Create a route cache file for faster route registration
      route:clear          Remove the route cache file
      route:list           List all registered routes
     schedule
      schedule:run         Run the scheduled commands
     session
      session:table        Create a migration for the session database table
     storage
      storage:link         Create a symbolic link from "public/storage" to "storage/app/public"
     vendor
      vendor:publish       Publish any publishable assets from vendor packages
     view
      view:cache           Compile all of the application's Blade templates
      view:clear           Clear all compiled view files
            
{
    "name": "laravel/laravel",
    "type": "project",
    "description": "The Laravel Framework.",
    "keywords": [
        "framework",
        "laravel"
    ],
    "license": "MIT",
    "require": {
        "php": "^7.2",
        "fideloper/proxy": "^4.0",
        "laravel/framework": "^6.0",
        "laravel/tinker": "^1.0"
    },
    "require-dev": {
        "filp/whoops": "^2.0",
        "fzaninotto/faker": "^1.4",
        "mockery/mockery": "^1.0",
        "nunomaduro/collision": "^3.0",
        "phpunit/phpunit": "^8.0"
    },
    "config": {
        "optimize-autoloader": true,
        "preferred-install": "dist",
        "sort-packages": true
    },
    "extra": {
        "laravel": {
            "dont-discover": []
        }
    },
    "autoload": {
        "psr-4": {
            "App\\": "app/"
        },
        "classmap": [
            "database/seeds",
            "database/factories"
        ]
    },
    "autoload-dev": {
        "psr-4": {
            "Tests\\": "tests/"
        }
    },
    "minimum-stability": "dev",
    "prefer-stable": true,
    "scripts": {
        "post-autoload-dump": [
            "Illuminate\\Foundation\\ComposerScripts::postAutoloadDump",
            "@php artisan package:discover --ansi"
        ],
        "post-root-package-install": [
            "@php -r \"file_exists('.env') || copy('.env.example', '.env');\""
        ],
        "post-create-project-cmd": [
            "@php artisan key:generate --ansi"
        ]
    }
}
            

特筆すべき点として、artisanからmake:authがなくなっていることと、phpunitのバージョンが8.0に変更になっていることが挙げられます。
Authenticationを見てみると、Install the laravel/ui Composer package and run php artisan ui vue --auth in a fresh Laravel application.との記述があります。
そこで、composer require laravel/uiを実行して、laravel/uiをインストールして、php artisanを実行すると、以下の行が増えました、

 ui
  ui:auth              Scaffold basic login and registration views and routes
            

php artisan ui:authを実行すると、スカフォールディングを生成してくれるとのことです。
さっそく、実行してみましょう。

php artisan ui:auth
Authentication scaffolding generated successfully.
ls resources/views/
auth/              home.blade.php     layouts/           welcome.blade.php
cat resources/sass/app.scss
//

            

認証関係のファイルが生成されていることが確認できましたが、resources/sass/app.scssはまだ空のままです。
次に、php artisan help uiを実行してみます。

Description:
  Swap the front-end scaffolding for the application

Usage:
  ui [options] [--] 

Arguments:
  type                   The preset type (bootstrap, vue, react)

Options:
      --auth             Install authentication UI scaffolding
      --option[=OPTION]  Pass an option to the preset command (multiple values allowed)
  -h, --help             Display this help message
  -q, --quiet            Do not output any message
  -V, --version          Display this application version
      --ansi             Force ANSI output
      --no-ansi          Disable ANSI output
  -n, --no-interaction   Do not ask any interactive question
      --env[=ENV]        The environment the command should run under
  -v|vv|vvv, --verbose   Increase the verbosity of messages: 1 for normal output, 2 for more verbose output and 3 for debug
            

php artisan ui --authを実行すると、bootstrapvuereactなどのスカフォールディングをインストールできるとのことです。
さっそく、実行してみます。

php artisan ui --auth bootstrap
    Bootstrap scaffolding installed successfully.
Please run "npm install && npm run dev" to compile your fresh scaffolding.

The [auth/login.blade.php] view already exists. Do you want to replace it? (yes/no) [no]:
> y

The [auth/passwords/email.blade.php] view already exists. Do you want to replace it? (yes/no) [no]:
> y

The [auth/passwords/reset.blade.php] view already exists. Do you want to replace it? (yes/no) [no]:
> y

The [auth/register.blade.php] view already exists. Do you want to replace it? (yes/no) [no]:
> y

The [auth/verify.blade.php] view already exists. Do you want to replace it? (yes/no) [no]:
> y

The [home.blade.php] view already exists. Do you want to replace it? (yes/no) [no]:
> y

The [layouts/app.blade.php] view already exists. Do you want to replace it? (yes/no) [no]:
> y

Authentication scaffolding generated successfully.
cat resources/sass/app.scss
// Fonts
@import  url('https://fonts.googleapis.com/css?family=Nunito');

// Variables
@import  'variables';

// Bootstrap
@import  '~bootstrap/scss/bootstrap';
            

resources/sass/app.scssにbootstrapのセットアップがインストールされたことが確認できました。
vuereactを使いたい場合には、bootstrapに代えて指定すれば、同じようにインストールされると思います(未確認)。
npm install && npm run productionを実行すると、フロントエンド環境をコンパイルすることができました。

アップグレード

クリーンインストールした際のcomposer.jsonの内容を参考に、tiny-services.comの開発環境を5.8から6.0にアップグレードします。
アップグレードの注意点については、Upgrade Guideに記載があるので、問題があったら確認します。 composer updateによるアップグレード処理では、spatie/laravel-db-snapshotsが未対応のためにアップグレードできなかったため、いったん、composer.jsonから削除しました。
spatie/laravel-db-snapshotsもLaravel 6.0に対応したので、composer.jsonから削除することなくアップグレードできます。

次にひととおり、機能の確認を行いました。すると、ブラウザ上にMethod Illuminate\Translation\Translator::getFromJson does not exist.というエラーが表示されました。
これについては、Upgrade GuideのLocalization Lang::getFromJson Methodに記載があります。
それでも、特に関係するようなところに手を入れていない場合には、Laravelを6.0にアップグレードしたにも関わらず、viewが古いままになっていることが原因の可能性があります。
私の場合、php artisan view:clearでviewのキャッシュを削除してあげると、エラー表示が消えました。

tiny-services.comの開発環境では、これ以外の問題は特に見つかっていないので、もう少し動作確認をしたら、本番環境も5.8から6.0にアップグレードする予定です。
Laravel 6.0では、UIのスカフォールディングが標準パッケージから分離されたため、他のフロントエンドフレームワークがサポートされる道が開けたのではないでしょうか。
そうであるなら、フロントエンドフレームワークの技術進歩が著しい現在では、とてもすばらしいニュースだと思います。