Delphi & C++ Builder WebSocket ライブラリ — 比較ガイド

2026 年時点で Delphi および C++ Builder 開発者が利用可能な WebSocket ライブラリ (sgcWebSockets、Indy、ICS、TMS FNC WebSocket、mORMot 2、単機能 MQTT ライブラリ) について、一次情報源を引用した中立的な比較調査です。すべての機能記述は各プロジェクトの公式ドキュメントへリンクしています。

開発者が実際に使う 6 つのライブラリ

各ライブラリの 1 段落の要約と、公式ドキュメントへのリンクです。詳細な比較は下のマトリクスにあります。

Indy (Internet Direct)

Indy Working Group / Remy Lebeau · BSD / MPL (オープンソース)

近年の RAD Studio インストールにすべて同梱される、オープンソースの TCP / UDP / 生ソケットライブラリです。120 以上の高レベルプロトコルクライアントとサーバー (HTTP、SMTP、POP3、IMAP、FTP、NNTP、IRC ほか) を提供しますが、ネイティブの WebSocket クライアントやサーバーは含まれません。通常は TIdHTTP / TIdHTTPServer 上にサードパーティ製 WebSocket アドオンを追加して利用します。

公式ページ

ICS (Internet Component Suite)

François Piette / Magenta Systems Ltd · 無償、ソース公開

François Piette によるオープンソースの Delphi / C++ Builder ネットワークライブラリです。WebSocket サポートは ICS V9.0 で TSslWebSocketCli (OverbyteIcsWebSocketCli 内) と、既存の ICS Web サーバー上のサーバークラス THttpWSSrvConn として追加されました。

公式ページ

TMS FNC WebSocket / TMS Sparkle

TMS Software · 商用

TMS Software は関連する 2 つの製品を提供しています。TMS Sparkle はクロスプラットフォームの HTTP クライアント / サーバーフレームワークです (TMS XData や TMS RemoteDB の内部でも使用されています)。TMS FNC WebSocket は RFC 6455 を実装する別個の VCL + FireMonkey 用 WebSocket クライアント / サーバーペアです。

公式ページ

mORMot 2

Arnaud Bouchez / Synopse · MPL / GPL / LGPL (オープンソース)

非同期 HTTP / WebSocket サーバー、REST/JSON、OpenAPI / Swagger、LDAP、DNS、ACME、暗号プリミティブを備えた、オープンソースの Object Pascal 用 SOA / ORM / MVC フレームワークです。Delphi 版のサーバーユニットは Windows のみが対象で、FPC (Free Pascal) は同じサーバーコードを Linux、BSD、macOS 向けにビルドできます。モバイルクライアントはすべてのプラットフォームでサポートされます。

公式ページ

単機能の MQTT 専用ライブラリ

複数のコミュニティ著者 · 多様 (通常は MIT / BSD / Apache)

Delphi 向けの単機能 MQTT クライアントが多数 GitHub に公開されています。通常は MQTT 3.1.1 のクライアント側のみを対象とし、MQTT 5.0 サーバー、AMQP、STOMP、WAMP は含まれず、個人作者によって保守されています。

公式ページ

機能の横並び比較

チェック () はプロジェクトがネイティブサポートをドキュメント化していることを示します。ダッシュ () はネイティブでは提供されていないことを示します。チルダ (~) は部分的 / アドオン経由 / 明示的にドキュメント化されていないことを示します。検証可能だった内容は「ソース」セクションをご参照ください。

プロトコル、トランスポート、ライセンス

16 行
機能 sgcWebSockets Indy (Internet Direct) ICS (Internet Component Suite) TMS FNC WebSocket / TMS Sparkle mORMot 2 単機能の MQTT 専用ライブラリ
WebSocket クライアント RFC 6455 クライアント ~
WebSocket サーバー RFC 6455 サーバー ~
TLS 1.3 提供されるトランスポートが TLS 1.3 をサポート ~ ~
HTTP/2 クライアント ネイティブ HTTP/2 クライアント (RFC 7540 / 9113) ~
MQTT MQTT 3.1.1 / 5.0 クライアントを内蔵 ~ ~
AMQP AMQP 0.9.1 / 1.0 クライアントを内蔵
STOMP STOMP 1.0 / 1.2 クライアントを内蔵
WAMP WAMP v1 / v2 クライアントを内蔵
サーバープッシュ / ストリーミング 長時間維持されるプッシュまたはストリーミング接続 ~ ~ ~
自動再接続 クライアントに自動再接続 / ウォッチドッグを内蔵 ~ ~ ~ ~
per-message-deflate (RFC 7692) WebSocket 圧縮拡張 ~ ~ ~
マルチプラットフォーム Win / macOS / Linux / iOS / Android ~ ~
商用利用可 クローズドソースの商用利用をライセンスが許可
ソースコード利用可能 開発者がライブラリのソースを参照可能
活発な保守 直近 12–18 か月にリリースまたはタグ付き活動あり ~ ~
ライセンスモデル ライセンス種別 商用 BSD / MPL (オープンソース) 無償、ソース公開 商用 MPL / GPL / LGPL (オープンソース) 多様 (通常は MIT / BSD / Apache)
ドキュメント化されたネイティブサポート ネイティブでは提供されない ~ 部分的 / アドオン経由 / 未検証

