Swift3とXcode8
Swit3ベータ版が出ました。オープンソースになってから始めたのメジャーリリースです。++や–演算子がなくなったりと構文の変更が多くありますが、移行ツールも用意されているようなので、積極的に使用していきたいですね。
Swift3とXcode8
Xcode8ベータに同梱して、Swift3ベータがリリースされました。拡張機能が数多く含まれており、多くはオープンソースコミュニティから寄与されました。Swift3の主要な目的はSwiftが一貫性のある言語として発展し、将来のリリースにはさらに安定した構文になるために必要な最新のメジャーソース更新を実装することです。
Swift3での構文とAPI名の変更のおかげで言語がさらに自然になりCocoaフレームワークを呼び出すときには今まで以上にSwiftらしさを体験できるようになりました。よく使われるフレームワークであるCore GraphicsやGrand Central Dispatchは新しくずっとクリーンなインターフェースを持っています。本リリースではビルドのパフォーマンスを向上し、毎日楽しく使えるような小さな修正も多く入れています。
Xcode8ベータにはSwiftファイルとplaygroundの移行ツールが含まれており、既存のコードをSwift3に移行するのに役立ちます。
Swift 2.3
Xcode8はSwift3だけでなく、Swift2.3の開発もサポートします。Swift2.3はSwift2.2のマイナーアップデートで、macOS Sierra、iOS10、tvOS10、watchOS3の新しいSDKを含んでいます。このことにより、開発者は最新のSDKにすぐに移行でき、Swift2.2で開発が佳境にあってSwift3にすぐには移行できないようなプロジェクトでも移行可能です。Xcode8を使えばあなたのコードを新しいSDKに追加されたnullability clarity(nullを許容するかどうかの明確化)のようなSwift2.3の新機能に追随するような移行ができます。以下に例をあげます。
新しいSDKのnullabilityを使用しないで定義されたSwift2.2でのImage:
let image = CIImage(MTLTexture: texture, options: options)
Swift2.3ではfailable initializerをより明確にしています。
if let image = CIImage(MTLTexture: texture, options: options)
または
let image = CIImage(MTLTexture: texture, options: options)!
Swift3はXcode8でのプライマリな開発言語ですので、Swift2.3を使い続けたいのであれば考慮事項がいくつかあります。第一にはSwift2.3とSwift3はバイナリ互換性はありません。アプリのコード全体でSwiftの特定のバージョンを指定する必要があります。どちらのバージョンもコンパイラやSDK、デバッガで十分にサポートされていますが、その他のIDEの機能はSwift2.3では動かないこともあります。例えばXcode上のPlaygroundはSwift3でだけ動き、特にiPad用のSwift PlaygroundアプリもSwift3を使用しています。XcodeのプロジェクトテンプレートはすべてSwift3であり、すべてのドキュメントはSwift3に最適化されて書かれています。
Xcode8が今年の終わりにGM(Gold Master)版となったらSwift3でも2.3のどちらのアプリでもApp Storeに申請することができるようになります。Swift3での変更はSwift言語のあるべき未来を表しています。Swiftのコードをバージョン3に移行する時間を確保することを強くおすすめします。暫定的に2.3に移行したとしても、あとでXcode8のマイグレータを使用してSwift2.3からSwift3へ移行することもできます。