Twinkle
laravel/framework v12.30.1
https://github.com/laravel/framework/releases/tag/v12.30.1
ユーザーが Laravel フレームワークのリリースノートの要約を日本語で求めています。
要約:
Laravel 12.x において、順序位置に国際化拡張機能チェックを適用し、問題を防止する修正が行われました。
laravel/framework v12.30.0
https://github.com/laravel/framework/releases/tag/v12.30.0
Laravel フレームワークリリースノートの要約
- phiki/phiki パッケージの 2.0.0 より新しいバージョンを許可
- memoryExceededExitCode にヌル合体演算子を使用
- RouterRegistrar で定義された 'can' 関数の修正
- SQS FIFO とフェアキューサポートの修正
- Redis キャッシュタグを原子的にフラッシュするよう改善
- Illuminate\Support\Str に型ヒントを追加
- Database Connection の getElapsedTime コメントを時間単位を明記するよう更新
- バリデーションメッセージに序数位置のサポートを追加
- Windows での例外フレームファイルパスの修正
- 新しい例外ページのコピーボタンにフォールバックを追加
- Illuminate/Support/Benchmark に Macroable トレイトを追加
laravel/framework v12.29.0
https://github.com/laravel/framework/releases/tag/v12.29.0
リリースノート要約
- キャッシュされたルートと未キャッシュのルートでアクションと名前を解決する際の優先順位が同じになるよう修正
- SQLiteで任意のプラグマを設定可能に
- "fakerphp/faker"をインストールしなくても使用できるよう対応
- MariaDBのinnodb_snapshot_isolation=ONに対応
- PhpRedisパックで数字を無視するオプションを追加
- バックドEnum型をDynamic Bladeコンポーネントで使用可能に
- 指定したグローバルスコープのみを保持するwithoutGlobalScopesExcept()を追加
- schedule:workコマンドに--whisperオプションを追加
- LazyCollectionにtakeUntilTimeoutのコールバックサポートを追加
- Enumに
Castable
のサポートを追加 - キャッシュセッションドライバーを実装
- モデルに#[UseResource(...)]と#[UseResourceCollection(...)]属性のサポートを追加
- コンテキスト依存のビルダーで無限メソッドチェーンが可能に
- キュー可能リスナーで動的なtries()メソッドを有効化
- ScheduleListCommandに--jsonオプションを追加
- QueueWorkerのメモリ超過時の終了コードを制御する機能を追加
- ローカル例外ページを更新
- laravel-cloud-socketがLOG_LEVELを尊重するよう修正
新bootcamp (Laravel12版)
スターターキットは使ってないので入門用として長く使えそうな作りになっている。
https://github.com/laravel/bootcamp
https://laravel.com/learn
Laravelで独自のArtisanコマンドを作成する方法
概要
Laravelでは、独自のArtisanコマンドを作成して特定のタスクを自動化することができます。ここでは、カスタムArtisanコマンドの作成方法を説明します。
コマンドの作成
まず、以下のArtisanコマンドを使用して新しいコマンドクラスを生成します:
php artisan make:command TaskName
これにより、app/Console/Commands
ディレクトリに新しいコマンドクラスファイルが作成されます。
コマンドの構造
生成されたクラスは以下のような構造になっています:
namespace App\Console\Commands;
use Illuminate\Console\Command;
class TaskName extends Command
{
/**
* コマンドの名前と説明
*/
protected $signature = 'app:task-name';
protected $description = 'コマンドの説明';
/**
* コマンドの実行
*/
public function handle()
{
// コマンドのロジックをここに書く
$this->info('タスクが実行されました!');
}
}
コマンドのカスタマイズ
シグネチャの設定
$signature
プロパティを使用してコマンド名と引数、オプションを定義します:
// 基本的なコマンド名
protected $signature = 'app:send-emails';
// 引数付き
protected $signature = 'app:send-emails {user}';
// オプション引数
protected $signature = 'app:send-emails {user?}';
// デフォルト値付き引数
protected $signature = 'app:send-emails {user=all}';
// オプション
protected $signature = 'app:send-emails {--queue}';
// 値を取るオプション
protected $signature = 'app:send-emails {--queue=}';
ロジックの実装
handle()
メソッド内に実際のコマンドロジックを実装します:
public function handle()
{
// 引数の取得
$user = $this->argument('user');
// オプションの取得
$queue = $this->option('queue');
// 処理の実装
$this->info('処理を開始します...');
// 何らかの処理を実行
$this->info('処理が完了しました!');
}
コマンドの登録
新しいコマンドを登録するには、app/Console/Kernel.php
の$commands
配列にクラスを追加します:
protected $commands = [
\App\Console\Commands\TaskName::class,
];
Laravel 5.5以降では自動検出機能によりこの手順は通常不要です。
コマンドの実行
作成したコマンドは以下のように実行できます:
php artisan app:task-name
まとめ
独自のArtisanコマンドを作成することで、繰り返し行うタスクを自動化し、開発ワークフローを効率化できます。データベース操作、ファイル生成、APIとの連携など、さまざまな用途に活用できるため、Laravelプロジェクトの管理に非常に役立ちます。
Laravelはサービスコンテナで入れ替えができるので
厳密な型を付ければいいなんて単純な話ではない。
https://github.com/laravel/framework/discussions/56898
laravel/framework v12.28.1
https://github.com/laravel/framework/releases/tag/v12.28.1
group
プロパティをmessageGroup
にリネーム- laravel/sail内のPHP_CLI_SERVER_WORKERSを修正
- RouteRegistrarをMacroable可能に変更
- SesV2Transportのdocblockを修正
- カスタムレンダラーを使用した例外でのクエリログ不要を防止
- 意味のない中間変数を削減
laravel/framework v12.28.0
https://github.com/laravel/framework/releases/tag/v12.28.0
リリースノート要約
- 設定ファイルが存在しない場合のベースオプションのプリロード方法を修正
- 文字列を単語に分割する際の
mb_split()
の一貫した使用 CacheSchedulingMutex
がロック接続を使用するように修正- テスト改善の複数の更新
- 例外ページがSQLバインディングを準備しない問題を修正
Str::random()
をValidator
から切り離し- より広範囲の
brick/math
バージョンを許可 - 空の名前付き接続を許可するため
DatabaseManager
で三項演算子に戻す - 最新のスケルトン設定に合わせて
config/database.php
を更新 - fluent()ヘルパーの更新
- InvokedProcessにコマンドを取得するメソッドを追加
- コンパイル時にデフォルトのスロット名を提供
- モデル接続プロパティとメソッドでの列挙型の使用を許可
- 内部クラスの追加
to_route()の問題はLaravel 12.27.1で修正
他の変なサードパーティパッケージならともかく半公式に近いLivewireで発生してるなら修正が必要だろう。
https://github.com/laravel/framework/issues/56858
https://github.com/laravel/framework/commit/8c6c585cb54e5b4f65703fd600bd7bd36751d451
laravel/framework v12.27.1
https://github.com/laravel/framework/releases/tag/v12.27.1
- 12.x:
brick/math
の幅広いバージョンを許可するように変更 - 12.x:
secure_url()
の破壊的変更を修正
laravel/framework v12.27.0
https://github.com/laravel/framework/releases/tag/v12.27.0
- Str::plural() に prepend オプションが追加
- メールビュー内の複数行埋め込み画像の置換を修正
- SQS Fair Queue のサポート追加
- Collection の countBy メソッドで enum 値をサポート
- テストの改善
- ArrayStore の docblock と all() メソッドの一貫性を修正
- ArrayLock の文法改善
- timestampsTz() と nullableTimestampsTz() のコメント正規化
- 不要な中間変数を削減
- Arr::collapse() をシンプルで一貫性のあるものに改良
- 可読性の向上
- 例外トレースの行番号前の余分なスペースを削除
- 未使用変数の削除
- Collection の groupBy メソッドで UnitEnum サポートを追加
- テストメソッドに不足していた void 戻り値型を追加
- Collection の countBy docblock を改善し、enum コールバックを許可
- InteractsWithContainer の戻り値型を改善
- 値オブジェクトキャスティングの一括代入を許可
- $_SERVER から APP_BASE_PATH を許可
- docblock のタイポを修正
- DatabaseManager の他のメソッドで enum を許可
- README にヘルスコアバッジを追加
- toPrettyJson() がオプションを受け付けるように変更
laravel/framework v11.45.3
https://github.com/laravel/framework/releases/tag/v11.45.3
- 11.x向けにテストの改善が2件実施されました。
- 例外ページでSQLバインディングの準備が行われない問題が修正されました。
- Str::random()をValidatorから分離しました。
- brick/mathライブラリのより広いバージョン範囲をサポートするようになりました。
Laravel 12.26.0でのヘルパー返り値への型追加でボロボロ
https://github.com/laravel/framework/pull/56684
いくつかは元に戻して修正されてるけどto_route()
などはそのままでテストが失敗してる。
普通のLaravelの使い方なら影響はないけどLivewireでは返り値が変わってるので壊れる。
ここで置き換えてる。
https://github.com/livewire/livewire/blob/ad6da7c13f459f79121e05ab1619bce3603a0755/src/Features/SupportRedirects/SupportRedirects.php#L30
今すぐできる対処方法はto_route()
の使用をやめてLivewireの機能を使う。
return to_route();
$this->redirectRoute();
return;
to_route()
以外でも影響が出てそう。
Laravel サービスコンテナの依存性注入を改善するヒント
インターフェースへのバインディングを活用しましょう。インターフェースに対して実装クラスをバインドすることで、コードの結合度を下げ、テスト容易性を高めることができます。
// AppServiceProvider の register メソッド内で
$this->app->bind(
\App\Repositories\UserRepositoryInterface::class,
\App\Repositories\EloquentUserRepository::class
);
これにより、インターフェースを型ヒントとして使用できるようになり、実際の実装を簡単に切り替えることができます。テスト時にはモックオブジェクトに置き換えることも容易になります。
Claude Code GitHub Action v1.0
リリースされてたけど最近はGitHub Actionからは使ってないので移行作業するよりワークフローを削除。
https://github.com/anthropics/claude-code-action/releases/tag/v1