このガイドが存在する理由
WebSocket はもはやニッチなトランスポートではありません。トレーディングダッシュボード、チャットバックエンド、マルチプレイヤーゲーム、IoT 制御プレーン、AI ストリーミング応答、ブラウザベースの管理コンソール — ほぼすべてのモダンなインタラクティブアプリケーションは、少なくとも 1 つの WebSocket を開きます。2026 年に 「どのライブラリを使うべきか?」 と問う Delphi 開発者が直面する選択肢は、思ったほど多くありません: 古典的な Delphi ネットワーキングパッケージのすべてが RFC 6455 に追いついたわけではなく、追いついたものの中には非常に特定のニッチを狙うものもあります。
本ガイドは、2026 年時点の現実的な選択肢 — sgcWebSockets、Indy、TMS FNC WX、mORMot、Synapse — を概観し、最後に判断マトリックスを示します。主張がベンダーの現行リリースに依存する場合、本稿は執筆時点の状況を記述します。コミットする前に、必ずベンダーの最新チェンジログで詳細を確認してください。
候補
sgcWebSockets(eSeGeCe)
WebSocket と広範なモダンプロトコルファミリー(HTTP/2、HTTP/3、MQTT、AMQP、STOMP、SSE、WAMP、WebRTC、IoT、AI API)に焦点を当てた商用ライブラリ。完全な RFC 6455、per-message deflate、サブプロトコル、チャネル、ブロードキャストヘルパー、WatchDog 自動再接続、IOCP サーバースケーリング、JavaScript クライアントミラー、.NET ポート。非商用利用向けの Free Edition と 4 つの有償エディション。Delphi 7 から 13、加えて C++Builder と .NET。
Indy(標準)
Delphi 同梱の標準 Indy にはネイティブな WebSocket クライアントもサーバーも含まれません。いくつかのコミュニティアドオンが存在しますが(GitHub で「Indy WebSocket」を検索)、執筆時点で公式 IndyProject 配布の一部ではありません。Indy の上に直接 WebSocket を構築すると、本質的にフレーマー自体を自分で書くことになります。無料、IDE 同梱。
TMS FNC WX(旧 TMS WEB Core / FNC WebSocket)
TMS Software は FNC ファミリーの一部としてクロスフレームワーク WebSocket コンポーネントを出荷しています(TTMSFNCWebSocketClient とサーバー側は TMS XData / TMS Sparkle 経由)。VCL、FMX、LCL、TMS WEB Core で動作します。クライアント側は堅実、サーバー側は主にこれらの製品の機能として TMS XData / Sparkle スタック経由で提供されます。商用、開発者単位のサブスクリプション価格。Delphi 10.x 以降。
mORMot 2
Synopse(Arnaud Bouchez)によるオープンソースフルスタックフレームワーク。SOA/ORM/REST インフラと密接に統合された WebSocket クライアントとサーバーを含みます。mORMot の WebSocket は成熟しており高速で、バイナリフレーミングと per-message deflate をサポートし、大規模サービスで広く本番運用されています。トレードオフは mORMot が思想的であること — WebSocket 層だけを使うことは可能ですが、より広いフレームワークを採用したときに自然な適合となります。オープンソース(MPL/GPL/LGPL トライライセンス)、Delphi 7 以降、加えて FreePascal。
Synapse
古典的なオープンソース Pascal ネットワーキングライブラリ。執筆時点で、標準の Synapse は WebSocket 実装を含みません。Synapse の上に構築されたサードパーティ WebSocket 層はいくつか存在しますが、保守されていないか単一作者のプロジェクトです。無料。
機能マトリックス
| 機能 | sgcWebSockets | Indy(標準) | TMS FNC WX | mORMot 2 | Synapse |
|---|---|---|---|---|---|
| WebSocket クライアント | あり | なし | あり | あり | なし |
| WebSocket サーバー | あり | なし | TMS XData/Sparkle 経由 | あり | なし |
| RFC 6455(フレーム、マスキング、制御フレーム) | あり | n/a | あり | あり | n/a |
| per-message deflate(RFC 7692) | あり | n/a | 部分的 | あり | n/a |
| サブプロトコル/チャネル/ブロードキャスト | あり、組み込み | n/a | 手動 | 手動 | n/a |
| 自動再接続/WatchDog | あり | n/a | 手動 | 手動 | n/a |
| TLS 上 WebSocket(wss://) | あり(OpenSSL、SChannel、BoringSSL) | n/a | あり | あり | n/a |
| WebSocket-MQTT / STOMP / WAMP サブプロトコル | あり | n/a | なし | 限定的 | n/a |
| HTTP/2、HTTP/3 | あり | なし | なし | 限定的 | なし |
| IOCP / epoll サーバースケーリング | あり(Windows IOCP、Linux epoll) | 接続ごとスレッド | ホストサーバー依存 | あり | n/a |
| JavaScript クライアントミラー | あり(JS ライブラリ同梱) | n/a | あり(TMS WEB Core 統合) | 手動 | n/a |
| .NET ポート | あり(同一 API) | n/a | なし | なし | n/a |
| Delphi バージョン | D7 - D13 | D7 - D13 | D10.x - D13 | D7 - D13、FPC | D7 - D13、FPC |
| ライセンス | 商用(Free Edition あり) | 無料、MIT 系 | 商用 | オープンソーストライライセンス | 無料 |
| ベンダーサポート | 有償エディションに含まれる | コミュニティ(IndyProject) | サブスクリプションに含まれる | Synopse 経由の商用サポート | コミュニティ/単一作者 |
| 活発な保守 | 月次リリース | 遅いが安定 | 定期的 | 非常に活発 | 遅い |
シナリオ別の選択
シナリオ 1: サードパーティ WebSocket API に接続する VCL デスクトップアプリ
wss:// に接続し、JSON を送信し、JSON を受信し、切断時に再接続し、TLS を処理するクライアントが必要です。最短経路は sgcWebSockets(コンポーネントをドロップし、URL を設定し、WatchDog.Attempts を設定し、完了)か、すでに FNC パックをライセンスしている場合は TMS FNC WX です。Indy と Synapse はフレーマーを自分で書く必要があり、RFC 6455 のエッジケースを正しく扱うには多くの作業が必要です。
シナリオ 2: 数百のクライアント向け WebSocket サーバー構築
同一ポートで HTTP と WebSocket を提供し、チャネルとブロードキャストを備えたスタンドアロンサーバーコンポーネントが欲しいなら、sgcWebSockets が自然な選択です。すでに mORMot フレームワーク内で SOA/REST サービスを構築しているなら mORMot 2 が自然な選択 — その WebSocket 層はスタックの残りと統合され、大規模で実戦試験済みです。
シナリオ 3: 数万の同時接続
sgcWebSockets(Windows で IOCP、Linux で epoll)と mORMot 2 の両方が、その規模で本番デプロイされています。標準 Indy の接続ごとスレッドモデルは、相当のアーキテクチャ作業なしには追いつきにくいでしょう。TMS FNC WX のスケーリングは選択したホストサーバー(XData/Sparkle)に依存します。
シナリオ 4: Pascal フルスタックフレームワーク内の WebSocket(REST、ORM、SOA)
mORMot 2。mORMot の用途そのものです。WebSocket 層だけを単独で採用することは可能ですが、より広いフレームワークを受け入れたときに最も価値が出ます。
シナリオ 5: クロスフレームワーククライアント(VCL、FMX、LCL、TMS WEB Core)
TMS FNC WX はまさにそのケース向けに設計されています — 4 つすべてで 1 つの API。sgcWebSockets は VCL、FMX、C++Builder に加えて .NET ポートをカバーしますが、Lazarus/FPC は対象外です。
シナリオ 6: WebSocket に加え MQTT、AMQP、WebRTC、HTTP/2、AI API が必要
本比較で上記すべてを単一製品と単一コンポーネントモデルで出荷する唯一のライブラリは sgcWebSockets です。プロジェクトが「ただの WebSocket クライアント」から「フルなリアルタイムスタック」への軌道にあるなら、早期の統合は後で複数ライブラリを貼り合わせるよりも通常安価です。
シナリオ 7: 予算が厳しい、オープンソースのみ、趣味プロジェクト
mORMot 2(オープンソース)は無料で本格的な WebSocket 実装を提供します。sgcWebSockets の Free Edition は非商用利用の選択肢です。コミュニティ WebSocket アドオン付きの Indy は技術的には可能ですが、関連 RFC を自分で読むことになると思ってください。
判断マトリックス
| 最重視するもの | 推奨 |
|---|---|
| 動くクライアントまでの最短時間 + ベンダーサポート | sgcWebSockets |
| オープンソースフルスタックフレームワーク | mORMot 2 |
| クロスフレームワーク(VCL/FMX/LCL/WEB Core) | TMS FNC WX |
| 商用の最大同時接続数 | sgcWebSockets |
| オープンソースの最大同時接続数 | mORMot 2 |
| WebSocket + MQTT + HTTP/2 + WebRTC + AI を 1 製品で | sgcWebSockets |
| 無料/コミットなしの趣味プロジェクト | mORMot 2 または sgcWebSockets Free Edition |
| すでに TMS XData / Sparkle プロジェクト内 | TMS FNC WX |
| すでに mORMot プロジェクト内 | mORMot 2 |
コミット前のチェックリスト
- Delphi バージョン — ベンダーの互換性マトリックスに正確なバージョン(D7/D10.4/D11/D12/D13)が記載されているか確認。
- RFC 6455 準拠 — ライブラリが Autobahn WebSocket テストスイートに合格するか、少なくともフラグメンテーション、フラグメンテーション中の制御フレーム、UTF-8 検証を正しく扱うかを確認。
- TLS プロバイダー — OpenSSL が最も一般的。OpenSSL DLL を出荷できない場合は SChannel が重要。QUIC が必要なら BoringSSL/ngtcp2 が重要。
- 再接続セマンティクス — 自動再接続、指数バックオフ、ping/pong キープアライブは、コードではなく設定であるべき。
- サーバースケーリングモデル — 数万接続には IOCP/epoll、数千程度までなら接続ごとスレッドで十分。
- ライセンス互換性 — トライライセンス(mORMot)、商用サブスクリプション(TMS)、エディション別商用(sgcWebSockets)、無料(Indy/Synapse)。
- 保守シグナル — 過去 12 ヶ月のチェンジログを見る。活発なライブラリは少なくとも四半期ごとに何かを出荷します。
まとめ
2026 年の Delphi WebSocket 風景は、最初に見えるよりも健全です。クイックなクライアントなら、sgcWebSockets で数分で動かせます。オープンソースフルスタックプロジェクトなら、mORMot 2 を打ち負かすのは困難です。クロスフレームワーク GUI クライアントなら、TMS FNC WX は自然な適合です。標準 Indy と Synapse は古典的インターネットプロトコルとして引き続き価値がありますが、WebSocket を所有していません。正しい選択は、プロジェクトが「単一エンドポイント」から「完全なリアルタイムプラットフォーム」までのスペクトル上のどこにいるかに依存します — 今日の要件と、2 年後にプロジェクトがどこにあると予想するかの両方に合うライブラリを選びましょう。