Swift Digest
Blog | Swift.org Blog

Swift のサーバーサポートが Things Cloud を支える仕組み

How Swift’s server support powers Things Cloud

このダイジェストはClaude Opus 4.7 / 4.8によって生成されたものです(License)。原文はこちら

この記事の要点

採用前の課題

Things Cloud は、デバイス間で ToDo を静かに同期し続ける、アプリ体験の屋台骨となるサービスです。operational transformation や Git の内部構造に着想を得た厳密な理論的基盤に支えられ、12年間の本番運用を通じて信頼性に対するユーザーの信頼を獲得してきました。アーキテクチャ自体は強固でしたが、それを支える技術スタックが時代に取り残されていました。

レガシーの Things Cloud は Python 2 と Google App Engine の上に構築されていました。安定はしていたものの、次のような制約が積み重なっていました。

こうした問題の蓄積に加え、いくつもの deprecation が迫っていたことから、チームは変化が必要だと判断しました。

Swiftでどう改善したのか

全面的な書き直しは通常は最終手段ですが、Things Cloud にとっては唯一現実的な道でした。Java、Python 3、Go、C++ などさまざまな言語を検討した結果、すでにクライアントアプリの中核を担っていた Swift が、その潜在力と独自の利点で際立っていました。Swift は、優れたパフォーマンス、ARC による予測可能なメモリ管理、信頼性と保守性のための表現力の高い型システム、C・C++ とのシームレスな相互運用性を約束していました。

当初はサーバー向けの Swift サポートが他のエコシステムほど成熟していないという懸念もありましたが、Apple とオープンソースコミュニティの双方が Swift の進化に強くコミットしていました。Swift は長年 Linux 上で確実にコンパイルでき、Swift Server workgroup は2016年からサーバー領域の取り組みを調整しており、SwiftNIO が基盤的な能力への確信を与え、Vapor がすぐに動かし始めるための一通りのツールを提供してくれました。

記事では、新しい Swift ベースのアーキテクチャを構成する主要コンポーネントが、利用している Swift パッケージとともに紹介されています。同様の移行を検討する人にとっての参考になるよう意図されたものです。

実運用から得られる示唆

チームは本番投入前に、新しいシステムを既存のレガシーシステムと並走させて検証しました。すべてのリクエストはレガシーシステムが実際に処理しつつ、新システムも独自のロジックとデータベースで同じリクエストを並行処理します。これにより、ユーザー体験を一切リスクにさらすことなく、本番相当の条件で開発・テストでき、最初から十分に鍛えられたシステムを投入できました。

1年あまりの本番運用を経て、Swift はサーバーサイド開発でその約束を果たしたと報告されています。

チームは他のチームにもサーバー指向のプロジェクトで Swift を検討するよう勧めています。今回は全面的な書き直しを選びましたが、Java 相互運用性の強化に向けた取り組みなどを踏まえると、段階的な Swift の採用も魅力的な選択肢だとしています。重い同期処理を伴う長寿命のクラウドサービスにおいても、Swift がパフォーマンス・信頼性・保守性を両立できることを示す事例です。

関連リンク