Socket.IOは、クライアントとサーバー間のリアルタイムな双方向・低遅延のイベントベース通信を実現するライブラリです。
apple/swift-nio
Nettyに似た、高性能なプロトコルサーバーやクライアントを構築するための、Swift製クロスプラットフォーム非ブロッキング・イベント駆動ネットワークフレームワーク。
- スター
- 8,538
- フォーク
- 816
- 未解決の Issue
- 307
- 最終コミット
- 3 日前
これは何?
SwiftNIOは、非ブロッキングI/Oとイベントループを使ってプロトコルサーバーやクライアントを構築する、Swift向けの低レベルネットワークフレームワークです。接続ごとにスレッドを割り当てるのではなく、少数のイベントループで多数の接続を多重化するため、比較的アイドル状態の接続を大量に維持するサーバーに適しています。Nettyに相当するSwift製フレームワークとして説明されています。
このフレームワークは、I/Oディスパッチ用のEventLoopGroupとEventLoop、データ処理用のChannel、ChannelPipeline、ChannelHandler、バイトデータを扱うByteBuffer、非同期処理の結果を扱うfutureとpromiseなど、中核となる構成要素を提供します。POSIX I/O(NIOPosix)、テスト用ヘルパー(NIOEmbedded、NIOTestUtils)、低レベルのHTTP/1.1およびWebSocketプロトコル実装を含むモジュールもあります。TLS、HTTP/2、SSHなどのプロトコルは、関連リポジトリで提供されています。
SwiftNIOは、エンドユーザー向けのWeb開発ではなく、ネットワーク性能を細かく制御する必要があるフレームワーク開発者やチームを対象としています。AsyncHTTPClient、gRPC Swift、PostgresNIOなどの高レベルライブラリは、SwiftNIOを基盤として構築されています。
主な機能
- 01プラットフォームに応じてkqueueまたはepollを使う、イベントループベースの非ブロッキングI/O。
- 02再利用可能なプロトコルハンドラーを組み合わせるためのChannelおよびChannelPipelineモデル。
- 03低レベルのHTTP/1.1およびWebSocketプロトコル実装。
- 04コピーオンライト方式で効率的にバイトデータを扱うByteBuffer。
- 05実際のネットワーク接続なしでプロトコルコードをテストできるEmbeddedChannelおよびEmbeddedEventLoop。
- 06macOSとLinuxをサポートし、OpenBSDも実験的にサポート。
ユースケース
- 多数の同時接続を処理する必要がある、Swift製の独自プロトコルサーバーまたはクライアントの構築。
- 非ブロッキングなコアを基盤として、高レベルのSwiftネットワークライブラリやWebフレームワークを開発する。
- 接続ごとにスレッドを割り当てる方式ではコストが高すぎる、性能重視のサービスを開発する。
- EmbeddedChannelを使って、プロトコルハンドラーを分離してユニットテストする。
クイックスタート
- 1
Package.swift の依存関係に、from: "2.0.0" のようなバージョン範囲で SwiftNIO を追加します
- 2
ターゲットに NIO プロダクトを追加し、Swift コードで NIO をインポートします
使う前に知っておきたいこと
- 高水準の Web フレームワークではなく低水準のネットワーキングツールキットのため、イベントループとチャネルのモデルを十分に理解する必要があります。
- 最近のリリースでは、より新しい Swift ツールチェーンが必要です。たとえば、バージョン 2.98.0 以降では Swift 6.1 が必要です。
- SwiftNIO 1 はサポート終了となっており、新機能は追加されません。
トピック
よくある質問
- swift-nio とは?
- Nettyに似た、高性能なプロトコルサーバーやクライアントを構築するための、Swift製クロスプラットフォーム非ブロッキング・イベント駆動ネットワークフレームワーク。 SwiftNIOは、非ブロッキングI/Oとイベントループを使ってプロトコルサーバーやクライアントを構築する、Swift向けの低レベルネットワークフレームワークです。接続ごとにスレッドを割り当てるのではなく、少数のイベントループで多数の接続を多重化するため、比較的アイドル状態の接続を大量に維持するサーバーに適しています。Nettyに相当するSwift製フレームワークとして説明されています。
- swift-nio は無料で使えますか?ライセンスは?
- swift-nio は Apache-2.0 ライセンスのオープンソースです。商用製品で使う前にライセンス条件を確認してください。
- swift-nio は今もメンテナンスされていますか?
- 活発にメンテナンス中。swift-nio の最終コミットは 2026年10月19日 です。
- swift-nio は何に使えますか?
- 多数の同時接続を処理する必要がある、Swift製の独自プロトコルサーバーまたはクライアントの構築。 非ブロッキングなコアを基盤として、高レベルのSwiftネットワークライブラリやWebフレームワークを開発する。 接続ごとにスレッドを割り当てる方式ではコストが高すぎる、性能重視のサービスを開発する。 EmbeddedChannelを使って、プロトコルハンドラーを分離してユニットテストする。
- swift-nio のインストール方法は?
- Package.swift の依存関係に、from: "2.0.0" のようなバージョン範囲で SwiftNIO を追加します ターゲットに NIO プロダクトを追加し、Swift コードで NIO をインポートします
- swift-nio はどこで入手できますか?
- ソースコードとインストール手順は GitHub にあります:https://github.com/apple/swift-nio
概要はプロジェクトの README をもとに AI が生成しています。GitHub の数値は毎日更新されます。
関連プロジェクト
接続の再利用、HTTP/2、デフォルトのレスポンスキャッシュに対応した、JVM・Android・GraalVM向けHTTPクライアントです。
URLSessionを基盤とするSwift向けの洗練されたHTTPネットワークライブラリ。チェーン可能なリクエスト、エンコード、アップロード、ダウンロード、レスポンス検証に対応。
Go標準のnet/httpを基盤とする、高速で軽量なWebフレームワーク。
HTTP/WebSocketサービスを構築するための、高速で使いやすいFlask風C++マイクロフレームワーク。ヘッダーオンリーで利用できます。
URLを使ってサーバーとのデータ送受信を行うコマンドラインツールとライブラリ。HTTP、FTP、SFTP、SMTPなど多くのプロトコルに対応。