もう 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 コンポーネント(TWSocket、THttpCli、TSslHttpServer)はノンブロッキングのメッセージポンプモデルを使用します: あらゆるソケット操作が 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 クライアント | あり(THttpCli、TSslHttpCli) | あり、複数のバックエンド |
| 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、WAMP | SSE は基本のみ、他はなし | すべてサポート |
| 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 フォーム内で非常に自然です — コンポーネントをドロップし、OnDataAvailable や OnRequestDone を結線すれば、Windows メッセージが流れを駆動します。スレッドが軽く、デバッグしやすく、クラシック VCL 開発に慣用的です。欠点は、単一のメッセージポンプを超えてスケールするには、スレッドプール型のサーバー変種か、明示的なマルチインスタンス設計が必要なことです。
sgcWebSockets は Indy や近年の REST ライブラリで使われる、より新しいコンポーネント慣行に従います: 強く型付けされたオプションサブオブジェクト(HeartBeat、WatchDog、TLSOptions など)を持つコンポーネント、イベント駆動のコールバック、内部でワーカースレッド。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、FCM | sgcWebSockets |
| HTTP/3 / QUIC | sgcWebSockets |
| MQTT 5 ブローカー、AMQP 1.0、WAMP、STOMP | sgcWebSockets |
| WebRTC、STUN、TURN、IoT、CoAP | sgcWebSockets |
| 既製の OpenAI / Anthropic / クラウド API コンポーネント | sgcWebSockets |
| 商用ベンダーサポート契約 | どちらも — sgcWebSockets は同梱、ICS は任意 |
まとめ
ICS と sgcWebSockets は競合というより、相補的なツールです。ICS は美しく設計された、無料の、メッセージポンプ親和なライブラリで、クラシックなインターネットプロトコルと軽量 HTTP に優れています。sgcWebSockets はモダンな Web スタック — WebSocket、HTTP/2/3、MQTT、AMQP、WebRTC、IoT、AI API — を所有し、大量の同時接続にスケールする、焦点を絞った商用ライブラリです。多くの実プロジェクトでの正しい答えは、両方を使い、それぞれが最も得意とするプロトコルに応じて選ぶことです。