sgcWebSockets vs ICS — Delphi ネットワーキング比較

· レビュー

もう 1 つの長く愛される Delphi ネットワーキングライブラリ

2026 年に Delphi 用のネットワーキングライブラリを探している開発者の間では、3 つの名前がよく挙がります: Indy、Overbyte ICS(François Piette による Internet Component Suite)、そして sgcWebSockets。ICS は Indy とほぼ同じくらい長く存在し、特にそのノンブロッキングなメッセージポンプベースのアーキテクチャを評価する開発者の間に熱心な支持者がいます。sgcWebSockets はモダンなプロトコルに焦点を当てた、より新しい商用ライブラリです。

この記事では両者を真正面から比較します: 機能網羅、WebSocket サポート、HTTP/2 と HTTP/3、ライセンス、開発体験、商用サポート。比較が特定の ICS リリースに依存する場合、執筆時点で公開ドキュメント化されている v9 系列を根拠としています — 正確な機能確認が必要であれば最新の ICS チェンジログを確認してください。

起源と設計思想

ICS は 1990 年代に非同期・イベント駆動の WinSock ラッパー一式として始まりました。クラシックな ICS コンポーネント(TWSocketTHttpCliTSslHttpServer)はノンブロッキングのメッセージポンプモデルを使用します: あらゆるソケット操作が Windows メッセージを投函し、イベントハンドラーで応答します。このモデルは Delphi VCL に美しく適合します — スレッドも同期プリミティブも不要で、メインスレッドで動作します。ICS は後に、より高い同時実行性のためにスレッドプール型 HTTP サーバー(TSslHttpAppSrv)を追加しました。

sgcWebSockets は異なる問題を中心に設計されました: 長寿命な双方向接続(WebSocket、MQTT、SSE、gRPC スタイルのストリーム)と、モダンなトランスポートスタック(HTTP/2、QUIC 上の HTTP/3)です。スケーリングのため Windows では IOCP ベースのサーバーを使用し、低レイテンシメッセージングのためイベント駆動のクライアントモデルを使用します。また、代替の HTTP バックエンドとして Indy と ICS をラップしているため、環境に合うトランスポートを選択できます。

機能ごとの比較

