🥇

「AI時代、クリーンアーキテクチャはモジュラーモノリスへ進化する。」~【laravel】今週の人気記事TOP5(2025/12/28)

に公開

「AI時代、クリーンアーキテクチャはモジュラーモノリスへ進化する。」今週の人気記事TOP5(2025/12/28)

5年間 Laravel を使って辿り着いた,AI 時代に考える「なんちゃってクリーンアーキテクチャ」のその先

Laravel 歴5年のフルスタックエンジニアが、AI時代を見据え「なんちゃってクリーンアーキテクチャ」からの進化形として「モジュラーモノリス」と「4層アーキテクチャ」を提案。

主な内容:

  • モジュール分割: 関連ドメインを「モジュール」として分割し、Contract(公開API)経由で疎結合にする。
  • 4層アーキテクチャ: 各モジュール内を Presentation, Application, Domain, Infrastructure の4層に分け、責務を明確化。
  • AI活用: コード量の増加はAIでカバーし、設計による「コードの治安維持」を重視。
  • PHP 8.4活用: Property HooksやInterfaceのプロパティ宣言を活用し、Entity設計を洗練。
  • テスタビリティ・保守性向上: 依存関係の静的解析ツール(deptrac)の活用や、型安全なID、例外設計を導入。

これにより、大規模・複雑なアプリケーションでも保守性・拡張性が高く、AIによる開発効率も最大化できるアーキテクチャを目指す。

DynamoDBのリトライとログについて考える for PHP

DynamoDB障害を受け、PHP SDKでのリトライ設定とログ検知を見直した。SDKデフォルトのリトライ(max_attempts設定可能)に加え、aws-sdk-retryヘッダーやエラーログでの検知、必要に応じた独自リトライ実装が有効。テンポラリなエラーはSDKに任せ、ログで頻発するエラーを監視し、テーブル設計の見直し等に繋げることが推奨される。

ドメインモデルの管理にYAMLを使ってみた

TechBowlでは、ビジュアルツールでのドメインモデル管理におけるコードと図の乖離、変更履歴追跡困難といった課題を解決するため、YAMLによる構造化テキスト管理を導入しました。YAMLからドメインオブジェクト(Entity, ValueObject等)の雛形を自動生成し、開発効率化とドメイン知識のバージョン管理を実現。また、YAMLからDOTファイル生成、Graphvizによる図の自動化も行い、管理の内製化とコスト削減にも成功しています。

ド初心者がメール送信機能実装した話

文系未経験のエンジニアがLaravelでメール送信機能を実装した話。
Mailableクラスでメール内容を定義し、BladeでHTMLを組み立てる。
JobShouldQueue)でメール送信をバックグラウンド処理化し、Webアプリの応答性を保つ。
Consoleコマンドでリマインダーを検索し、Jobdispatch
Kernel.phpのタスクスケジューラでコマンドを毎分実行。
php artisan email:reminderでテスト可能。Mailpit等で受信確認もできる。

【Laravel初心者向け】エラーをAIに聞く前に!Tinkerで自分で原因を探る方法

Laravelでエラー発生時、AIに頼る前にTinkerを使ったデバッグ方法を紹介。TinkerはCLI上で対話的にLaravelアプリを操作・確認できるREPLツール。dd()ではブラウザがデバッグ表示で止まるのに対し、Tinkerならコード修正不要でアプリに影響なく、データベースのデータ確認やリレーション状況などを即座に調査可能。エラー解決の効率化に貢献する。

「LaravelとAI連携は、もはや開発の標準になる。」今週の人気記事TOP5(2025/12/21)

Laravel + Vue 3 Docker 開発環境構築手順

Dockerとdocker-compose.ymlを使用し、Laravel (PHP 8.4)とVue 3 (TypeScript, Vite) を分離した開発環境を構築する手順を解説。各サービスをコンテナ化し、backendディレクトリでLaravel、frontendディレクトリでVue 3プロジェクトを作成。docker compose up -dで起動し、localhost:8000でLaravel、localhost:5173でVueの動作確認が可能。Laravel APIとVueの連携、DB接続設定についても言及。

【Laravel / PHP】デバッグ初心者が覚えるべきログ出力4選

Laravel/PHPにおけるデバッグ初心者向けのログ出力方法を解説。ログはプログラムの「見える化」に不可欠。特に、処理を止め変数内容を表示するdd()、型も確認できるvar_dump()、配列を見やすくするprint_r()、シンプルに出力するechoの4つが紹介されている。これらのログを1行ごとに仕込み、処理到達点やデータ内容を確認することで、エラー原因の特定と解決に繋がる。

Laravelで依頼マッチングサービス『Requste』を作り始めた

Laravelで依頼マッチングサービス『Requste』を個人開発。実力あるのに埋もれているクリエイターに活躍機会を提供。MVPでは依頼者(Client)と制作者(Creator)のロール管理、案件一覧表示、アクセス制御を実装。詰まった箇所は、認証・ロール判定ロジックの誤り。!$user || !in_array($user->role->value, $roles, true)への修正で、未ログイン・権限なしユーザーの403エラーを正しく制御。今後は案件作成・詳細表示機能などを実装予定。

useStreamとAWS BedRock、そしてOpenAIまでも使ったAIチャットデモ(2) 応用編

本記事では、useStreamとLaravelを用いたAIチャットデモの応用編として、サーバーからデータ以外のプロパティをPartial Reloadで更新する方法、およびAWS BedrockとOpenAI APIの利用について解説しています。

特に、BedrockのPHP SDKにおけるストリーミングの制限(全体完了まで待機してしまう)が示され、リアルタイムストリーミングにはOpenAI APIの利用が推奨されています。OpenAI APIでは sendConversationStream を使用して、文字単位でのストリーミング配信を実現し、UXを向上させています。また、チャットの累計トークン数とコスト計算機能も追加され、AIプロバイダーの切り替え機能も実装されています。

MySQLでid=0をINSERTすると別のIDが入る罠

MySQLのAUTO_INCREMENTカラムに0をINSERTすると、NULLと同様に次の連番が割り当てられるという仕様です。これはPostgreSQLやSQLiteと異なり、Factoryでの0による設定がテストの不安定化を招く原因となり得ます。対策として、Factoryでの関連設定の最適化、外部キー制約の追加、またはNO_AUTO_VALUE_ON_ZEROモードの活用が推奨されます。

「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導入の有効性を示唆しています。

CareNet Engineers

Discussion