Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Laravel11へアップグレード 15分で終わるのか!? / laravel 11 ...

Takuya Katsusa
December 21, 2024
100

Laravel11へアップグレード 15分で終わるのか!? / laravel 11 Upgrade

Takuya Katsusa

December 21, 2024
Tweet

Transcript

  1. My Profile 勝佐 拓也 - かつさたくや  @kitkattsun0531 BABY JOB 株式会社(Bronzeスポンサー)

    保活サイト「えんさがそっ♪」の開発保守 二児の父(9 ~ 11月に育休取得) 子ども大好きおじさん Laravelって なーに? ふ、、ふにゃ (知らんぞ)
  2. Laravel 10 っ♪ は すでに アップグレードの 目安 15分!! Laravel Shift

    を見送った理由 • 過去のアップグレードが比較的簡単だったこと • 有料であること 引用:Laravel 11.x アップグレードガイド
  3. 関連のテーブルを調査開始...30分経過 hoikuen_id カラムを VARCHAR に変えただけよ? Schema::table('hoikuens', function (Blueprint $table) {

    $table->string('hoikuen_id')->change(); ← }); お気づきだろうか... この時点で トークタイトルの 目安15分に 間に合ってない!
  4. // 1回目 Schema::create('hoikuens', function (Blueprint $table) { $table->integer('hoikuen_id')->nullable()->default(0)->comment('保育園ID'); }); //

    2回目(型変更) Schema::table('hoikuens', function (Blueprint $table) { $table->string('hoikuen_id')->nullable()->default(0)->comment('保育園 ID')->change(); }); // 3回目(コメント変更) Schema::table('hoikuens', function (Blueprint $table) { $table->string('hoikuen_id')->nullable()->default(0)->comment('保育園の識別 ID')->change(); }); 当時のテーブル構成を再現しないのしんどい💦 なんだっけ? なんだっけ?
  5. config('database.connections.sqlite'); = [ "driver" => "sqlite", "url" => null, "database"

    => "/laravel/database/database.sqlite", "prefix" => "", "foreign_key_constraints" => true, ] 例えば、config / database.php の sqlite を空白にします なんとconfigで参照すると、値が復活してます! つまり、未設定だとデフォルトの値で復活するということ! Why?
  6. 設定ファイルなので慎重に調査を進めました💦 1. config の差分確認 2. php artisan tinker で config

    の値をチェック 3. Webアプリの動作確認 作業時間......なんと 4時間!!
  7. 一応、v11.11.0 で変更が入ったようです dontMergeFrameworkConfiguration メソッドを呼び出せば、 laravel/framework 側の config を参照しなくなるようです return Application::configure(basePath:

    dirname(__DIR__)) ->withRouting( web: __DIR__.'/../routes/web.php', commands: __DIR__.'/../routes/console.php', health: '/up', ) ->withMiddleware(function (Middleware $middleware) { // }) ->withExceptions(function (Exceptions $exceptions) { // }) ->create() ->dontMergeFrameworkConfiguration(); bootstrap/app.php
  8. Laravel10 で bcrypt ラウンド数(パスワードハッシュ の計算強度)を 10 から 12 に増加する変更が行われた しかし、現在の

    Laravel の認証システムでは、ユーザー がログインする際に、ハッシュ設定が変更されても既存 のパスワードが再ハッシュされない これにより、セキュリティ上のリスクが生じる可能性が ある。たとえば、計算強度を増加させても、それが既存 のハッシュに適用されない場合、システム全体のセキュ リティの一貫性がなくなる (ビー・クリプト) パスワードの再ハッシュの実装経緯
  9. CREDITS: This presentation template was created by Slidesgo, including icons

    by Flaticon, infographics & images by Freepik thanks! 渾身の育休 note を執筆しました!
  10. diffIn 系メソッドは、float 型を返す! $startDate = new Carbon('2024-12-01'); $endDate = new

    Carbon('2024-12-03'); $startDate->diffInDays($endDate)); Carbon 2 の場合は、差が 2 Carbon 3 の場合は、差が 2.0 Why?
  11. diffIn 系メソッドは、相対差分を返す! $startDate = new Carbon('2024-12-01'); $endDate = new Carbon('2024-12-03');

    $endDate->diffInDays($startDate)); Carbon 2 の場合は、差が 2 Carbon 3 の場合は、差が - 2.0 Why? マイナス!?
  12. CREDITS: This presentation template was created by Slidesgo, including icons

    by Flaticon, infographics & images by Freepik thanks! 弊社はアドベントカレンダー実施中です