各ライブラリへの率直な適合度

ここに挙げたライブラリにはいずれも実需要があります。最適な選択は、必要なプロトコルの広さ、ライセンスの好み、既存の依存関係によって決まります。

sgcWebSockets を選ぶ場合

WebSocket に加えてメッセージングプロトコル (MQTT、AMQP、STOMP、WAMP)、HTTP/2、AI/LLM クライアントを単一の商用ライセンスで揃った 1 つのコンポーネントセットから利用したい場合、C++ Builder を含む幅広い Delphi バージョン (7–13) に対応したい場合、macOS / iOS / Android / Linux 向けの FireMonkey ターゲットが必要な場合に sgcWebSockets を選んでください。

Indy (Internet Direct) を選ぶ場合

WebSocket そのものが要件でない場合 (たとえば HTTP、SMTP、POP3、IMAP、FTP、NNTP の成熟したサポートを備えた寛容ライセンスの TCP / UDP ツールキットが必要な場合、または既存の TIdHTTPServer を独自の WebSocket アップグレードハンドラーで拡張したい場合) に Indy を選んでください。Indy は RAD Studio に同梱されているため、依存関係を増やしません。

ICS (Internet Component Suite) を選ぶ場合

WebSocket クライアントおよびサーバー、OpenSSL 3.x 上のモダンな TLS 1.3 (V9.6 ではポスト量子暗号を含む) を備えたオープンソースの Delphi ネットワークスイートが必要で、既存の ICS Web サーバーを通じてルートを配線することに抵抗がない場合に ICS を選んでください。ICS は活発に保守されている OpenSSL バージョンを追従する長期リリースです。

TMS FNC WebSocket / TMS Sparkle を選ぶ場合

VCL と FireMonkey で必要なネットワークプロトコルが WebSocket のみの場合、すでに他の TMS FNC コンポーネントをライセンスしている (ビジュアル / ノンビジュアルの API スタイルが一貫します) 場合、または FNC のクロスフレームワークの利点 (VCL と FMX で単一コードベース) を特に求める場合に TMS FNC WebSocket を選んでください。HTTP / HTTPS サービスホスティングには TMS Sparkle が TMS XData と組み合わさります。

mORMot 2 を選ぶ場合

MPL / GPL / LGPL 下で Object Pascal 向けのオープンソースフルスタックフレームワーク (ORM、SOA、REST、WebSocket、OpenAPI) が欲しい場合、サーバーが FPC 上の Linux で稼働する場合、またはデータベース、ビジネスロジック、WebSocket トランスポートを単一フレームワークで網羅したい場合に mORMot 2 を選んでください。

単機能 MQTT 専用ライブラリを選ぶ場合

必要なプロトコルが MQTT 1 つだけの場合、寛容ライセンスのコードのみに依存させたい場合、ワイヤープロトコル実装を 1 行残らず読みたい場合に、単機能の MQTT 専用ライブラリを選んでください。採用前に対象プロジェクトのコミット履歴を精査してください。作者によって活動状況には大きな差があります。

sgcWebSockets への移行 — 相違点

上記のいずれかのライブラリから移行する場合の API と機能の相違点に関する短いメモです。対立的ではなく、実務的な対応関係を示します。

Indy (Internet Direct) からの移行

Indy は生の HTTP / TCP 配管を提供し、sgcWebSockets は WebSocket フレーミング、ping/pong、自動再接続、サブプロトコル (MQTT/AMQP/STOMP/WAMP)、per-message-deflate を組み込みで提供します。現在 Indy ベースの HTTP サーバーをお持ちの場合、sgcWebSockets は Indy へのプラグインではなく独立した TsgcWebSocketHTTPServer を提供します。既存の HTTP ルートを sgc サーバー上に再実装するか、別ポートで両者を併用する必要があります。

