【設計コンセプト】

はじめに


本ページの目的

SOCKET-MANAGER Framework が採用しているサーバー設計上の基本思想を整理し、 「なぜこのような構造になっているのか」を理解するための 上位レイヤーのコンセプトを解説します。

本ページで扱う内容は、特定のクラス構造や API の説明ではなく、 TCP / UDP / WebSocket / IPC といった多様な通信方式を扱ううえで どのような設計原則を採用しているのかという アーキテクチャ思想そのものです。

この思想は、後述する「プロトコル非依存」「共有基盤」「イベント統合」 「運用品質」といった複数の要素から構成されており、 これらを総合的にまとめたモデルが アーキテクチャ ページで紹介している CUEI(または CUEI/O) という概念です。
CUEI はアーキテクチャ思想そのものを指し、 CUEI/O はそこに運用品質(Operation)を統合した拡張モデルです。
本ページでは両者の背景となる設計コンセプトを中心に説明します。


ソケット通信とプロトコルの多様性

ソケット通信は広義には Socket API を利用した通信全般を指し、 実際には TCP / UDP を基盤として HTTP / DNS / FTP / SSH / WebSocket(RFC 6455) など 多様なプロトコルが構築されています。
つまり、汎用的で堅牢な TCP / UDP 基盤さえあれば、 基本的にはどのようなプロトコルでも実装できるはずです。


IPC とマイクロサービスへの発展性

自由度の高いプロトコル共通基盤が存在すれば、 INET ベースの IPC も任意のプロトコルで構築でき、 外部ミドルウェアに依存しない高速なプロセス間通信を実現できます。
これは将来的に マイクロサービス構成 を意識した組み込みにもつながり、 サーバー間通信をアプリケーションの一部として自然に扱えるようにします。


通信処理とアプリケーションロジックの分離

通信処理とビジネスロジックが密結合になると、 再利用性が低く、長期運用に耐えないシステムになりがちです。
そのため本フレームワークでは、通信処理とアプリケーションロジックを 明確に切り分ける設計を重視しています。


可観測性と運用品質の重要性

実運用においてはデバッグのしやすさや監視性といった 可観測性(Observability)が欠かせません。
本フレームワークは、運用フェーズでのシームレスな連携を前提に、 障害解析・性能監視・スケール戦略を含めた 運用品質(Operation Quality)を 最初から組み込んだ設計を採用しています。


本ページの位置づけ

これらの思想を総合的に整理したものが CUEI(または CUEI/O)であり、 本ページではその背景となる設計コンセプトを明確にします。

プロトコル非依存アーキテクチャ(TCP/UDP/WebSocket/IPC の統合思想)

CUEI の最も重要な特徴は、TCP / UDP / WebSocket / IPC といった 異なる通信方式を 単一のセッション抽象化 に統合する点です。
通常、通信方式ごとに API やイベントモデルが分断され、 アプリケーション側はプロトコル差異に引きずられがちです。

CUEI では、これらの差異を下位レイヤーに閉じ込め、 上位レイヤーは「セッション」「イベント」「ルーティング」という 一貫した抽象化のみを扱うことを前提とします。
これにより、アプリケーションはプロトコル差異を意識せず、 同一のコードパスで TCP / UDP / WebSocket / IPC を扱うことができます。

このプロトコル非依存アーキテクチャは、 実装言語やフレームワークに依存しない 設計上の原則として定義されており、
SOCKET-MANAGER Framework はその原則を PHP で実装した例のひとつです。

本フレームワークにおけるこの思想は、後述する 通信抽象化 ページで より詳細に説明します。

共有基盤としての CUEI(通信・イベント・IPC の統合基盤)

CUEI は、単なる通信層ではなく、 アプリケーション全体の「共有基盤(Union)」として機能することを目的とした アーキテクチャモデルです。
通信、イベント、IPC、ルーティング、監視といった要素を ばらばらに扱うのではなく、 統一された基盤上で一貫したモデルとして扱うことを重視します。