機能Overbyte ICS(執筆時点 v9)sgcWebSockets
HTTP/1.1 クライアントあり(THttpCliTSslHttpCliあり、複数のバックエンド
HTTP/1.1 サーバーあり(TSslHttpAppSrvあり
WebSocket クライアントあり(v8 以降)あり、完全な RFC 6455
WebSocket サーバーあり(v8 以降)あり、サブプロトコル、per-message deflate、チャネル
HTTP/2限定的/第一級機能ではないあり、完全な HPACK + フレーム層
HTTP/3 / QUICなしあり(msquic ベース)
MQTT 3.1.1 / 5.0ネイティブブローカーなし、基本クライアントのみ完全なクライアント + ブローカー、両バージョン
AMQP 1.0 / 0.9.1なしあり
STOMP、SSE、WAMPSSE は基本のみ、他はなしすべてサポート
WebRTC / STUN / TURN / DTLS-SRTPなしあり
CoAP、AWS IoT、Azure IoTなしあり
SMTP / POP3 / IMAP / FTP / NNTPあり、成熟した実装なし(Indy または ICS を使用)
OpenSSL バインディングあり、非常に最新あり、加えて SChannel と BoringSSL
30 以上の REST API ラッパー(OpenAI、Anthropic、AWS、Azure、取引所)なしあり
ライセンス無料、Mozilla 系商用、Free Edition あり
Delphi バージョンD7 から D13 までD7 から D13 まで
保守活発、ベンダー主導(Magenta Systems)活発、ベンダー主導、月次リリース
商用サポート任意の有償サポート契約有償エディションに含まれる

WebSocket サポート

ICS は v8 で WebSocket コンポーネントを追加しました(TIcsWebSocketClient、サーバー側は WebSocket ハンドラー付きの TSslHttpAppSrv)。RFC 6455 と TLS をカバーしており、多くのユースケースには十分です。ICS が標準では未提供のもの: デフォルトの per-message deflate、名前付きチャネル/ブロードキャストグループ、自動再接続 WatchDog、JavaScript クライアントグルー、WebSocket 上の組み込みプロトコル(WebSocket-MQTT、WebSocket-STOMP、WAMP)。

sgcWebSockets は WebSocket を宇宙の中心として扱います。サーバーは HTTP と WebSocket を同一ポートで多重化し、チャネルとブロードキャストヘルパーを同梱し、Delphi API をミラーする JavaScript クライアントを含み、WatchDog 自動再接続、ハートビート ping/pong、メッセージキュー、LB スタイルのロードバランサーコンポーネントを追加します。WebSocket に住み込むなら、開発体験は明らかに豊かです。

HTTP/2 と HTTP/3

ここが最も差が大きい領域です。執筆時点で、ICS は v9 のリリースノートに HTTP/2 を第一級機能として記載していません — パブリックメーリングリストで実験的な作業が議論されたことはありますが、ICS アプリ内での HTTP/2 の推奨経路は別ライブラリの使用です。

sgcWebSockets は 2018 年以来、HPACK ヘッダー圧縮アルゴリズム、フレーム多重化、サーバープッシュ、ALPN ネゴシエーションを含む完全な HTTP/2 実装を出荷しています。同じコードパスが Apple Push Notification クライアント、Google FCM クライアント、構築する任意の HTTP/2 サーバーエンドポイントで使用されます。QUIC 上の HTTP/3 は 2023 年に追加され、Windows では Microsoft の msquic ライブラリ、Linux では ngtcp2 を使用します。最先端のトランスポートサポートを必要とするアプリケーションには、これは意味のある差別化点です。

クラシックなインターネットプロトコル

ここでは ICS が明確に勝ちます。SMTP、POP3、IMAP、FTP、NNTP、DNS、さらには HTTP プロキシサーバーまで、すべて含まれ、よく保守されています。メールクライアント、FTP フロントエンド、SMTP リレーを構築するなら、ICS は sgcWebSockets(これらのプロトコルを一切出荷しません)よりも強い出発点です。

よくある組み合わせは、同じ製品内でメール/FTP 層に ICS を、WebSocket / HTTP/2 / MQTT 層に sgcWebSockets を使うものです。両ライブラリはユニット名前空間が別なので、問題なく共存できます。

SSL / TLS

両ライブラリとも TLS を真剣に扱っています。ICS は新しい OpenSSL リリースを非常に迅速に追跡することで知られており — 新しい OpenSSL 3.x マイナーバージョンは通常数日以内にサポートされます。sgcWebSockets も OpenSSL を追跡し、さらに Windows SChannel と BoringSSL に対応し、TLS 上のアプリケーションレベル機密性のための独自エンド・ツー・エンド暗号化層も提供します。

開発体験

ICS はイベント駆動・メッセージポンプスタイルの API を採用しており、これは VCL フォーム内で非常に自然です — コンポーネントをドロップし、OnDataAvailableOnRequestDone を結線すれば、Windows メッセージが流れを駆動します。スレッドが軽く、デバッグしやすく、クラシック VCL 開発に慣用的です。欠点は、単一のメッセージポンプを超えてスケールするには、スレッドプール型のサーバー変種か、明示的なマルチインスタンス設計が必要なことです。

sgcWebSockets は Indy や近年の REST ライブラリで使われる、より新しいコンポーネント慣行に従います: 強く型付けされたオプションサブオブジェクト(HeartBeatWatchDogTLSOptions など)を持つコンポーネント、イベント駆動のコールバック、内部でワーカースレッド。IOCP サーバートランスポートは、ユーザーコードを変更せずに数万の同時接続にスケールします。

ライセンスと価格

ICS は Mozilla 系ライセンスのもとで商用・非商用問わず無料です。任意の商用サポート契約は Magenta Systems から購入できます。sgcWebSockets は商用で、非商用利用向けの Free Edition と 4 つの有償エディション(Standard、Professional、Enterprise、All-Access)があります。有償エディションにはソースコード、月次更新、ベンダー直接サポートが含まれます。

判断マトリックス

必要なもの最良の選択
SMTP、POP3、IMAP、FTP、NNTP クライアントICS
スレッドなしの小さな単一フォーム HTTP フェッチャーICS
最先端の OpenSSL 追跡ICS(sgc も非常に近い)
チャネル、WatchDog、JS クライアント付き WebSocket クライアント/サーバーsgcWebSockets
HTTP/2 クライアントまたはサーバー、Apple Push、FCMsgcWebSockets
HTTP/3 / QUICsgcWebSockets
MQTT 5 ブローカー、AMQP 1.0、WAMP、STOMPsgcWebSockets
WebRTC、STUN、TURN、IoT、CoAPsgcWebSockets
既製の OpenAI / Anthropic / クラウド API コンポーネントsgcWebSockets
商用ベンダーサポート契約どちらも — sgcWebSockets は同梱、ICS は任意

まとめ

ICS と sgcWebSockets は競合というより、相補的なツールです。ICS は美しく設計された、無料の、メッセージポンプ親和なライブラリで、クラシックなインターネットプロトコルと軽量 HTTP に優れています。sgcWebSockets はモダンな Web スタック — WebSocket、HTTP/2/3、MQTT、AMQP、WebRTC、IoT、AI API — を所有し、大量の同時接続にスケールする、焦点を絞った商用ライブラリです。多くの実プロジェクトでの正しい答えは、両方を使い、それぞれが最も得意とするプロトコルに応じて選ぶことです。