この記事の要点
- Swift 2.2 は、2015 年 12 月にオープンソース化されてから初めての公式リリースです。Apple 以外の 212 名のコントリビューターによる貢献を含み、バグ修正からコア言語・標準ライブラリの拡張・変更まで幅広い改善が入りました。
- Swift 2.1 とほぼソース互換のマイナーリリースで、Swift Evolution プロセスを経た 7 件のProposalによる言語変更に加え、多数のバグ修正・診断(diagnostic)の改善・生成コードの高速化が含まれます。
- Apple プラットフォーム向けには Xcode 7.3 に同梱され、Linux(Ubuntu 14.04 / 15.10)向けの公式バイナリも提供されます。ただし Linux 版にはまだ Core Libraries が含まれず、Swift Package Manager もこのリリースには含まれません。
主な変更点
言語変更
Swift 2.2 には、Swift Evolution プロセスを経た次の言語変更が含まれます。
- SE-0001: 引数ラベルとしての(ほとんどの)キーワード利用を許可:
forやinなど、これまで引数ラベルに使えなかったキーワードの多くを、引数ラベルとして使えるようにします。 - SE-0011: 関連型宣言で
typealiasをassociatedtypeに置き換え: プロトコルの関連型を宣言する際のキーワードを、型エイリアスと区別するためにassociatedtypeに変更します。 - SE-0014:
AnySequence.initへの制約追加:AnySequenceのイニシャライザに制約を加え、より適切に振る舞うようにします。 - SE-0015: タプルの比較演算子: 要素数が同じで各要素が比較可能なタプル同士を、
==などの演算子で比較できるようにします。 - SE-0020: Swift 言語バージョンのビルド設定:
#if swift(>=2.2)のように、コンパイラの言語バージョンに応じた条件付きコンパイルを書けるようにします。 - SE-0021: 引数ラベル付きの関数名参照:
foo(bar:baz:)のように、引数ラベルを含めた形で関数を参照し、オーバーロードを区別できるようにします。 - SE-0022: メソッドの Objective-C セレクタの参照: 文字列リテラルの代わりに
#selector(MyClass.myMethod)の構文でセレクタを参照し、コンパイラによる検証を受けられるようにします。
これらに加えて、多数のバグ修正、診断(diagnostic)の改善、より高速に動作するコードの生成といった改善が含まれます。
ドキュメント
Swift 2.2 に対応した『The Swift Programming Language』の更新版が Swift.org で公開され、Apple の iBooks ストアでも無料で入手できます。
プラットフォーム
- Apple(Xcode): Apple プラットフォーム向けの開発では、Swift 2.2 は Xcode 7.3 の一部として提供されます。
- Linux(Ubuntu 14.04 / 15.10): Swift 2.2 は Linux 上の Swift をサポートします。ただし Linux 版はまだ比較的新しく、このリリースでは Core Libraries を含みません(Core Libraries は Swift 3 で登場予定とされました)。一方で LLDB と REPL は含まれます。Ubuntu 14.04 / 15.10 向けの公式バイナリがダウンロードできます。
なお、Swift Package Manager はまだ開発初期段階のため、このリリースには含まれません。
Swift 利用者への影響
- 既存コードへの影響は小さいです。 Swift 2.2 は Swift 2.1 とほぼソース互換であり、多くのコードはそのままビルドできます。ただし上記の言語変更(特に
associatedtypeへの移行や#selectorの導入)に伴い、将来の Swift 3 を見据えた移行警告が出ることがあります。 - より安全・明確な書き方が増えます。
#selectorによるセレクタの型安全な参照や、#if swift(...)によるバージョン分岐など、文字列やプラットフォーム依存の記述を減らせる構文が利用できます。 - Linux への展開が始められます。 Core Libraries 抜きという制約はあるものの、公式 Linux バイナリにより Apple プラットフォーム以外での Swift 利用を試せるようになりました。
関連リンク
- リリース管理の方針は Swift 2.2 のリリースプロセス を参照してください。
swift-2.2-branchは、将来のバグ修正向け「ドット」リリースに備えて引き続き開かれた状態に保たれました。 - Swift のダウンロード
- Swift Package Manager