この記事の要点
- ほぼすべての Swift プロジェクトで使われている Foundation について、Swift で、Swift のために書き直した 新しいオープンソースの Foundation プロジェクト が発表されました。プロジェクト自体は 2023 年に GitHub 上で始動する予定とされています。
- これまでのオープンソース版 Foundation(swift-corelibs-foundation)は、既存の C 実装の上に Swift の層をかぶせたものでした。新プロジェクトは C をラップせず、純粋に Swift で実装し直すことで、C と Swift の変換コストをなくして高速化し、コードの読みやすさと貢献のしやすさも高めることを狙っています。
- Foundation をより小さく粒度の細かいパッケージに分割し、システム依存のない
FoundationEssentials、ローカライズ対応のFoundationInternationalizationなどに再構成する構想が示されました。あわせて、プラットフォームをまたいで単一の正規実装にまとめること、誰でも新しい API を提案・貢献できるオープンな貢献プロセスを設けることも目標とされています。
何が発表されたのか
Foundation は、文字列・コレクション・日付といった基礎的な型を提供するだけでなく、優れた Swift コードを書くための慣習を定める土台でもあり、ほぼすべての Swift プロジェクトで使われています。
Swift がオープンソースプロジェクトとして始動したとき、言語そのものだけでなく、その周辺のエコシステムまで含めて公開することが目指されていました。Foundation もその一環として、2016 年に swift-corelibs-foundation によってオープンソースの Swift 版 Foundation が立ち上げられました。ただしこれは、既存のオープンソースの C 実装の周りを Swift の層でラップしたものでした。
その後、Swift は ABI 安定性のような技術面でも、多様な参加者からなるコミュニティという社会面でも大きく成長しました。この成長を受けて、オープンソース版 Foundation の戦略を見直す時が来たとされ、今回 Swift で、Swift のために書かれた新しいオープンソースの Foundation プロジェクト が発表されました。
何が変わるのか
新しい Foundation プロジェクトは、次のような技術的な目標を達成するものとされています。
- C コードのラップをやめる。 ネイティブな Swift 実装にすることで、C と Swift の間の変換コストがなくなり、パフォーマンスが向上します。また、パッケージとして開発される Swift 実装は、Swift 開発者にとってコードを読み・理解し・貢献することが容易になります。
- より小さく粒度の細かいパッケージという選択肢を提供する。 書き直しを機に、Foundation のアーキテクチャを実際の利用形態に合わせます。バイナリサイズを小さく保ちたい開発者のために、システム依存を持たず Foundation の最も重要な型を提供する
FoundationEssentialsパッケージが用意されます。フォーマット済みの日付や時刻などローカライズされたコンテンツを扱う場合には、別パッケージのFoundationInternationalizationを利用します。XML サポートやネットワーキングも引き続き別パッケージで提供され、一部のアプリケーションで有用なレガシー API はFoundationObjCCompatibilityパッケージにまとめられます。 - Foundation の実装を統一する。 同じ API に複数の実装があると、プラットフォーム間でコードを移したときに挙動が食い違い、最終的にバグにつながるおそれがあります。新しい Foundation パッケージは、プラットフォームによらず単一の正規実装の中核となります。
さらに、コミュニティ面での重要な目標も掲げられています。
- オープンな貢献プロセス。 オープンソースプロジェクトは、利用者のコミュニティがそのまま開発者のコミュニティになれるときに最も力を発揮します。すべての開発者が Foundation に新しい API を提案・貢献できるよう、新たなオープンな貢献プロセスが用意される予定です。
今後の見通し
発表時点で示されていた今後の構想であり、実現を約束するものではありません。
これらの計画は、まず Swift フォーラムでコミュニティと議論を始めることとされ、プロジェクト自体は 2023 年に GitHub 上で立ち上げられる予定とされていました。