Swift 5.0 日本語化計画 : Swift 5.0
ブログ:Swift 4.0 リリース!
2017年9月19日 Ted Kremenek
Swift 4 が公式にリリースされました!Swift 4 は Swift 3 の強みを基盤にビルドされており、堅牢性と安定性を高め、Swift 3 とのソースコード互換性を提供し、標準ライブラリを改善し、アーカイブやシリアライズなどの機能を追加します。
WWDC 2017:Swift の新機能 プレゼンテーション(訳注:FireFox ではうまく見られないようです。Safari ならうまく見られます。)を見て、Ole Begemann によってまとめられたこの プレイグラウンド の新機能のいくつかを試してみてください。
言語の更新
Swift 4.0 は主な言語のリリースであり、Swift Evolution プロセスを経た以下の言語の変更と更新が含まれています。
文字列
Swift 4 には、Unicode の正確さを保持し、部分文字列を作成、使用、管理するためのサポートが追加された、より高速で使いやすい String の実装が含まれています。
もっと見る:(訳注: リンク先の翻訳についてはご容赦下さい。)
- SE-0163 文字列の改訂:コレクションの適合性、C との相互使用 (Interop)、コードの移植
- SE-0168 複数行文字列リテラル
- SE-0178 文字に unicodeScalars プロパティを追加
- SE-0180 文字列索引のオーバーホール
- SE-0182 文字列改行エスケープ
- SE-0183 部分文字列のパフォーマンス供給
コレクション
Swift 4 では、コレクション型の作成、使用、および管理が改善されました。
もっと見る:
- SE-0148 一般的な添え字
- SE-0154 辞書のキーと値のカスタムコレクションを提供
- SE-0165 辞書とセットの強化
- SE-0172 一方通行の範囲
- SE-0173 MutableCollection.swapAt(_:_:)を追加
アーカイブとシリアル化
Swift 4 は、構造体と列挙型のアーカイブをサポートし、JSON や plist などの外部形式への型保証シリアル化を可能にします。
詳細はこちらをご覧ください:SE-0166 Swift のアーカイブとシリアル化
その他の言語の更新
Swift 4 はまた、Swift 革命プロセスから以下の言語の提案を実装しています。
- SE-0104 プロトコル指向の整数
- SE-0142 関連する型を制約する where 句を許可
- SE-0156 クラスとサブタイプの存在
- SE-0160 @objc の推論を制限
- SE-0164 プロトコル拡張の最終サポートを削除
- SE-0169 private 宣言と拡張間の相互作用の改善
- SE-0170 NSNumber ブリッジングおよび Numeric 型
- SE-0171 inout での reduce
- SE-0176 メモリへの排他的アクセスを強制
- SE-0179 swift run コマンド
新しい互換モード
Swift 4 では、新しいバージョンのコンパイラを使用するためにコードを変更する必要はありません。コンパイラは 2 つの言語モードをサポートしています。
- Swift 3.2:このモードでは、コンパイラは Swift 3.x コンパイラでビルドされたソースの大半を受け入れます。このレベルのソース互換性を提供するために、既存の API (標準ライブラリの一部である API または Apple によって出荷される API) への更新は、このモードでは現れません。Swift 4 の新しい言語機能のほとんどは、この言語モードで使用できます。
- Swift 4.0:このモードには、Swift 4.0 言語と API のすべての変更が含まれます。いくつかのソース移行は多くのプロジェクトで必要になりますが、ソース変更の数は Swift リリース間の多くの以前の大きな変更と比較して非常に控えめです。
言語モードは、Swift Package Manager および Xcode によって自動的に処理される -swift-version フラグによってコンパイラに指定されます。
これらの言語モードの利点の 1 つは、新しい Swift 4 コンパイラの使用を開始し、一度に 1 つのモジュールで新しい Swift 4 の機能を利用して、自分のペースで Swift 4 に完全に移行できることです。
Swift 4 の移行と互換モードの詳細については、Swift 4 への移行 を参照してください。
Package Manager の更新
Swift 4 では、新しいワークフロー機能と Swift Package Manager のより完全な API が導入されました。
- あなたの最初の公式リリースにタグを付ける前に、複数のパッケージを同時に開発する方が簡単になりました。また、複数のパッケージの分岐で一緒に作業する方が簡単です。
- パッケージ製品は形式化されており、パッケージがクライアントに公開するライブラリを制御することができます。
- 新しいパッケージ API により、パッケージはいくつかの新しい設定を指定することができ、パッケージ作成者がパッケージのビルド方法やソースをディスク上でどのように構成するかをより詳細に制御できます。全体的に、パッケージを作成するために使用された API は、古いパッケージとのソース互換性を維持しながら、よりクリーンで明確になりました。
- macOS では、Swift パッケージのビルドはサンドボックス内で行われ、ネットワークアクセスやファイルシステムの変更を防ぎ、悪意を持って作成されたマニフェストの影響を緩和します。
さらに、Swift Package Manager は Swift 3.1 (SE-0159) で導入されたパッケージマネージャツールの上でビルドするため、パッケージ作成者は Swift 4 を含むパッケージのビルドに必要な Swift のバージョンを指定できます。
パッケージマネージャーの拡張機能の詳細については、以下を参照してください。
- SE-0146 パッケージマネージャ製品の定義
- SE-0149 Top of Tree 開発用パッケージマネージャサポート
- SE-0150 分岐用パッケージマネージャのサポート
- SE-0158 パッケージマネージャマニフェスト API の再設計
- SE-0162 パッケージマネージャカスタムターゲットレイアウト
- SE-0175 パッケージマネージャが依存関係解決改訂
- SE-0179 swift run コマンド
- SE-0181 パッケージマネージャ の C/C++ 言語標準サポート
文書化
Swift 4.0 用 Swift プログラミング言語 の最新バージョンは、Swift.org で入手できます。Apple の iBooks ストア でも無料で入手できます。
プラットフォーム
Linux
Ubuntu 16.10、Ubuntu 16.04、および Ubuntu 14.04 の公式バイナリを ダウンロードできます。
Apple(Xcode)
アップルのプラットフォーム上での開発用に、Swift 4.0 は Xcode 9 の一部として出荷されます。
Swift.org からツールチェーンを ダウンロードできます。
ソース
Swift 4.0 上の開発は、GitHub 上の、以下のリポジトリの swift-4.0-branch で辿れます。
- swift
- swift-llvm
- swift-clang
- swift-lldb
- swift-cmark
- swift-corelibs-foundation
- swift-corelibs-libdispatch
- swift-corelibs-xctest
- swift-llbuild
- swift-package-manager
- swift-xcode-playground-support
- swift-compiler-rt
- swift-integration-tests
swift-4.0-RELEASE というタグは、Swift 4.0 の最終版を構成するリポジトリの特定のリビジョンを指定します。
swift-4.0-branch というタグは開いたままですが、同じリリース管理プロセスの下で、潜在的な将来のバグ修正 "dot" リリースの変更を蓄積しています。
<-Swift のローカルリファクタリング Swift 4.0 での Dictionary と Set の改善->