この記事の要点
- Swift Server ワークグループ(Swift Server Work Group, SSWG)による 2024 年の年次アップデートです。2023 年のサーバーサイド Swift エコシステムの成果を振り返り、2024 年に向けた目標を示しています。
- 2023 年の成果として、初のサーバー開発者向けアンケートの実施、インキュベーションのプロセスへの 7 件のパッケージの新規追加、structured concurrency の採用の前進、Swiftly や Dependabot 対応などのツール改善が報告されています。
- 2024 年の目標として、Swift 6 に向けた厳格な並行処理チェックへの対応、structured concurrency のさらなる採用、標準的な HTTP サーバーとミドルウェアの整備、サーバーサイド Swift の発信強化が掲げられています。
- あわせて、Swift Package Index の開発で知られる Sven A. Schmidt が SSWG の新メンバーとして加わったことが紹介されています。
2023 年の振り返り
サーバー開発者向けアンケート
SSWG は、サーバーサイド Swift エコシステムの実態や規模を把握するため、初めて開発者コミュニティ向けのアンケートを実施しました。多くの回答が集まり、その結果はワークグループの活動方針の決定や、エコシステムの状況の可視化に役立てられています。
たとえば、回答者の多数がすでに Swift Concurrency を利用している一方で、一部の領域では採用に課題が残っていることが分かりました。また、swift-format や sourcekit-lsp といった標準的なツールや、各種 IDE のサポート拡充への関心が高いことも明らかになりました。アンケートの詳細な結果は Swift Forums のレポートで公開されています。
エコシステムの拡大
SSWG は、パッケージのインキュベーション(Incubation Process)とパッケージ作者へのガイダンスを通じて、引き続きエコシステムの拡大に取り組みました。
Google Summer of Code への参加を通じて、Memcached サーバーとの通信を容易にする swift-memcache-gsoc が提供されました。ワイヤープロトコルと高レベルのコネクション API は完成しており、コネクションプールやキーのシャーディングが今後の予定とされています。
structured concurrency の採用
structured concurrency の採用も大きく前進しました。新しいライブラリの多くがこれを採用しており、既存ライブラリの採用を支援するためのガイドの整備も進められています。
エコシステムでの structured concurrency の大きな推進役となったのが、SwiftNIO に導入された NIOAsyncChannel と、書き直された ServiceLifecycle パッケージの ServiceGroup です。この 2 つは、Hummingbird や gRPC Swift のような高レベルのライブラリが structured concurrency を使ってロジックを組み立てるための基盤となっています。
ツールの改善
ツール面でも 2023 年に大きな改善がありました。
- Swiftly が登場し、Swift ツールチェインのインストールやバージョン切り替えが容易になりました。
- Dependabot for Swift により、Swift パッケージの依存関係の更新を自動化できるようになりました。
- Chiseled Containers により、フットプリントが小さくセキュリティを強化したコンテナを利用できるようになりました。
- Swift Package plugin の導入を背景に、Swift OpenAPI Generator が登場しました。これは OpenAPI 仕様から Swift のボイラープレートコードを生成するプラグインで、HTTP クライアントとサーバーの両方の構築に役立ちます。
新メンバー
2023 年のアップデート以降、Sven A. Schmidt が SSWG に加わりました。Sven はすでに Documentation ワークグループに関わっており、Swift Package Index の開発でも知られています。
エコシステム
2023 年には 7 件の新しいパッケージがインキュベーションのプロセスに加わり、エコシステムの急速な拡大を示しました。
- Swift Distributed Actors(Cluster): distributed actor を使って Swift でピアツーピアのクラスタを書けるようにするパッケージです。
- Cassandra Client: Apache Cassandra 向けの Swift クライアントです。
- SQLiteNIO: Swift 向けの SQLite ドライバで、Vapor の Fluent ORM 経由でよく使われます。
- Swift Service Context と Swift Distributed Tracing: Swift での distributed tracing(分散トレーシング)を実現し、可観測性(observability)の 3 本柱を完成させるパッケージです。
- DiscordBM: Discord の Bot API 向けの Swift クライアントで、Vapor の Penny bot の基盤になっています。
- Swift OpenAPI Generator: OpenAPI 仕様向けのコードジェネレータで、サーバーとクライアントの両方を生成できます。
加えて、2024 年初頭には人気の MongoDB ドライバである MongoKitten が売り込み・承認されました。
2024 年の目標
SSWG は 2024 年の目標として次の取り組みを挙げています(いずれも将来の構想であり、実現を約束するものではありません)。
- Swift 6 への準備: Swift 6 に向けて、厳格な並行処理チェック(strict concurrency checking)がサーバーエコシステム全体に与える影響を調査します。インキュベーション中のすべてのパッケージで厳格なチェックを有効にし、各パッケージが厳格なチェックのルール下で警告なくコンパイルできるようにする計画です。
- structured concurrency の採用: structured concurrency の採用は順調に進んでいますが、まだ道半ばです。さらに多くのライブラリで採用を進め、SwiftNIO を多くのライブラリの実装の詳細(implementation detail)として隠せるようにすることを目指します。あわせて、ライブラリやアプリケーションの開発者向けに、structured concurrency の採用方法とその利点を説明するガイドの整備も計画されています。
- 標準的な HTTP サーバーとミドルウェア: 2023 年に標準的な HTTP サーバーとミドルウェアの準備を進めてきました。進行中の Hummingbird の書き直しでは、すでに新しい HTTP Types が活用されています。2024 年の目標は、低レベルで汎用的な HTTP サーバーパッケージを生み出すことです。
- サーバーサイド Swift の発信強化: 2024 年の重点領域として、サーバーサイド Swift の発信に力を入れます。再設計された Swift.org のナビゲーションを活かしてサーバーサイド Swift を紹介し、統合されたサンプルプロジェクトや既存プロジェクトの紹介などのコンテンツを充実させます。また、開発者をつなぐためのオンラインのユーザーグループミーティング(年 3〜4 回が目標)の開催や、2024 年にロンドンで開催される ServerSide.swift カンファレンスの復活も挙げられています。
参加・利用者への影響
この記事は、サーバーサイドで Swift を使う開発者や、サーバー向けライブラリ・ツールの開発に関わりたい人に向けたものです。structured concurrency の採用がエコシステム全体で進み、ツールやパッケージが整備されてきたこと、そして Swift 6 に向けてデータ競合安全性への対応が本格化していることが分かります。
SSWG への提案や、インキュベーションのプロセスへのライブラリの売り込みは、Swift Forums の Server カテゴリを通じて行えます。SSWG の前年のアップデートについては、SSWG 2023 年次アップデートのダイジェストでも紹介しています。