この共有基盤という考え方は、分散構成や マルチサーバー構成において特に効果を発揮し、
サーバー間通信(IPC)やイベント駆動アーキテクチャを 自然に統合するための土台となります。

SOCKET-MANAGER Framework では、この共有基盤モデルを 具体的なクラス構造や設定ファイルとして具現化していますが、
ここで述べているのはあくまで どの実装にも適用可能な抽象モデルです。

本フレームワークにおける詳細は 共有基盤 にて解説します。

イベント駆動とルーティングの統合(イベント駆動アーキテクチャの統合モデル)

CUEI では、通信イベント・内部イベント・IPC イベントを すべて同一のイベントループ上で扱うことを前提としています。
これにより、アプリケーションは 「どこから来たイベントか」を意識する必要がなくなり、 イベント駆動アーキテクチャの一貫性が保たれます。

また、CUEI のルーティングモデルはプロトコルに依存せず、 セッション単位でのハンドリングを可能にします。
これにより、WebSocket のような双方向通信でも、 UDP のようなコネクションレス通信でも、 同じルーティングモデルを適用できます。

この「イベントとルーティングの統合」は、 フレームワーク固有の仕様ではなく、 CUEI が掲げる アーキテクチャ上のパターンです。
SOCKET-MANAGER Framework は、そのパターンを PHP で実装した具体例と位置づけられます。

本フレームワークにおけるこの統合モデルは、 イベント駆動アーキテクチャIPC(サーバー間通信) の両方に直結します。

運用品質(Operation Quality)を重視した設計

CUEI/O の “O” は Operation を意味し、 運用品質を設計段階から重視する思想を表しています。
ここでいう運用品質とは、単に「動く」ことではなく、
高負荷環境や OS 制約下でも安定して動作すること、 監視しやすく、障害時に原因を特定しやすいこと、 スケールアウトが容易であることなどを含む、 実運用に耐えるための総合的な品質を指します。

CUEI/O は、OS レベルの制約やノイズを前提条件として受け入れたうえで、
ログ出力・メトリクス・トレースといった可観測性の仕組みと、 スケール戦略やフェイルオーバー戦略を アーキテクチャの一部として組み込むことを目指しています。

これは ITIL v4 の「価値中心」「継続的改善」の思想とも親和性が高く、 CUEI/O の設計原則に深く影響を与えています。
SOCKET-MANAGER Framework は、この運用品質の思想を 具体的なログ設計・監視連携・ベンチマークなどとして実装した例です。

設計原則(Design Principles)

以下は CUEI/O 全体を貫く主要な設計原則です。

  • Protocol-independent Communication
    — 通信方式に依存しない抽象化を提供する。
  • Unified Session Model
    — TCP / UDP / WebSocket / IPC を単一のセッションとして扱う。
  • Event-driven Architecture
    — すべての入出力をイベントとして統一的に扱う。
  • Shared Foundation
    — 通信・イベント・IPC を統合した基盤を提供する。
  • Operational Quality
    — 実運用での安定性・監視性・拡張性を重視する。
  • Scalable & Non-blocking
    — 高負荷環境でもスケールする非同期モデルを採用する。
これらは SOCKET-MANAGER Framework 固有の仕様ではなく、
CUEI/O を構成する アーキテクチャ上の原則セットとして定義されています。

各ページとの関係

このページで説明した設計コンセプトは、 CUEI というアーキテクチャモデルの中核となる思想をまとめたものです。
ADVANCED カテゴリの各ページは、この思想を SOCKET-MANAGER Framework に具体的に落とし込んだ 実装例として位置づけられます。

これらのページを順に読み進めることで、
CUEI のアーキテクチャ思想がどのように 実際のフレームワーク構造へと落とし込まれているかを 段階的に理解できるようになっています。