この記事の要点
- Xcode が使っているビルドエンジン Swift Build がオープンソース化されました。Swift プロジェクトをビルドするためのビルドルール一式を備えた、強力で拡張可能なビルドエンジンで、App Store の数百万ものアプリや Apple 自身の OS の社内ビルドを支えてきたものです。公開リポジトリには Linux と Windows をターゲットにするためのサポートも含まれます。
- これまで Apple プラットフォームでは Xcode と Swift Package Manager(SwiftPM)でビルドエンジンが異なり、挙動の食い違いによる混乱がありました。Swift Build を Swift プロジェクトに加えることで、すべてのプラットフォームで統一されたビルド実行エンジンを提供する道が開かれます。
- 第一歩として、SwiftPM に Swift Build を代替ビルドエンジンとして統合する作業が始まりました。この変更は利用者からは透過的で、既存パッケージとの完全な互換性を保ちつつ、一貫した cross-platform 体験を目指すものです。
何が発表されたのか
Swift Build は、Xcode が使っているビルドエンジンです。今回これがオープンソース化され、Swift プロジェクトの GitHub organization で公開されました。App Store の数百万ものアプリのビルドや、Apple 自身の OS の社内ビルドプロセスを支えてきた実績のあるエンジンです。公開リポジトリには、Apple プラットフォームだけでなく Linux と Windows をターゲットにするためのサポートも含まれています。
ビルドシステムは、プロジェクト定義やソースコードといった利用者が用意した入力を、コマンドラインツール・ライブラリ・アプリケーションといった成果物へと変換する役割を担います。その性能や信頼性は開発者の生産性に直接影響するため、Swift エコシステム全体で一貫して使える cross-platform なビルドツールへの投資には大きな価値があります。
何ができるのか
Swift Build は、SwiftPM や Xcode のような上位のクライアントから依頼されたビルドを計画・実行するための基盤コンポーネントです。既存の llbuild プロジェクトの上に構築され、次のような機能を追加します。
- Swift コンパイラとの堅牢な統合により、Swift プロジェクトのビルドを確実かつ効率的に調整します。
- ライブラリ・コマンドラインツール・GUI アプリケーションなど多様なプロダクトタイプを、高度なビルド設定オプションとともにサポートします。
- ビルドグラフの最適化により、Swift と C のコードをビルドする際の並列性を最大化します。
導入・今後の位置づけ
Xcode のビルドエンジンと比べると、SwiftPM のビルドエンジンは比較的シンプルです。Apple プラットフォームではパッケージのビルド方法が 2 通り存在し、両者の挙動が一致しないことで利用者が混乱する原因にもなっていました。Xcode のビルドエンジンを Swift プロジェクトに寄贈し、Swift コンパイラと並んでオープンソースで開発していくことで、これらの問題に取り組み、すべての Swift 利用者に優れたビルド体験を届けられるようになります。
この公開により、SwiftPM はすべてのプラットフォームで統一されたビルド実行エンジンを提供できる可能性を得ました。この変更は利用者からは透過的で、既存のすべてのパッケージとの完全な互換性を保ちながら、一貫した cross-platform 体験をもたらすことを意図しています。同時に、すべてのプラットフォームとツールにまたがる新機能や改善、新たな性能最適化や利用者向けの機能を実現するための土台にもなります。
その最初の小さな一歩として、SwiftPM に Swift Build を代替ビルドエンジンとして統合する作業を始めるためのプルリクエストが提出されました。今後数か月のあいだに、コミュニティと協力してビルドシステム統合の統一作業を進め、すべてのプラットフォームとプロジェクトモデルで将来のツール改善の恩恵を受けられるようにすることが目標として示されています。
swift-build リポジトリには、ビルド方法や貢献方法を説明する README とドキュメントが含まれています。プルリクエストや issue による貢献に加え、改善のアイデアやフィードバックは Swift フォーラムの Swift Build カテゴリで受け付けられています。