Tokyo Server Side Swift meetup #8で発表してきた #tsssmeetup

tokyo-ss-swift.connpass.com

SwiftでSidekiqクローンを開発してるよ、という話をした。

speakerdeck.com

基本、SidekiqのJSONフォーマットに乗っ取って実装しているのでRuby版のクライアントとか管理画面が使えるようになっている。 しかしSwift4ベースで開発をしているのと、現状のレイテンシーに不満があるので開発中という感じ。オリジナルの作者自身が書いているSidekiqのCrystal版とベンチマーク結果を比較すると圧倒的に遅く、特にボトルネックとなっているのがRedisクライアント自身となっていて、現在Swiftで高速・使いやすいRedisクライアントを書くための勉強をしている。(crystal-redisは異常に早く、hiredis以上

github.com

Server Side Swiftに対する自分自身の意見を表明しておくと、現時点でも今後1、2年後でも実用的な状態になるのは無理だと思っている。 SwiftはOSS化されてまだ浅いしFoundationも含めて標準ライブラリが現状ではとても貧弱で(Foundationのバグ・未実装の問題もあるし、サーバーを書くためのIO周りが足りないというのもある)、 何かしらサーバーを書くためには自前でまともなTCPクライアント・サーバーを実装しなければならないような状況にある。

もちろん、Vapor・Kitura・Perfectなど既成のWebフレームワークなどは存在はするけど標準ライブラリだけで出来ること少ないせいで、 それぞれ自前の実装がオレオレ実装が横行していて整っていない感じがする。そういう意味で昨日の発表にもあったswift-server/httpには期待していて、 HTTPサーバーを書くための基礎的な部分をみんなで作ってくぞというプロジェクトなので、標準ライブラリにはないけどサーバー書くのに必要な処理を補完してくれると嬉しい。

GitHub - swift-server/http: Repository for the development of cross-platform HTTP APIs

ということでスライドにも書いたけど、基本的にServer Side Swiftは真面目に取り組むと苦労しかないので、 システムプログラミングとかミドルウェアの開発の勉強とかそういうモチベーションで自分はやっていってます。