Laracon EU 2025 まとめ DAY1

Laracon EU 2025のトークについて随時まとめる
2025 02/03 ~ 02/04 (オランダ アムステルダム)
日本時間17:30 - 翌02:00頃まで

Pipeline Power-Up: Turning Complex Logic into Simple Steps - Bobby Bouwmann
02/03(月) 17:30 ~ (日本時間)
Pipeline Pattern はデザインパターンの一つ
複雑な操作を簡単にする。
- Maintenability
- Readability
- Flexibility
をもたらす
Basics
パイプラインにはクロージャやクラスを渡せる。
順番に渡せるので理解しやすい。
Use Cases
Laravelはソースコード内部でPipelineパターンを使っている
Value Object
Collecting data
Handling model updates
Collections
Query builder
Reuse a pipe
DoubleBookingProtectionを2回実行している。
Enums
Enumのcaseごとにパイプラインをまとめている
Pileline and Saga pattern

Have you met Ada? Word Embeddings with Laravel - Diana Scharf
02/03(月) 18:00 ~ (日本時間)
Word Embedding について単純化して話す。
Word Embeddingとは何か?
=> ベクトルベースの単語表現のこと
ベクトルとは、n次元空間における大きさと方向を持つ量のこと
単語をベクトル化することでコンピュータで類似度を計算できるようになる。
単語を比較してみる
PHPの文字列比較関数で比較する
similar_text()では意味をなさない
Pythonを使って試してみる
猫と犬はかなり類似は高い
猫と車の類似度は低い
king - man + woman = queenの演算ができる
利用可能なWord Embedding API
トークンベースで課金される。
トークンとは、文字列の並びを数値形式に変換したもの。
トークン数は以下のように事前にカウントできる。
Laravelの長いドキュメントを使ったとしても安い。
ベクトルをPostgreSQLで扱う
phpのベクトル演算は遅いので推奨しない。
ada -laravelパッケージ
Laravelで扱いやすいように、ada-laravelパッケージを作って公開した。
このパッケージを使うことでLaravelでSemantic Searchを実装できるはず。
実装の流れは以下。

Help out frustrated Bob - Bert De Swaef
02/03(月) 19:00 ~ (日本時間)
Bobは忙しいマネージャーでWebアプリケーションの修正が必要で困っているという設定
Bobを助けよう。
※ Livewireアプリケーション
1. 遷移先ページ表示の低速化・チラつき
=> Livewireのprefetchを使う
wire:navigate.hover
を付与
ホバー時に遷移先のページが事前ロードされる
2. OR検索項目の追加
=> $query->whereAny()やorWhereRelation()を使う
※ whereAnyはLaravel11の特定バージョンから使える
3. ページ表示情報の自動更新 - Polling
=> Livewireのpollingを使う
wire:poll.10s
を付与して10秒ごとに再取得
動くが、ユーザー数が増えるとサーバーの負荷が高くなってしまう。
=> Web Socketを使う
4. ページ表示情報の自動更新 - Web Socket
=> Laravel Reverbを使う
-
php artisan intall:broadcasting
を実行 -
Eventを作成(shouldBroadcastNowを実装)
-
broadcastOn()メソッドでチャンネル名を指定
-
モデル保存時にEventを送出
-
LivewireコンポーネントでOnAttributeをつけてリッスンする
-
Reverbサーバーを起動
まとめ
素晴らしい機能がいっぱいあるので、使おう。

From Zero to Static Analysis Hero - Ryan Chandler
02/03(月) 19:30 ~ (日本時間)
静的解析はPhpStanなどのツールのみを指すものではない
静的解析についてMild, Medium, Hotにレベル分けする
Mild, Mediumは心地いいがHotは辛くなりがち
静的解析は以下の実行時エラーが起こりうるコードを実行前に検出できる。
IDEでもできるのでは?
=> Configの設定差異など統一するのは難しい
Testコードで十分では?
=> テストは正しい証明になりがち。カバレッジは100%か?
一方PHPStanでは、、以下のメリットがある
IDEとは違ってCIにも組み込める
以下のようなルールをカスタマイズで組み込み可能
PHPStanの仕組み
カスタムルールを書く
-
\PhpStan\Rules\Rule
インターフェースを実装したクラスを作成する -
getNodeType
,processNode
メソッドを記述する - phpstan.neonのrulesに作成したカスタムルールクラスを設定する
LarastanにはEloquentなどのLaravel独特のカスタムルールが組み込まれているのでチェックするといい
詳しいPhpStanの仕様については公式サイトが詳しい

