BT

最新技術を追い求めるデベロッパのための情報コミュニティ

寄稿

Topics

地域を選ぶ

InfoQ ホームページ ニュース AppleがSwift 1.2のリリースを準備中

AppleがSwift 1.2のリリースを準備中

原文(投稿日:2015/02/10)へのリンク

Appleは,Xcode 6.3の一部として,Swift 1.2を発表した。言語の変更内容を記したリリースノート(サインインが必要)も,同時に公開されている。Swiftが最初に発表されたのは2014年6月のWWDCだが,Swift 1.0のマスタがリリースされたのは,その年の9月になってからだった。直後の10月には,早くもSwift 1.1がリリースされている。現時点ではベータ版としての公開だが,来月あるいは2ヶ月後のApple Watch販売開始と同時にリリースされる可能性が高い。これにより開発者は,一般リリースに先立って,自身のコードをSwift 1.2構文に移行するための時間的余裕を得ることができる。

まず,パフォーマンスがさらに強化された。最適化をオンにしてコンパイルされたコードの演算速度が向上しただけでなく,デバッグビルド(最適化なし)についても大幅に改善されている。これまでSwiftコードのパフォーマンスに関して,批判的なベンチマーク結果をいくつも投稿してきたDavid Owens氏でさえ,今回の改善には嬉しい驚きを見せている。

コード面では,互換性のない変更がいくつかある。その移行のためXcode 6.3には,Edit > Converter > To Swift 1.2というメニューオプションが用意されていて,as演算子(失敗してはならないキャスト)とas!演算子(実行時に失敗する可能性のあるキャスト)のように,必要な項目の自動変換を実行してくれる。 また,Object-Cのコンテナ型である(NDictionaryNSArray)が自動的にSwiftの対応型にキャストされなくなり,"nsdict ad Dictionary" の明示的な宣言が必要になった。(逆変換はこれまで通り,自動的に行われる)また,Swiftには新しいSetタイプがあり,Objective-CのNSSetタイプとの橋渡しをする。Byteなどのタイプを使用している部分は,Uint8置き換えられる

パフォーマンスが向上し,Objective-Cとの相互運用性改善された。nullの値を持つことのできる引数や戻り値は,Objective-Cの新しいnullabenonnull属性を使ってアノテートすることができる。Swiftではそれぞれがoptional,あるいはnon-optionalタイプに対応する。さらに@objc属性を使って,Swiftの列挙型をエクスポートできるようになった。Objective-C側ではEnum名と,typedefされた定数値の両方に対応する。ただし,使用できるのは整数列挙型(integral enum)のみで,それ以外の値と関連データを使うことはできない。例えば次のSwiftコードは,Objective-Cでも使用可能だ。

Swift Objective-C
@objc enum Direction: Int {
  case North, South, East, West
}
typedef NS_ENUM(NSInteger,Direction) {
  DirectionNorth,
  DirectionSouth,
  DirectionEast,
  DirectionWest
};

letおよびif let文もさらに強力になった。当初Swiftでは,let値(定数)は生成時に直接初期化しなければならなかったが,この規則が緩められて,使用する前に定義されていればよくなった。結果として,次のようなコードを書くことが可能になる。

let dir:Direction
if random() % 2 == 0 {
  dir = North
} else {
  dir = South
}

さらに,ひとつのif let文で複数の変数へのアサインが可能になり,ネストしたif let文は必要なくなった。

var first: String?
var last: String?
...
if let f = first, l = last {
  println("Hello \(f) \(l)")
}

変更されていないソースファイルの再コンパイルの回避や,変更したソースでもインクリメンタルコンパイルを行うことにより,コードのビルド時間も改善されている。一度ビルドしてしまえば,それ以降の変更ははるかに速くコンパイルされるようになる。ブログには,Swiftコードのコンパイル中や使用中にXcodeが応答しなくなり,再起動が必要になる場合があるという,“SourceKitエラー”の軽減も明記されている。そして最後に,Practical Swiftで記録されたクラッシュの80%以上が解決された。

Swift 1.2と,それに対応するXcodeのリリース日程は,現時点では公表されていない。しかし,Java,.Net,AndroidデバイスをターゲットとするSwift言語の実装であるSilverでは,開発作業が進められている。Swiftのオープンソース化やその時期については,今のところ何のニュースもないが,そのような動きのあることは確実だ。

この記事に星をつける

おすすめ度
スタイル

BT