Swift Digest
Blog | Swift.org Blog

Swift 4.0 リリース

Swift 4.0 Released!

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

この記事の要点

主な変更点

言語・標準ライブラリの更新

Swift 4.0 はメジャーな言語リリースであり、Swift Evolution プロセスを経た多数の変更を含みます。主なテーマごとに整理すると次のとおりです。完全な一覧は元記事を参照してください。

String

Swift 4 では、Unicode の正しさを保ちつつ、より高速で使いやすい String 実装が導入されました。substring の生成・利用・管理のサポートも追加されています。関連する主な Proposal は次のとおりです。

Collection

Collection 系の型の生成・利用・管理に関する改善が入りました。

アーカイブとシリアライズ

Swift 4 は struct 型と enum 型のアーカイブをサポートし、JSON や plist といった外部フォーマットへの型安全なシリアライズを可能にします(SE-0166)。これが Codable プロトコルとして提供されるものです。型を Codable に適合させるだけで、エンコード・デコードのコードを自前で書かずに済みます。

struct Landmark: Codable {
  var name: String
  var foundingYear: Int
}

let landmark = Landmark(name: "Mojave Desert", foundingYear: 1994)
let data = try JSONEncoder().encode(landmark)
let decoded = try JSONDecoder().decode(Landmark.self, from: data)

そのほかの言語更新

このほか、Swift Evolution プロセスを経た次の Proposal も実装されています。

新しい互換モード

Swift 4 では、新しいバージョンのコンパイラを使うためにコードを変更する必要があるとは限りません。コンパイラは 2 つの言語モードをサポートします。

言語モードはコンパイラの -swift-version フラグで指定され、Swift Package Manager や Xcode が自動で扱います。この仕組みにより、新しい Swift 4 コンパイラを使い始めつつ、モジュールを 1 つずつ自分のペースで Swift 4 へ移行できます。

Package Manager の更新

Swift 4 では、Swift Package Manager に新しいワークフロー機能とより完全な API が導入されました。

関連する主な Proposal は、product 定義(SE-0146)、top of tree 開発のサポート(SE-0149)、ブランチのサポート(SE-0150)、マニフェスト API の再設計(SE-0158)、カスタムターゲットレイアウト(SE-0162)、依存解決の改訂(SE-0175)、swift run コマンド(SE-0179)、C / C++ 言語標準のサポート(SE-0181)です。

ドキュメント

Swift 4.0 に対応した『The Swift Programming Language』の更新版が Swift.org で公開され、Apple の iBooks ストアでも無料で入手できます。

プラットフォーム

Swift 利用者への影響

関連リンク