No more slow requests - Marcel Pociot
02/03(月) 22:20 ~ (日本時間)
Laravelアプリケーションが遅い理由
いろんな人に聞いたところ以下の四つだった
- Database
- Http Requests(外部リクエスト)
- Queued Jobs(キューに入れていない)
- PHP itself(PHPの使い方)
どの人もLaravelのせいで遅いとは言わなかった
高速化のコツを話していく
基礎
php artisan optimize
を実行する
config, event, route, viewがキャッシュされる。
Forgeのデフォルトデプロイスクリプトは実行しないので注意
ServiceProviderでもoptimizeできる。
Queueを使う
例えばメール送信処理
ShouldQueueインターフェースを実装すれば、常にキューに入る。
通知も同様にキューに入れるべき
Opcache
Opcacheを有効にすることでPHPコードのパース処理やコンパイル処理にかかる時間を削減できる。
Opcacheを有効化するだけで300ms => 90msに改善したサイトもあった。
Forgeではボタンで有効化できる
もしくはphp.iniでopcache.eneble=1とする
Demo
N+1クエリ
解決策
- withでEagerロードする
- モデルのwithプロパティにリレーションを定義する(非推奨)
- Model::preventLazyLoading()で予防する
高いメモリ使用量
レコード数が多い時はpluckで必要な情報のみ取得するようにする
プロファイラー拡張を使ってプロファイル
xdebugではなくspxを好んでいる(低速化しないから)
Laravel Herdではspxの統合を簡単にしている。
プロファイル画面の例
プロファイル結果を目で見るのは大変なのでChatGPTなどに与えるといいかもしれない。
コマンドでのプロファイルも可能
laravel reverbなどの常に動き続けるものの監視も可能
本番環境の監視についてはLaravel NightWatch に期待している。

Don't solve non-problems… - John Drexler
プロダクトマネジメントについて話す。
開発者はプロダクトマネージャーのように考えるべき。
プロダクトを作っている時、あなたはすでにプロダクトマネジメントをしている。
ロードマップ
PMの仕事の一つはロードマップを作ること。
実際のロードマップ(計画していない場合でも)
スコープ
何を優先すべきか判断している
実際のスコープ(うまく分けていなくても結果的には取捨選択している)
プロダクトマネジメントをナイフ(ツール)として持っておこう
これはLaravel, tailwindCSS, Livewireと同様に武器になるはず。
順序づけられた意味のある問題を効率的に解決しよう。
Problem(問題)
チワワにはなってはいけない。トリュフを探す豚になろう。
問題を怖がらず探し出す人になろう。
そのためには人々と話す必要がある
問題は機能要望ではない。
例:顧客からレポートページを作って欲しいと言われた時
問題を把握する前にやろうとするとTODOが膨らむ。
まず、顧客が解決したいことを確認しよう。なぜ必要なのかを理解するのが重要。
問題の本質を理解することでかなり簡潔なチケットになった。
meaningful(意味のある)
私たちの時間単価は高い。
問題ではないことを解こうとしないようにしよう。
解くべきではない問題
仮説的な問題
考えても仕方ない
些細な問題
解決しても得るものが少ない。
重力の問題
解決できない問題
スタンフォード大学のデザイン思考という本で詳しくされている。
トレードオフの問題
両立するのは無理な問題
Ordered list(順序づけられた)
7142の優先度が中のTODOを見たことがある。
やる順番をつけなくても結局順番はつけてやっていることに気づこう。
目指す状態は
- 順番が存在すること
- 全員が順番を知っていること
- 順番付の基準が明確なこと
Efficiently solve(効率的に解決する)
- 解決したら次に動こう。解決したものに時間をかけない
- リストに従おう。
- スコープを小さくしよう

