Repolode
apple

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. 1

    Package.swift の依存関係に、from: "2.0.0" のようなバージョン範囲で SwiftNIO を追加します

  2. 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 の数値は毎日更新されます。

関連プロジェクト