【シンプルソケット機能】

はじめに

SOCKET-MANAGER Framework に新たに追加された「シンプルソケット機能(SimpleSocketGeneratorクラス)」は、従来の SocketManager や RuntimeManager と並ぶ新しいカテゴリです。
状態遷移を必要としない単純な送受信に特化し、TCP/UDP 通信をシンプルな構造で実装できます。
API サーバー、IPC 用途など、軽量なソケット通信を素早く構築したい場面に最適です。

参考リンク: 本記事では、この新機能の概要、用途、スキャフォールディング対応、実装パターンを紹介します。

用途と想定シナリオ

シンプルソケット機能は、TCP/UDP 通信をシンプルに実装したい場面で活用できます。
  • API サーバー:リクエストとレスポンスの単純なやりとり
  • IPC(プロセス間通信)用途:複雑な状態管理を必要としないケース
  • 軽量なクライアント/サーバー実装:テスト用サーバーや簡易モニタリング
「状態遷移を伴わない単純な送受信」にフォーカスしているため、学習コストを抑えつつ素早く通信処理を組み込めます。

SOCKET-MANAGER Framework のシンプルソケット機能は、TCP/UDP 通信をフレームワーク内部でそのまま扱う設計のため、余計な抽象化レイヤーを挟まず高速に動作します
また、通信処理には ダウンタイム(待機時間)を任意に設定できる仕組みがあり、トラフィック量やサーバー負荷に応じて柔軟に調整できます。

データフォーマット

シンプルソケット機能で扱うデータは、非常にシンプルな構成になっています。
[ データ長 (2バイト, ネットワークバイトオーダー) ] + [ ペイロード部 ]
                    

  • データ長
    • 先頭 2 バイトに格納
    • ネットワークバイトオーダー(ビッグエンディアン)で表現
    • ペイロード部のバイト数を示す
  • ペイロード部
    • 自由定義のデータ領域
    • JSON 文字列やバイナリデータなど、用途に応じて任意の形式を格納可能

純正ライブラリ利用時の挙動

SOCKET-MANAGER Framework のシンプルソケット機能を利用する場合、送受信メソッドは データ長の付与や解釈を意識する必要はありません
アプリケーション側はペイロード部分のデータのみを扱えばよく、ライブラリが内部でデータ長を付与・解釈してくれます。

他ソリューションとの連携時の注意点

外部のライブラリや独自クライアント/サーバーと通信する場合は、データフォーマットを意識する必要があります
具体的には、送信時にペイロードの先頭へ 2 バイトのデータ長を付与し、受信時には先頭 2 バイトを読み取ってペイロード長を判定する処理を実装してください。

スキャフォールディング対応

他の機能と同様に、シンプルソケット機能も 専用のスキャフォールディングコマンド に対応しています。
  • TCP 通信
  • サーバー用コードの自動生成
  • クライアント用コードの自動生成
  • UDP 通信
  • サーバー/クライアント兼用コードの自動生成
> php worker simple:tcp-server MainForTcpServerTest
> php worker simple:tcp-client MainForTcpClientTest
> php worker simple:udp MainForUdpTest
                    
これにより、最小限のコードでソケット通信アプリを立ち上げられます。

実装パターン

SimpleSocketGenerator クラスを利用した実装には、以下の3つのパターンがあります。
  1. setUnitParameter メソッド
    • UNIT パラメータインスタンスを渡すことで SocketManager 側で利用可能
    • 生成されたインスタンスは UNIT パラメータの simple_socket プロパティにセットされ、UNIT 内で利用できる

  2. setKeepRunning メソッド
    • イベントループ周期でコールバックされる関数や Closure 内に送受信処理を実装
    • 常時実行処理を登録することで、周期的な通信処理が可能

  3. generate メソッド
    • 返却されるインターフェースメソッドを使って送受信等を行う

関連ドキュメント


SimpleSocketGenerator の各メソッド解説

SimpleSocketGenerator クラスで利用できる主要メソッドをまとめた解説ページです。
各メソッドごとにアンカーリンクを設けているため、必要な箇所へすぐにアクセスできます。

生成されるインターフェースの解説

SimpleSocketGenerator で生成される各インターフェースの詳細解説ページです。
用途に応じてサーバー/クライアントの実装方法を確認できます。

新規開発環境

シンプルソケット機能は、他の機能と同様に 新規開発環境 から利用可能です。
専用コマンドを使うことで、TCP/UDP サーバーやクライアントの雛形をすぐに生成可能。

サンプル紹介

実際の利用例として、SOCKET-MANAGER Launcher のカスタムモニタリング機能で利用している UDP 通信の実装を紹介しています。

おわりに

  • シンプルソケット機能は、軽量な TCP/UDP 通信を素早く実装できる新機能
  • スキャフォールディング対応により、最小限のコードで開発開始可能
  • 実装パターンは「generate」「setKeepRunning」「setUnitParameter」の3種類
  • 他の機能と同様に新規開発環境リポジトリと連携
この機能を活用することで、SOCKET-MANAGER Framework におけるソケット通信開発の選択肢が広がり、用途に応じた最適な実装が可能になります。