2018年2月7日にリリースされたLaravel 5.6の新機能まとめ。

以下は、Laravel NewsのLaravel 5.6 is Live, Here’s What’s New!の翻訳。文章がこなれていないところや翻訳が怪しいところもあるが、何かあればご連絡ください。

ロギングの改良

Laravel 5.6における最大の機能はロギングの改良だ。まず、v5.6では、ロギングの設定ファイルは、config/app.php から、config/logging.php に変更になっている。

"stacks"への設定により、ログメッセージを複数のハンドラーに送ることができる。例えば、全てのデバッグメッセージをシステムログに送ると共にエラーログはslackへ送るということができる。

詳しくは、ロギングのドキュメントを参照のこと。

シングルサーバータスクのスケジューリング

タスクスケジューラーを複数のサーバーで走らせていると、タスクは各々のサーバーで実行されるが、onOneServer() メソッドを使うことで、どれか一つのサーバーだけで実行するようにすることが可能となる。

$schedule->command('report:generate')
    ->fridays()
    ->at('17:00')
    ->onOneServer();

注意:ディフォルトのアプリケーションキャッシュドライバとして memcached または redis キャッシュドライバを使うことで、Laravel 5.6ではシングルサーバータスクのスケジュールリングを活用することができる。

動的レート制限

Laravel 5.6では、動的レート制限が導入された。これにより、ユーザー単位で簡単にリクエスト数制限を行うことができるようになる。

Route::middleware('auth:api', 'throttle:rate_limit,1')
    ->group(function () {
        Route::get('/user', function () {
            //
        });
    });

上の例では、rate_limit は、App\User モデルの属性で、一定期間内でのリクエスト数を制限するものである。

ブロードキャスト Channel クラス

クロージャを利用する代わりに、routes/channels.php ファイルで channelクラスを使うことができる。

新しい channel クラスを使うために、新しく make:channel コマンドがLaravel 5.6では用意された。

php artisan make:channel OrderChannel

routes/channels.php ファイルへchannelを登録するには次のように行う:

use App\Broadcasting\OrderChannel;

Broadcast::channel('order.{order}', OrderChannel::class);

APIコントローラーの生成

HTMLを返すだけのリソースコントローラーに不要なcreateとeditアクションを除いたAPI向けリソースコントローラーを生成することができる。これを行うには、--apiフラグを使う:

php artisan make:controller API/PhotoController --api

Eloquentデータのキャスト

Eloquentのdate型およびdatetime型のフォーマットを個別にカスタマイズすることができる。

protected $casts = [
    'birthday' => 'date:Y-m-d',
    'joined_at' => 'datetime:Y-m-d H:00',
];

このフォーマットは、モデルを配列やJSONデータにシリアライズする際に使われる。

Bladeコンポーネントの別名

bladeコンポーネントに簡便にアクセスできるよう別名を定義することができる。例えば、コンポーネントを resources/views/components/alert.blade.php に置いた場合、component() メソッドによって短い別名を定義することができる。

Blade::component('components.alert', 'alert');

そしてこの定義された別名でレンダリングが可能となる。

@component('alert')
    <p>This is an alert component</p>
@endcomponent

Argon2 パスワードハッシング

Laravel 5.6 は、PHP 7.2以上で導入された新しいパスワードハッシングアルゴリズムに対応している。新しい設定ファイル config/hashing.php の中でディフォルトでどのハッシングドライバーを使うかを決めることができる。

さらに学ぶには、Argon2i hashing algorithmという記事を参照。

UUID Methods

ユニバーサルユニークID (UUID)を生成する Illuminate\Support\Str クラスにおいて、2つの新しいメソッドが利用可能となっている。

// The methods return a Ramsey\Uuid\Uuid object

return (string) Str::uuid();

return (string) Str::orderedUuid();

orderedUuid() メソッドは、簡単かつ効率的なデータベースインデッキシングに有効なタイムスタンプ順序のUUIDを生成する。

Collision

dev composer依存のパッケージとしてLaravel 5.6 でCollisionがやって来たという記事を最近書いた。これは、コンソールに綺麗なエラーレポートを出力するものだ。

alt

Bootstrap 4

すべてのフロントエンド・スキャフォールディングとVueコンポーネントのサンプルは今やBootstrap 4を使用している。ベータではあるが我々はBootstrap 4に対応してきたし、Bootstrap 4 Laravelプリセットを作ってきた。Bootstrap 4 stableをLaravel 5.6と一緒に出せることは非常に喜ばしい!

Laravel 5.6についてさらに学ぶには

あなたのLaravel環境をv5.6にアップグレードするには、アップグレードガイドを参照のこと。Laravelはあなたのアプリができるだけ最短にメジャーリリースにアップデートできるよう努力している。5.5から5.6へのアップグレードはたかだか10〜30分程度と思う。もちろん、アプリケーションによって差はあるのだが。

(original English article was written by Paul Redmond)

Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account log in.