ADR-005 - PSR-15 ミドルウェア パターン
ADR-005: XOOPS 4.0向けPSR-15ミドルウェア パターン
Section titled “ADR-005: XOOPS 4.0向けPSR-15ミドルウェア パターン”リクエスト処理パイプラインの改善のためPSR-15 HTTPサーバー リクエスト ハンドラー(ミドルウェア)を採用
提案 - XOOPS 4.0リリース向けの評価中
コンテクスト
Section titled “コンテクスト”現在のアプローチ
Section titled “現在のアプローチ”XOOPS 2.5ではモノリシック リクエスト処理アプローチを使用:
// 現在: 順序処理require_once 'mainfile.php';// → カーネル初期化// → ユーザー認証// → モジュール ロード// → ページ レンダリング
// すべて1つのフロー内、混合関心現在のアプローチの問題
Section titled “現在のアプローチの問題”- 混合関心 - 認証、ロギング、ルーティングがすべて絡み合い
- テストが難しい - ユニット テストが困難
- 拡張が難しい - モジュールはプリロード/イベントのみでフック可能
- 分離が不十分 - リクエスト処理ロジックがコード全体に散在
- 構成不可 - ステップを簡単に並べかえたり再順序付けできない
PSR-15ミドルウェアとは
Section titled “PSR-15ミドルウェアとは”PSR-15は標準インターフェースを定義:
<?phpinterface RequestHandlerInterface { public function handle(ServerRequestInterface $request): ResponseInterface;}
interface MiddlewareInterface { public function process( ServerRequestInterface $request, RequestHandlerInterface $handler ): ResponseInterface;}ミドルウェア チェーン:
リクエスト ↓[ロガー] → リクエストをログ ↓[認証] → ユーザー セッションを検証 ↓[CORS] → クロスオリジンを確認 ↓[ルーター] → ハンドラーにディスパッチ ↓[ハンドラー] → レスポンスを生成 ↓レスポンスXOOPS 4.0向けPSR-15ミドルウェア スタックを採用
Section titled “XOOPS 4.0向けPSR-15ミドルウェア スタックを採用”ポジティブな影響
Section titled “ポジティブな影響”- 関心の分離 - 各ミドルウェアが1つの責任を処理
- テスト可能性 - 個別のミドルウェア コンポーネントを簡単にユニット テスト
- 構成可能性 - ミドルウェアを混合、再順序付け可能
- 標準準拠 - PSR-15およびPSR-7基準を使用
- 拡張性 - モジュールはカスタム ミドルウェアを簡単に追加
- デバッギング - パイプライン経由のクリアなリクエスト フロー
- パフォーマンス - 特定のミドルウェア レイヤーを最適化可能
- 相互運用性 - サードパーティのPSR-15ミドルウェアを使用可能
ネガティブな影響
Section titled “ネガティブな影響”- 学習曲線 - 開発者はPSR-15を理解する必要
- パフォーマンス オーバーヘッド - パイプライン内の関数呼び出しが増加
- 複雑さ - モノリシック アプローチより多くの動く部分
- 移行努力 - 既存コードのリファクタリングが必要
- 依存関係 - PSR-7 HTTPライブラリが必要
フェーズ1: 基盤 (Q2 2026)
Section titled “フェーズ1: 基盤 (Q2 2026)”- PSR-7 HTTP メッセージ ラッパーを実装
- ミドルウェア ディスパッチャーを作成
- コア ミドルウェア(セッション、認証)を実装
- カーネルをミドルウェアを使用するように更新
フェーズ2: 統合 (Q3 2026)
Section titled “フェーズ2: 統合 (Q3 2026)”- 既存機能をミドルウェアに移行
- モジュール ミドルウェア サポートを追加
- ミドルウェア テスト ユーティリティを作成
- 包括的なドキュメントを作成
フェーズ3: 移行 (Q4 2026)
Section titled “フェーズ3: 移行 (Q4 2026)”- 古いコード用の互換性レイヤーを提供
- モジュール更新をサポート
- パフォーマンス最適化
- セキュリティ監査
フェーズ4: リリース (Q1 2027)
Section titled “フェーズ4: リリース (Q1 2027)”- XOOPS 4.0をミドルウェアでリリース
- 古いプリロード/フック システムを廃止予定
- コミュニティ フィードバックと更新
関連する決定
Section titled “関連する決定”- ADR-001: モジュール式アーキテクチャ - 基盤
- ADR-004: セキュリティ システム - 認証用ミドルウェア を使用
- ADR-006: 二要素認証 - ミドルウェアとして可能
#xoops #adr #psr-15 #middleware #architecture #psr-7