「DDDを"集約"から解放し、Laravel開発を加速させる新常識?」~【laravel】今週の人気記事TOP5(2025/12/14)
「DDDを"集約"から解放し、Laravel開発を加速させる新常識?」今週の人気記事TOP5(2025/12/14)
集約にこだわりすぎないDDD:Laravelで実践するアクション単位設計
DDDにおける「集約」への過度なこだわりは、リポジトリの肥大化を招き保守性を低下させる。本記事ではLaravelで、アクション単位設計(1プレゼンター-1ユースケース-1リポジトリ)を提案。これはDDDとADRパターンを組み合わせ、各アクションを独立させることで、変更影響を局所化し、テスタビリティ、保守性、可読性を向上させる。特に、長期運用されるサービスでその真価を発揮する。
新卒1年目の頃に書いたコードを読み直したら汚すぎて体調が悪くなった話
新卒1年目のPHP/Laravelコードが読みにくかったため、「リーダブルコード」を参考にリファクタリングを実施。タスク列挙、メソッド分割、変数・命名・コメントの修正を、テスト駆動開発と組み合わせて段階的に行い、可読性と保守性を向上させた。特に、ネストの深い処理をヘルパーメソッドに切り出し、早期リターンや説明変数の導入でコードを簡潔にした。
docker-composeでOpenTelemetryに入門してみる for Laravel
Laravel開発環境でOpenTelemetry入門。docker-composeでOpenTelemetry Collector, Grafana, Prometheus, Loki, Tempoを連携させ、ログ、トレース、メトリクスを収集・可視化する。Laravel側ではPHP拡張とComposerパッケージを導入し、環境変数でCollectorへのデータ送信を設定。カスタムメトリクスの送信も可能。これにより、APMの基礎を構築し、開発時のObservabilityを向上させる。
PHP自動計装ライブラリで学ぶOpenTelemetryのTrace
PHPのOpenTelemetry自動計装ライブラリは、zend_observerとPHP拡張機能により、コード変更なしでメソッド実行前後にスパン(Traceの一部)を自動生成します。hookメソッドや#[WithSpan]アトリビュート、#[SpanAttribute]アトリビュートで計装を定義し、スパンにはイベントや属性を付与できます。Laravelではopen-telemetry/opentelemetry-auto-laravelが、キュー投入時のコンテキスト伝搬(TraceContextPropagator利用)やイベント記録(Watcher利用)など、フレームワーク固有の自動計装を提供します。これにより、Observabilityの向上に貢献します。
ControllerとUseCaseってどう分けている?
ControllerとUseCaseは、「受付」と「担当者」の関係。Controllerはリクエストを受け取りアプリの流れを制御し、UseCaseはその中で実行される具体的なビジネスロジックを担います。この分離により、Laravelなどでのコード整理、保守性、テスト容易性が向上。MVCだけでは表現しきれない複雑な処理を、UseCase導入で明確化し、アプリ構造をより理解しやすくします。
【2025/12/12】「あなたのLaravel、DDDで本当に"集約"できてますか?設計の新常識を問う。」人気記事(2025/12/12)
集約にこだわりすぎないDDD:Laravelで実践するアクション単位設計
DDDで集約にこだわりすぎるとリポジトリが肥大化し保守性低下を招く問題に対し、Laravelで「アクション単位設計(1プレゼンター-1ユースケース-1リポジトリ構成)」を提案。これはDDDの層構造とADRパターンを組み合わせた「ARCパターン」として、各アクションごとに独立したコンポーネント群を設け、依存性逆転の法則を適用する。これにより変更影響を局所化し、テスタビリティ、保守性、スケーラビリティを高め、長期的なサービス開発を促進する。
docker-composeでOpenTelemetryに入門してみる for Laravel
LaravelアプリのAPM環境をdocker-composeで構築。OpenTelemetry Collectorを介し、Prometheus(メトリクス)、Loki(ログ)、Tempo(トレース)をGrafanaで可視化する構成を紹介。Laravel側ではPHP拡張・Composer・環境設定でOTelを有効化し、自動計装に加えカスタムメトリクス送信例も提示。結果、Grafanaでログ・トレース・メトリクスの一元確認に成功した。
PHP自動計装ライブラリで学ぶOpenTelemetryのTrace
PHPにおけるOpenTelemetry Tracesの自動計装について解説。ext-opentelemetry拡張とzend_observerを基盤に、hookメソッドや#[WithSpan]アトリビュートでメソッドにpre/postフックを仕込み、スパンを生成する。Laravelでは専用ライブラリが主要箇所にフックを設定し、TraceContextPropagatorでキュー処理などプロセス間でもコンテキストを伝搬。これにより、複雑なシステムで親子関係を持つスパンによる可観測性を確保する技術を学んだ。
新卒1年目の頃に書いたコードを読み直したら汚すぎて体調が悪くなった話
新卒時の汚いPHP/Laravelコードを、「リーダブルコード」手法とTDDを組み合わせたフローでリファクタリング。ネスト深いコードをメソッド分割、早期リターン、説明変数導入、命名・コメント修正を通じて可読性を大幅に改善しました。テストコードの存在が安全な改修を担保し、効果的なリファクタリングを達成。TDDとの併用が安全なコード改善に不可欠であることを再認識しました。
ControllerとUseCaseってどう分けている?
LaravelにおけるControllerとUseCaseの役割が解説されています。Controllerはリクエストを受け取りアプリの流れを決定する「受付」役、UseCaseはビジネスロジックなどの具体的な処理を実行する「担当者」役として明確に分離。これにより、コードの整理、保守性・テスト容易性の向上、そして複雑な処理におけるアプリケーション構造の明確化を実現します。MVCモデルだけでは複雑な要件を表現しきれない場合の技術的解決策として、UseCase導入の有効性を示唆しています。
Discussion