WatchOS 1の場合、Apple Watch用のアプリはApple Watch上で動作するWatchアプリとiPhone上で動作するWatchKit extensionから構成されていました。WatchOS 2では、WatchKit extensionもApple Watch上で動作します。Watchアプリとextensionが共にApple Watch上で動作するので、両者間のやりとりはWatchOS 1のときよりも高速です。また、WatchOS 2用のアプリはユーザーのiPhoneが近くになくても動作するようになりました。
さらに、WatchOS 2ではサードパーティのアプリでも「Digital Crown」「Taptic Engine」「加速度センサー」などを使用できるようになっており、アプリから利用できる機能が大幅に増えています。
WatchOS 2用のWatchKitで利用できる主な機能は以下の通りです。
ClockKit FrameworkはWatchKitアプリに関連するcomplicationの管理をサポートします。
Complicationは時計の文字盤上に表示できる小さなエレメントであり、最新かつ有用な情報を表示するために使用できます。これまでApple Watchユーザーが使用できたのは組み込みのComplicationのみでしたが、WatchOS 2で追加されたClockKitを使用することで、サードパーティのアプリ開発者もComplicationを作成できるようになりました。
Watch Connectivity Frameworkは「Apple Watch上のWatchKit extension」と「iPhone上のcontaining app」との間の双方向の通信を提供します。デバイス間でのファイルやデータの受け渡しに使用できます。
また、WatchOS 2はNSURLSessionを使用できます。例えば、Apple WatchからWebサーバーにリクエストを投げて新しいコンテンツを取得できます。
SwiftはWWDC 2014で発表された新しいプログラミング言語であり、以下のような特徴を備えています。
WWDC 2015ではSwift 2が発表されました。この新バージョンの主な変更点は以下の通りです。
WWDC 2015の基調講演で、Swiftは2015年末までにOSSとしてリリースする予定であることが発表されました。この発表が行われた瞬間、会場は大きく盛り上がりました。
OSS化に関して現時点で公表されている情報は以下の通りです。
Swift 2ではdo-catch文を使用して、エラーの検出と対処する処理を記述することができます。
// do-catch 文を使用したエラーハンドリング
do {
// エラーを起こしうるメソッドを呼ぶ
try validateName(name)
} catch ValidateNameError.LongLength {
print("too long")
} catch ValidateNameError.ShortLength {
print("too short")
} catch _ {
assert(false)
}
エラーを投げる可能性がある関数・メソッドは「throws」キーワードとともに定義します。
// 名前(文字列)の長さをチェックするメソッド
func validateName(name: String) throws {
if name.utf8.count > 10 {
throw ValidateNameError.LongLength
} else if name.utf8.count < 4 {
throw ValidateNameError.ShortLength
}
}
Swift 2ではErrorTypeプロトコルに準拠した型を使用してエラーを扱います。
enum ValidateNameError: ErrorType {
case LongLength
case ShortLength
}
最新のOSの機能を使いつつ、古いOSをサポートする場合、条件分岐のコードを書く必要が出てきます。Swift 2では「#available条件式」を用いてOSのバージョンごとに処理を分岐させることができます。
let locationManager = CLLocationManager()
if #available(iOS 8.0, *) {
locationManager.requestWhenInUseAuthorization()
}
Swift 2のその他の改善点は以下の通りです。
実機を触って分かった、“使われる”Apple Watchアプリのキモ
開発者視点で見る、あのドデカい「iPhone 6/6 Plus」Copyright © ITmedia, Inc. All Rights Reserved.