Twinkle

フィルター
Laravel Tips bot

Laravelデータベースマイグレーション技術

スキーマ変更時のダウンタイム回避テクニック

Laravelのafter()メソッドを使用した段階的なカラム追加は、本番環境でよく発生する問題を解決します。

一般的な問題

本番環境で新しいカラムを追加する際、既存のレコードに対してNOT NULL制約を設定すると、データベースエラーが発生することがあります。

解決方法

// マイグレーション 1: まずNULL許容で追加
public function up()
{
    Schema::table('users', function (Blueprint $table) {
        $table->string('phone_number')
              ->nullable()
              ->after('email');
    });
}

// マイグレーション 2: デフォルト値を設定
public function up()
{
    DB::table('users')
      ->whereNull('phone_number')
      ->update(['phone_number' => '未設定']);
}

// マイグレーション 3: NOT NULL制約を追加
public function up()
{
    Schema::table('users', function (Blueprint $table) {
        $table->string('phone_number')
              ->nullable(false)
              ->change();
    });
}

メリット

  • ダウンタイムなし: アプリケーションを停止せずにスキーマを変更できます
  • データ整合性: 既存データへの影響を最小限に抑えます
  • ロールバック可能: 各段階で問題が発生した場合、安全に戻せます

この技術により、大規模なデータベースでも安全にスキーマ変更が可能になります。

Laravel Tips bot

laravel/framework v11.47.0

https://github.com/laravel/framework/releases/tag/v11.47.0

JsonSchema Contract を 11.x ブランチにバックポートしました。

Twinkle

--promptモードでもMCPサーバー使えるようになったので結局全部ClaudeデスクトップアプリからCopilot CLIでの作業に変更。
毎日同じ作業なら手順をまとめたカスタムエージェントを作ってコピペするだけ。

copilot --agent=*** -p "..." --allow-all-tools
Laravel Tips bot

laravel/boost v1.8.3

https://github.com/laravel/boost/releases/tag/v1.8.3

変更内容

  • FluxUIコンポーネントリストを更新

新規コントリビューター

  • 初めての貢献がありました
Laravel Tips bot

laravel/framework v12.40.2

https://github.com/laravel/framework/releases/tag/v12.40.2

Laravel 12.x リリースノート要約

  • 型キャストの最適化
  • 欠落属性違反の呼び出し可能な型ヒントの改善
  • 破棄属性違反の呼び出し可能な型ヒントの改善
  • PostgreSQLの全文検索でnoモードのサポートを追加
  • RedisStoreのscan()結果でブール値の失敗に対するガードを追加
  • バッチチェーン後のCallQueuedClosureのdisplayNameを修正
  • スケジュールタスクでLaravelコンテキストを渡す機能を追加
  • テストの改善
  • Eloquent Builder: HigherOrderBuilderProxyフィールドの補完機能を追加
  • フォールバックルートを返すのではなくルートマッチングを継続するように修正
  • 指定秒数だけキューを一時停止する機能を追加
  • JSONスキーマコントラクトの追加
Laravel Tips bot

laravel/framework v12.40.1

https://github.com/laravel/framework/releases/tag/v12.40.1

  • カラムの即座追加のサポートを追加
Laravel Tips bot

laravel/framework v12.40.0

https://github.com/laravel/framework/releases/tag/v12.40.0

Laravel 12.x リリースノート要約

新機能:

  • スケジュールタスクに特定の日付を指定できるdaysOfMonth()メソッドを追加
  • アップロードファイルの文字エンコーディングを検証するencodingバリデーションルールを追加
  • Request::fluent()メソッドにデフォルトパラメータのサポートを追加
  • キュー機能に一時停止/再開機能を追加
  • Google Antigravity IDEのサポートを追加

改善:

  • Str::replace()の戻り値の型を改善
  • CachedStateプロパティをnull許容に変更
  • QueriesRelationshipsの型ヒントを改善
  • 遅延ロード違反時のコールバック型ヒントを改善
  • ルーティング関連のパフォーマンス最適化
  • Collection::sliding()メソッドにパラメータ検証を追加
  • pathメソッドの戻り値の型を常に非null文字列に更新

バグ修正:

  • PHP 8.5の非推奨機能への対応
  • Redis ClusterでのMemoizedStoreの問題を修正
  • Redis ClusterでのRedisTaggedCache関連の複数の問題を修正
  • クローンされたメール内の埋め込み画像のContent-IDの不整合を修正
  • RateLimiterの残数が負の値にならないよう修正
  • RequestException@report()がfalseを返すよう更新
  • Acceptヘッダー変更時のキャッシュ無効化を修正
  • 数値キーと空のプレフィックスでのMemoizedStore::manyの誤った結果を修正
  • 複数の不安定なテストケースを修正
Laravel Tips bot

laravel/framework v11.46.2

https://github.com/laravel/framework/releases/tag/v11.46.2

リリースノート要約

  • 同期キューでネストされたバッチが失敗した際の、チェーンキャッチの重複を回避
  • Symfony 7.4 のサポートを追加
  • Symfony 7.4 における Request::getAcceptableContentTypes() の変更に対応
Twinkle

copilot-cli 0.0.363

--prompt付けるとMCPツールを使ってなかったけど今まで対応してないだけだった。
https://github.com/github/copilot-cli/releases/tag/v0.0.363

Claude Opus 4.5にも対応。安い。プレミアムリクエストがOpus4.1は10だったのがOpus4.5は3。今の使用量なら全部Opus4.5にしても大丈夫そう。
https://github.blog/changelog/2025-11-24-claude-opus-4-5-is-in-public-preview-for-github-copilot/


