BT

最新技術を追い求めるデベロッパのための情報コミュニティ

寄稿

Topics

地域を選ぶ

InfoQ ホームページ ニュース Appleは、Swift向け低レベルノンブロッキングI/OフレームワークのSwiftNIOをオープンソース化

Appleは、Swift向け低レベルノンブロッキングI/OフレームワークのSwiftNIOをオープンソース化

原文(投稿日:2018/03/04)へのリンク

読者の皆様へ:ノイズを減らすための一連の機能を開発しました。関心のあるトピックについて電子メールとWeb通知を受け取ることができます新機能の詳細をご覧ください。

最近のtry! Swift Conference in TokyoでAppleはSwiftNIOプロジェクトを発表した。NottyのようなノンブロッキングクロスプラットフォームのI/OフレームワークはSwiftで書かれている。

SwiftNIOは、高性能サーバ、クライアントの開発向けの非同期のイベント駆動ネットワークフレームワークを目指している。これは現在、macOS (10.12+)とLinux (Ubuntu 14.04)で開発、テストされている。 Appleは次のように述べている。

SwiftNIOは、メンテナンス可能な高性能プロトコルのサーバ&クライアントの迅速な開発のための、クロスプラットフォーム非同期イベント駆動のネットワークアプリケーションフレームワークです。

SwiftNIOは、ネットワークで接続されたアプリケーションやフレームワークを構築するための基本機能を提供するツールを目指している。それは、低オーバーヘッドのI/Oプリミティブとプロトコル実装を提供することにフォーカスしている。主にSwiftNIOは、アプリケーションが使用する上位レベルのネットワーキング通信フレームワークのためのビルディングブロックと見ることができる。あるいは、非常に厳しい要件を持つアプリケーションが直接使用できる高性能フレームワークと見ることができる。このアプローチの結果として、ほとんどのネットワーキングプロトコルのサポートは、管理外で実装される。SwiftNIOに携わったAppleエンジニアの一人であるCory Benfield氏によると、HTTP/1.1プロトコルのサポートは管理されるが、TLSサポート、Websocket、HTTP/2のサポートは管理外である。

SwiftNIOによって提供される基本的な抽象化は、EventLoopである。EventLoopは、イベントが発生するのを待ってコールバックを発生させるオブジェクトである。コアに対して1つまたは2つのイベントループがあるのが理想的である。イベントループ間の負荷の分散させるために、EventLoopGroupを使用できる。EventLoopsの上には、ChannelsとChannelPipelinesがあり、それは、指定されたファイル記述子に関連する入力イベントを通知し、それを処理するために作業をディスパッチする、より扱いやすい方法を提供する。ChannelHandlerはステップを提供し、パイプラインがイベントを処理するために、そのステップに従って順次実行する。すべてのハンドラは同じスレッド上で実行され、同期を必要としないことにより、実装がシンプルになる。これはまた、ハンドラがブロックできないことを意味する。SwiftNIOが提供する最高レベルの抽象化はBootstrapで、ServerBootstrap、ClientBootstrap、DatagramBootstrapなどの特定のユースケース向けのチャネルの作成を効率化している。すべての詳細は、公式文書で見つけることができる。

自身のPackage.swiftに以下の依存関係を追加することでSwiftNIOを独自のプロジェクトに含めることができる。

dependencies: [
    .package(url: "https://github.com/apple/swift-nio.git", from: "1.0.0")
]

さらに、フレームワークの使い方を示すSwiftNIOレポジトリにNIOChatとNIOEchoという2つのサンプルアプリケーションがある。

 
 

Rate this Article

Adoption Stage
Style
 
 

この記事に星をつける

おすすめ度
スタイル

BT