ICS (Internet Component Suite) からの移行

両ライブラリとも WebSocket クライアントと WebSocket-over-HTTP サーバーを公開しています。前述のメッセージングプロトコル (MQTT、AMQP、STOMP、WAMP)、AI/LLM および取引所 API クライアントは sgcWebSockets 固有です。現在 WebSocket ルートを備えた ICS Web サーバーを運用している場合、sgcWebSockets は TsgcWebSocketHTTPServer をドロップインの HTTP + WS ホストとして提供しますが、ルート登録 API は異なります。

TMS FNC WebSocket / TMS Sparkle からの移行

sgcWebSockets と TMS FNC WebSocket はいずれも RFC 6455 のクライアントとサーバーを実装します。コンポーネントクラスを差し替え、イベントを再配線することで移行できます。その上に構築されたプロトコルレイヤー (MQTT、AMQP、STOMP、WAMP)、HTTP/2 クライアント / サーバー、30 以上のサードパーティ API 統合は sgcWebSockets 固有です。TMS MQTT を別途利用している場合、sgcWebSockets は同じスイートに MQTT を同梱します。

mORMot 2 からの移行

mORMot 2 は WebSocket を SOA レイヤー内にラップしますが、sgcWebSockets はあらゆる Delphi プロジェクトに組み込める、スタンドアロンの WebSocket / HTTP/2 / MQTT / AMQP / STOMP / WAMP コンポーネントを提供します。アプリケーションが mORMot 2 の ORM や SOA 機能を利用している場合、sgcWebSockets への移行には SOA レイヤーの再実装が必要です。WebSocket トランスポートのみに mORMot 2 を使っていた場合は、sgcWebSockets はより一対一に近い置き換えになります。

単機能 MQTT 専用ライブラリからの移行

現在単機能の MQTT 専用ライブラリを使用していて、WebSocket、HTTP/2、AMQP、AI/LLM API クライアントを追加したい場合、sgcWebSockets はそれらをすべて単一のスイートに統合し、単一ライセンスと単一の更新チャネルで提供します。

すべての記述に出典リンク

上記マトリクスの各セルは、これらの公式ドキュメントページ、リポジトリ、リリースノートのいずれかに遡れます。すべての URL は執筆時点で HEAD チェック済みです。

ソースURL
sgcWebSockets — 製品ページhttps://www.esegece.com/products/websockets/
sgcWebSockets — Delphi 機能マトリクスhttps://www.esegece.com/products/websockets/features/feature-matrix-delphi/
Indy — プロジェクトホームページ (indyproject.org)https://www.indyproject.org/
Indy — GitHub リポジトリ (IndySockets/Indy)https://github.com/IndySockets/Indy
Indy — リリース (最新タグ 10.6.3.14)https://github.com/IndySockets/Indy/releases
ICS — V9.0 リリースノート (WebSocket サポート導入)https://wiki.overbyte.eu/wiki/index.php/ICS_V9.0
ICS — V9.6 リリースノート (TLS 1.3 / PQC)https://wiki.overbyte.eu/wiki/index.php/ICS_V9.6
ICS — ダウンロードページ (最新安定版)https://wiki.overbyte.eu/wiki/index.php/ICS_Download
TMS Sparkle — 製品ページhttps://www.tmssoftware.com/site/sparkle.asp
TMS FNC WebSocket — 製品ページhttps://www.tmssoftware.com/site/tmsfncwebsocket.asp
mORMot 2 — GitHub リポジトリ (synopse/mORMot2)https://github.com/synopse/mORMot2
mORMot 2 — README (プロトコル一覧、対応ターゲット)https://github.com/synopse/mORMot2/blob/master/README.md
mORMot 2 — リリース (v2.4 安定版)https://github.com/synopse/mORMot2/releases
Synopse フォーラム (Object Pascal SOA / ORM)https://synopse.info/
GitHub トピック: delphi-mqtt (コミュニティ製の単機能 MQTT クライアント)https://github.com/topics/delphi-mqtt
RFC 6455 — WebSocket プロトコルhttps://datatracker.ietf.org/doc/html/rfc6455
RFC 7692 — WebSocket の圧縮拡張 (per-message-deflate)https://datatracker.ietf.org/doc/html/rfc7692

sgcWebSockets を試す

無料の Trial エディションをダウンロードして、ご自身のアプリケーションで現在お使いのライブラリと sgcWebSockets をベンチマーク比較してください。