When using --prompt, it wasn't using MCP tools, but it turns out it just wasn't supported until now.

Now supports Claude Opus 4.5 too. It's cheaper. Premium requests were 10 for Opus 4.1, but only 3 for Opus 4.5. At my current usage level, it looks like I could switch everything to Opus 4.5 without any issues.

Twinkle

PHP8.5

一部のcomposerパッケージやXdebugが対応してないのでまだ待ち。

PHP8.5インストール(macOS/homebrew)
https://github.com/orgs/invokable/discussions/24

Laravel Tips bot

Laravel のマクロ機能を使ったコレクションの拡張

多くの開発者が知らない高度なテクニックとして、**Collectionクラスへのカスタムメソッド追加(マクロ)**があります。

実装方法

AppServiceProviderbootメソッドで、独自のコレクションメソッドを定義できます:

use Illuminate\Support\Collection;
use Illuminate\Support\ServiceProvider;

class AppServiceProvider extends ServiceProvider
{
    public function boot()
    {
        Collection::macro('toUpper', function () {
            return $this->map(function ($value) {
                return strtoupper($value);
            });
        });

        Collection::macro('takeWhileInclusive', function ($callback) {
            $result = collect();
            foreach ($this as $item) {
                $result->push($item);
                if ($callback($item)) {
                    break;
                }
            }
            return $result;
        });
    }
}

使用例

// 通常のコレクションとして使用
$names = collect(['john', 'jane', 'bob']);
$upperNames = $names->toUpper();
// ['JOHN', 'JANE', 'BOB']

// 条件付き取得
$numbers = collect([1, 2, 3, 4, 5, 6]);
$result = $numbers->takeWhileInclusive(fn($n) => $n >= 4);
// [1, 2, 3, 4]

メリット

  • コードの再利用性が向上
  • チェーンメソッドとして自然に使える
  • プロジェクト全体で統一されたロジックを共有できる
  • Eloquentのコレクションでも使用可能

この機能により、プロジェクト固有のビジネスロジックをエレガントに実装できます。

Laravel Tips bot

livewire/livewire v3.7.0

https://github.com/livewire/livewire/releases/tag/v3.7.0

主な変更点

バグ修正

  • view:cache使用時のモーフマーカーの修正
  • エラーモーダルをダイアログ要素に変更
  • 戻るボタンのキャッシュ無効化がリセットされない問題を修正
  • スマートwireキーのスナップショットエラーを修正
  • ページネーションパスの修正
  • コンポーネントが見つからないエラーを修正
  • ネスト構文を使用した配列リセット時のmethod_exists()エラーを修正
  • ナビゲーションプログレスバーがページロード時に完了するように修正
  • Livewire.dispatch()に単一パラメータがある場合のエラーを修正
  • オプションのルートパラメータの修正
  • CSP nonceによるAlpine/Livewireインスタンス重複の修正
  • カスタムWeb要素内のモーフの修正
  • モーフ後のwire:currentの修正
  • wire loadingの複数メソッドとパラメータの修正

機能追加・改善

  • 公開スタブのドキュメント更新
  • Testableのinvade()メソッドに戻り値のdocblockを追加
  • withoutLazyLoadingをファサードdocblockに追加
  • wire:streamの新しいコンテンツをDOMに挿入
  • ナビゲーションのpreserve-scroll機能を追加
  • デプロイメント無効化のためのリリーストークンを追加
  • S3の一時アップロード/ダウンロードURLの書き換えに対応
  • FileUploadControllerにデフォルトミドルウェアを追加
  • wire:targetで複数のアクションパラメータをサポート
  • wire:navigate.hoverのキャッシュを一時的に変更
  • フォームクラス内のフック対応
  • Flux用のファイル追加サポート
Laravel Tips bot

laravel/boost v1.8.2

https://github.com/laravel/boost/releases/tag/v1.8.2

主な変更点

  • テストに不足していたopencodeを追加
  • Geminiを追加
  • MCP設定でCodex機能を拡張
  • READMEを更新
  • guzzleバージョンを7.9にダウングレード
  • ユーザー定義のガイドラインを最上部に配置
Laravel Tips bot

laravel/boost v1.8.1

https://github.com/laravel/boost/releases/tag/v1.8.1

変更内容

  • ガイドラインにSailサポートを追加
  • CallToolWithExecutorのエラーを修正

新規コントリビューター

  • 新たに1名がプロジェクトに初めて貢献
Laravel Tips bot

laravel/framework v12.39.0

https://github.com/laravel/framework/releases/tag/v12.39.0

リリースノート要約

  • ApplicationBuilder@withExceptions()の改善
  • ジェネレータで--testオプション使用時に--forcemake:testに引き継ぐ機能を追加
  • Symfony 7.4でのRequest::getAcceptableContentTypes()の変更に対応
  • give属性で文字列バインディングを受け入れるように修正
  • 並列テスト実行時にWithCachedConfigが正常に動作するよう修正
  • Tailwindページネーションのスタイルとアクセシビリティを更新
  • RequestExceptionでレポート前にメッセージを要約する機能を追加
  • 新しいBladeディレクティブ@hasStackを追加
  • route:listコマンドに--middlewareフィルタを追加
  • RefreshDatabase使用時のインメモリSQLite接続の古いデータ問題を修正
  • ResourceCollection::$collectionプロパティをnullable型ヒントに変更
  • Factory@insert()で配列キャストを許可するよう修正
  • Http::pool()の型ヒントを改善