Fun with PHP functions - Zuzana Kunckova
02/03(月) 23:50 ~ (日本時間)
levenshtein()
二つの単語間の距離を測る関数(何文字変更したらその単語になるか)
soundex()
ドキュメントがおもろい(理由もなくfalseを返す)
metaphone
similar_text()
文字の類似度を判定する
--
str_rot13()
date_sun_info()
日の出、日没などの情報を返す。
easter_date()
checkdate()
unixtojd()
ジュリアン歴の日付表示
timezone_identifiers_list()
タイムゾーンの一覧を表示
418個ある
chop
rtrim()のエイリアス

A field guide to writing PHP extensions - Michi Hoffmann
02/04(火) 00:20 ~ (日本時間)
PHP がどのように動いているのか知りたかった。
Conference Driven Development(カンファレンス駆動開発)の力を借りて解析を始めた。
PHP拡張とは何か
zend拡張はより仮想マシンの内部に入っている。
CはPHPより早い ext-JSON
PECLでインストールできる。
より新しい手法だとPIE
C コンパイラーを使って自分でビルドする

Laravel Update - Taylor Otwell
02/04(火) 00:55 ~ (日本時間)
Laravelのこれまでとこれから
Laravelは毎日300000 composer installされている。去年のLaracon EUから30%増加している。
Laravelが人気を博している理由はProductivity
これまでのLaravelはlaravel1.0のような感じがしていて。
これからLaravelの新しい時代(New Era)が始まる。
全ての開発者にとってLaravelをデフォルトの選択にしたい
2024年後半の振り返り
php.new
PHP環境をMac, Windows, Linuxで(1分以内に)簡単に構築できるようになった
Inertia 2.0
遅延プロップス、プリフェッチなどの機能が加わりさらに開発が容易に。
Inertiaは元々Laravelとは関係なく始まったOSSだったが先週正式にLaravelが管理することになった
flux
Livewire用UIライブラリ
VS Code 拡張
最も人気な無料エディターであるVS CodeでよりLaravelが開発しやすくなった。
今はベータだが、2月末に安定版になる。
今取り組んでいるもの
laravel.com
laravel.comウェブサイトのデザインの刷新。
laravel 12.0
破壊的変更は含まない予定。
今までのメジャーリリースに比べてマイナーアップデートに近い
composer updateするだけ。
2月末にリリース予定。
Laravel NightWatch
Laravel公式監視サービス
新しいスターターキット
Laravel Breeze, Laravel Jetstreamに代わる新しいスターターキットを作っている。
これらは統合され1つのスターターキットになる(初心者が選択に迷う必要はない)
スタックはReact/Vue/Livewire
Shadcn, Livewire fluxなどのモダンなライブラリと統合されている
2月末にリリース予定。
Laravel Cloud
下で詳しく説明
Larvel, PHP, Web開発においてゲームチェンジャーになると確信している。
新しいスターターキット
Demo: React starter kit
React/Inertia 2.0/TypeScript/Shadcnで構成されている
複数のレイアウトを用意しており、切り替え可能。(BreezeやJetstreamではレイアウトは固定だった)
全てはアプリケーションソースに含まれており、自分で変更も可能。
Dashboard
レイアウトの変更
app-sidebar-layout
を
app-header-layout
に変えると
サイドバースタイルからヘッダースタイルになる
レイアウトはアプリケーションに取り込まれているので、sidebar自体のスタイルも自分好みに容易に可能
Vue, Livewire
vueもshadcnを使っているので使い勝手やデザインは同じ。
LivewireはFluxを使っている。
Fluxのボタンなどの基本的なコンポーネントは2月末に無料公開されることになった。それを使っている。
Flux Proはchartなどの高機能なコンポーネントを提供するという棲み分けがされる予定。
Laravel Cloud
PHP全般で今まで存在したことのないデプロイサービスの提供を目指している。
Laravel Forgeは引き続き開発を続ける。(夏に新機能の発表も予定している)
なぜなら開発者はセルフホスティングとフルマネージの二つのデプロイの選択肢を持つべきだと思っているから
Dashboard
Organaizationに複数プロジェクトを紐づける仕組み
プロジェクト詳細画面でデプロイ履歴などを確認可能
コマンドパレット機能があり、プロジェクトの移動も用意
Applicationの作成
GitHubなどのソースコントロールプロバイダのリポジトリを選択する。
現状リージョンは以下の4つ(ローンチまでに追加予定)
- US East (Ohio)
- EC Central (Frankfurt)
- EU West (London)
- Asia Pacific(Singapore)
作成後、アプリケーションの構成を確認・変更可能
デプロイボタンを押すとデプロイ完了
内部的にはAWSにデプロイされている
デプロイ完了すると laravel.cloudドメインが付与されてアクセス可能になる
Databaseの追加
リージョンや休止状態に入るまでの秒数、オートスケール範囲を設定可能
Cacheの追加
Redis互換のCacheインスタンスが使用可能
環境変数
これらの外部サービスへの環境変数(.env)の設定はLaravel Cloudで自動的に行われる。
DB GUIクライアントとの統合
DeeplinkをクリックすることでTablePlusなどのDBクライアントに自動的に接続情報が設定され接続できる。
Storageの追加
S3 互換のオブジェクトストレージ(CloudFlareのもの)
disk nameの設定モーダルが表示される(Storage::disk()で設定する名前)
Setting
環境変数の上書きも可能
Commands
コマンドの実行も可能
Log
Application log
Access log
アプリケーションの設定
インスタントサイズ・オートスケール設定(範囲を指定可能)・Hybernationの設定・スケジューラー・Octaneの設定が可能
Queue Worker
Webサーバーで起動する場合
アプリケーション設定画面で設定可能
専用のワーカーサーバーを起動する場合
Webサーバーとは別にワーカークラスターを構築可能
- Add worker clusterを押下して設定を行う
Metrics
レスポンスの状況, CPU, Memoryなどを閲覧できる
コンパクトビュー/ディティールビューの切り替え
アプリケーションの概要を掴みやすいコンパクトビューにも変更可能
ディテールビューでは詳細な情報を閲覧可能
複数ブランチでのデプロイ
アプリケーションに対して複数環境を設定可能
ブランチと環境名を設定
新環境で設定をするが、別環境で使用しているDB,Cache,Storageを使うことも可能
デプロイすると新しいドメイン名が付与される
カスタムドメイン
Add Domainから独自ドメインを設定可能
ドメイン名を入力
サブドメインやリダイレクト設定を行える
DNSサーバーに設定すべきAレコードが表示される
リリース日
2月24日に以下をリリースする
- laravel.com
- laravel cloud
- starter kits
- Laravel 12
費用
Sandboxプラン
月額固定料金は無しで使用したリソースにのみ料金が発生する。
ハイバネーション(休止状態)の時は料金がかからない。
以下日本円換算(1$あたり155円で計算)
1アカウントあたりのユーザー数: 3名
Flex Compote(Laravelアプリケーションサーバー): 1.04円 / 1時間, 約776円/月
Serverless Postgres(DBサーバー): 6.21円 / 1時間
: 232.85円 / 1GB
Cache : 1.47円 / 1時間, 約1086円/月
ObjectStorage : 3.10円 / 1GB
Production プラン
月額20ドル(さらに使用量に応じた割引あり)
- カスタムドメイン
- オートスケーリング
- 大規模なレプリカサイズ
- ログ保持期間の拡張
- 追加の組織ユーザー
Business and Enterpriseプラン
価格については営業担当に要問い合わせ
- 無制限のオートスケーリング
- 専用コンピュート
- 高度なネットワーク機能
- 複数製品間の割引
- SOC 2(セキュリティ基準への準拠)
- サポートSLA(サービス品質保証)
まとめ
We must ship
なんでもいいからみんな作って欲しい
2025年はPHP, Laravelにとって歴史的な年になるはず。
Laravelコミュニティのみんなを信じている。