Switf 5 のアップデートについて話された内容をまとめました #WWDC19

本記事は Apple からベータ版として公開されているドキュメントを情報源としています。 そのため、正式版と異なる情報になる可能性があります。ご留意の上、お読みください。

こんにちは、モバイルアプリサービス部の田中孝明です。

What's New in Swift で話されていた内容をまとめました。

What's New in Swift

Swift is now the language of choice for a number of major frameworks across all of Apple's platforms, including SwiftUI, RealityKit and Create ML. Join us for a review of Swift 5.0 and an exploration of Swift 5.1, new in Xcode 11. Find out about the latest advancements in performance and safety. Discover new features in the language, and how they have enabled the development of these new frameworks.

ABIとモジュール安定化

ABI安定化

  • ABI とは Application Binary Interface の略
  • 実行時にプログラムの詳細を特定
  • 互換性のあるABIにより、別々にコンパイルされたコードを実行時に対話させることができる
  • ABIの安定性の前に、プログラムとフレームワークは両方とも同じコンパイラで構築される必要がある
  • プログラムとフレームワークは異なるコンパイラ(Swift 5以降)で構築することができる

モジュール安定化

  • SwiftライブラリとそれらがエクスポートするAPIは「モジュール」と呼ばれる
  • モジュールファイルはコンパイラによって作成、使用される
  • Swift 5.1で安定したテキスト形式のモジュールインタフェースファイルが導入された

パフォーマンスの向上

  • Swift 4.2 と比べて、起動のオーバーヘッドが5%早くなった
  • コードサイズも10%低下、最適化の場合は15%低下

Swift と Objective-C 間の高速ブリッジング

  • NSDictionary から Dictionary のブリッジが1.6倍高速に
  • ブリッジされた Swift の String に対して、NSString が実行された場合は15倍に

SwiftNIO

  • SwiftNIOは、クロスプラットフォームの非同期イベント駆動型ネットワークアプリケーションフレームワーク
  • SwiftNIOは、保守可能な高性能プロトコルサーバーおよびクライアントを迅速に開発するための、クロスプラットフォームの非同期イベント駆動型ネットワークアプリケーションフレームワーク

  • SwiftNIO

Swift Tooling と オープンソース

Docker

Language Server Protocol

標準ライブラリ

Vector

文字列補間

Opaque Result Types

Property Wrapper Types

  • Property Delegates(Proposal: SE-0258)

  • ラッパー型はカスタムアクセスパターンを定義します

  • プロパティは宣言に属性を追加することで、採用できます

DSLs (Domain Specific Languages)

  • ツールのサポートが不可欠
  • Swiftで埋め込みDSLを定義する

参考文献

まとめ

待望のABI安定化やSwiftUIへの下準備など、着々とアップデートされている様子が伺えました。Swiftの今後のアップデートもどんどんキャッチアップしていきたいと思います。