この記事の要点
- Swift Server ワークグループ(Swift Server Work Group, SSWG)による 2021 年の年次アップデートです。前回のアップデート以降もサーバーサイド Swift のエコシステムが成長を続けたことを振り返り、2022 年に向けた目標を示しています。
- 2021 年の成果として、Swift 5.5 で導入された新しい並行処理モデルへの
async/await対応がエコシステム全体で進んだこと、Linux への Swift インストールや VSCode 拡張といったツールが整備されたこと、複数のパッケージが Incubation Process(インキュベーションのプロセス)でより上位の成熟度に昇格したことが報告されています。 - あわせて、Adam Fowler・Fabian Fett・Patrick Freed の 3 名が SSWG の新メンバーとして加わったことが紹介されています。
- 2022 年の目標として、エコシステムの拡大、並行処理対応の継続、ツールの拡充、ビルド時間の改善、サーバーサイド Swift の採用促進が掲げられています。
2021 年の振り返り
並行処理(Swift Concurrency)
2021 年秋にリリースされた Swift 5.5 で、新しい並行処理モデルが導入されました。これはサーバーサイド Swift にも大きな影響を与え、コードの読みやすさと保守性を高めるとともに、distributed actor のような新しい可能性を開きます。
新しいモデルへの移行は長期的な取り組みです。Swift 6 に向けて、多くのライブラリや API が async/await と Sendable チェックに対応していく必要があります。SSWG は、ライブラリ/アプリケーション開発者向けに並行処理の採用ガイドラインを公開しました。
すでに Vapor・Smoke・Hummingbird といったフレームワークや、MongoDB ドライバ・AsyncHTTPClient などのパッケージが async/await API を追加しており、async/await の採用は大きく前進しています。SwiftLog・SwiftDistributedTracing のような低レベルのパッケージはまだ対応が残っていますが、近く完了する見込みとされています。SSWG は、多くのライブラリやフレームワークが最終的には async/await のみを提供し、利用者に EventLoopFuture を露出しなくなることを期待しています。
ツール
ツール面でも 2021 年に多くの新しいリリースがありました。
- Linux へのインストール: Linux の標準的なインストール方法である RPM/Deb パッケージのために、コミュニティへの貢献の呼びかけが行われました。複数プラットフォーム向けのツールチェインをビルドするインストーラスクリプトが用意され、各種 Linux ディストリビューションへの簡単なインストールが可能になりました。
- Swift for VSCode 拡張: VSCode で Swift をシームレスに扱えるようにする拡張が発表されました。ほとんど設定なしで、VSCode や GitHub Codespaces での Swift 開発が可能になります。
- Swift GitHub Actions: GitHub Actions で Swift コードをビルド・テストしやすくするための Actions がコミュニティによって作られ、コラボレーションのための新しい GitHub 組織へ移行が進められています。
- ARM サポート: Swift 5.6 で ARM Linux 向けのツールチェインと、ARM 対応のマルチプラットフォーム Docker イメージが提供されました。これにより、AWS Graviton のような ARM サーバーへのデプロイが可能になりました。
ドキュメント
SSWG のプロジェクトやインキュベーション中のプロジェクト、サーバーガイドにわたって多くのドキュメントが追加されました。一方で、それらが見つけにくいという課題があり、ドキュメントの発見性(discoverability)の向上が 2022 年の重点課題に挙げられています。
エコシステム
パンデミックや前回アップデートの公開が遅れた影響で、インキュベーションに新規追加されたライブラリは MultiPartKit 1 件(Incubating レベルで承認)にとどまりました。一方、定期的に行われる成熟度レビューにより、複数のパッケージが上位の成熟度へ昇格しました。
- SwiftMetrics(incubating から graduated へ)
- gRPC Swift(incubating から graduated へ)
- SwiftStatsdClient・SwiftPrometheus・MongoSwift・Swift Service Lifecycle・Soto for AWS(いずれも sandbox から incubating へ)
インキュベーションの枠外でもエコシステムは成長を続けており、Amazon Web Services が Swift 向けの新しい SDK を発表しました。また、メインストリームの言語では珍しい取り組みとして、Distributed Actors の開発が進められています。
2022 年の目標
SSWG は、新しい並行処理対応の進展により Swift がサーバー向け言語として際立っていくとして、2022 年の主要な目標を次のように挙げています(いずれも将来の構想であり、実現を約束するものではありません)。
- エコシステムの拡大: Kafka・Cassandra・RabbitMQ など、人気のあるサーバーコンポーネント向けのライブラリに関心が示されています。こうしたドライバやツールの開発に関心がある人には、Swift Forums の Pitches カテゴリへの売り込みが呼びかけられています。
- 並行処理対応の継続: まずロギングとトレーシングを新しい並行処理機能に対応させ、そのうえでパッケージやライブラリ全体での採用を促していくとしています。サーバー向けライブラリの開発者には、新しい並行処理モデルへの対応と
async/awaitAPI の提供が呼びかけられています。 - ツールの拡充: SourceKit-LSP の利用拡大による改善や、Swift 5.6 で導入された Swift Package Plugins を活用したツール(DocC でのドキュメント生成、リンタやフォーマッタの実行、コード生成など)が期待されています。また、Rust の rustup に相当する Swift ツールチェインインストーラ(仮称 Swiftly)の開発も始まったことが紹介されています。
- ビルド時間の改善: デプロイ用のクリーンビルドではビルド時間が課題になります。コンパイラの改善に加え、重複を避けるための共通部品の整備が挙げられています。具体例として、SwiftCrypto に RSA など追加の暗号 API を提供する CryptoExtras モジュールが加わり、Vapor の JWTKit のようなライブラリが独自の BoringSSL を抱え込まずに済むようになったことが紹介されています。
- サーバーサイド Swift の採用促進: ガイドやドキュメントの発見性向上、サーバーサイド Swift に関する詳細なアンケートの実施、本番事例や成功事例の発信といった取り組みが計画されています。
参加・利用者への影響
この記事は、サーバーサイドで Swift を使う開発者や、サーバー向けライブラリ・ツールの開発に関わりたい人に向けたものです。async/await への対応がエコシステム全体で進み、ツールやインストール体験が整備されてきたことが分かります。新しいライブラリの提案や事例の共有には Swift Forums の Server セクションが窓口として案内されており、SSWG の現在の活動状況はプロジェクトページから確認できます。
なお、SSWG の前年のアップデートについては、SSWG 年次アップデートのダイジェストでも紹介しています。