Help us understand the problem. What is going on with this article?

【iOS9】API Diffs から見る iOS 9 の新機能 #wwdc

More than 3 years have passed since last update.

本日 WWDC 2015 が始まりました。基調講演だけ見ると開発者的にでかい話は Swift 2 と watchOS 2 ぐらいかな、という感がありますが、「iOS 9.0 API Diffs」や「What's New in iOS」を見ると今回も新しい機能が数多く追加されているようです。分量が多すぎてほんの一部しか見れてませんが、気になったものを列挙していきます。

※ 本記事は Apple による公開ドキュメント(ログイン不要領域にある)を元に構成しています

App Extension

App Extension は、iOS 8 から導入された、アプリの機能を他のアプリからも使えるようにするためのしくみですが、なんでもかんでもできるわけじゃなくて、あらかじめ決められている "Extension Points" に限って利用可能な機能です。

で、iOS 9 ではさらにいくつかの Extension Points が追加されました。

  • Network extension points:
  • Safari extension points:
  • Spotlight extension points:
  • The Audio Unit extension point

What's new にはそれぞれ用途の例が示されています。Audio Unit extension とかはわかりやすくて、たとえば自分のアプリで持っているオーディオエフェクトの機能を他のアプリでも使えるようにできるような Extension のようです。

Core Image

What's new では触れられていませんが、API Diffs を見ているといろいろと楽しそうな名前が並んでいます。

  • CITextFeature
  • CIDetectorTypeText

新規追加のこの2つのクラス名から察するに、CIDetector で文字認識が可能になったのかなと。

UIKit

目立つ新規クラスとしては "UIStackView" がありますが、説明読んでもありがたみがピンとこず。サブビューのセットを管理しやすくしてくれる何か、らしいけど。。使ってみます。

あとは UIEvent に coalescedTouchesForTouch:, predictedTouchesForTouch: が追加されてます。まだドキュメント出てないので詳細不明ですが、とにかく新しいタッチイベントです。What's new では下記のように説明されています。

such as the ability to get access to intermediate touches that may have occurred since the last refresh of the display and touch prediction.

あと UIKit dynamics 関連。UIDynamicItem collisionBoundingPath、UIDynamicItemCollisionBoundsType の .Ellipse, .Path により、矩形以外の自由な図形での衝突判定がサポートされるようです。あと、さまざまなフィールドタイプをサポート、カスタム可能にする UIFieldBehavior というクラスが新規追加されています。

AVFounadtion

iOS 7 で追加された音声合成のAPI、AVSpeechSynthesisVoice に色々とAPIが追加されています。identifier, init(identifier: String), name, quality といった API が追加されていて、声の品質や、idで声の種類を指定できるようになる模様。identifier に指定できる定数としては AVSpeechSynthesisVoiceIdentifierAlex というのが用意されています。

他にも AVAudioSequencer、AVBeatRange とか気になる名前のものがありますがドキュメントないとよくわからないのでまた後ほど。

Foundation

NSProcessInfo に NSProcessInfoThermalState というものが追加されていて、デバイスの温度の状態を表すもののようです。

iOSについてはまだドキュメントがないのですが、ググると(一足先に導入された)OS X の「Energy Efficiency Guide for Mac Apps 」というものが出てきました。

このドキュメントによると、NSProcessInfoThermalStateNominal (デバイス温度は許容レベル)とか、NSProcessInfoThermalStateSerious (ヤバイ)とか、NSProcessInfoThermalStateCritical (もうダメ。即刻冷やすべし)とかがあるようです。(というかこのドキュメント、Recommended action とかも書いてあってたぶん iOS でも参考になりそう)

AVKit

AVPictureInPictureController というビューコントローラが追加されています。画面の中に小さい画面を表示するようなことを Picture in Picture と呼ぶらしいです。

MapKit

箇条書きで。

  • MKMapType .HybridFlyover, SatelliteFlyover
    • 標準マップアプリで iOS 8 あたりからできるようになった 3D Flyover モードがマップタイプとして選べるようになった
  • MKAnnotationView detailCalloutAccessoryView, MKPinAnnotationView の追加プロパティ諸々
    • アノテーションが can be fully customized になったとのこと
    • (前からカスタマイズはできてたので、これらの追加APIで「カスタマイズしやすくなった」ということか?)
  • MKMapView showsCompass, showsScale, showsTraffic
    • 名前の通り、MKMapView に方位や縮尺や渋滞情報を表示できるようになったのかと。

Core Bluetooth

新規追加機能はほとんどなし。以下の2つの Added は地味に嬉しい。

  • CBCentralManager isScanning
  • CBPeripheralState .Disconnecting

Scanning かどうか自分でメンバ変数用意して管理してたので。。(CBPeripheralManager に isAdvertising はあるのになんで?って思ってた)

HealthKit

What's new には

New support for tracking areas such as reproductive health and UV exposure.

と書いてあります。"reproductive health" っていうのはググってみると「性と生殖にかかわる健康」とあって、妊娠・出産・避妊などの話のようです。UV exposure は紫外線を浴びた量。それらを新たに HealthKit で管理できるようになった、とのこと。

API Diffs を見ると新規追加クラスは上記に関するもの以外にもたくさんあって、たとえば HKDevice というのが追加されてて、デバイスの情報を保持するクラスのようです。

  • HKDevice
    • firmwareVersion
    • hardwareVersion
    • manufacturer
    • model
    • name
    • softwareVersion
    • UDIDeviceIdentifier

あと HKWorkoutSession という新クラスもあって、ワークアウトの情報を取れるようにするものなのかなと。

  • HKWorkoutSession
    • activityType
    • locationType
    • state
  • HKWorkoutSessionDelegate
    • workoutSession:didChangeToState:fromState:date:
    • workoutSession:didFailWithError:
  • HKWorkoutSessionLocationType
    • HKWorkoutSessionLocationTypeIndoor
    • HKWorkoutSessionLocationTypeOutdoor
    • HKWorkoutSessionLocationTypeUnknown
  • HKWorkoutSessionState
    • HKWorkoutSessionStateEnded
    • HKWorkoutSessionStateNotStarted
    • HKWorkoutSessionStateRunning

HomeKit

What's new では HomeKit に一切触れられていないのですが、新機能のオーバービュー的なページの「iOS 9 for Developers」では、

  • サポートするアクセサリの種類を増やした
  • iCloudからの遠隔操作等、アクセサリとinteractする方法を増やした

とあります。

API Diffs も非常に多くのAPIが新規追加されているのですが、なにぶんこれまで対応デバイスがなかったもので、そもそも本フレームワークをがっつり触ったことがないので新APIのありがたみが正直まだピンときてません。

今回、サンフランシスコの Apple Store にて HomeKit 対応デバイスをゲットできたので、後日色々試してみようと思っています。

その他

新規追加の Search、CoreSpotlight、WatchConnectivity と、WatchKit についてはもうちょっと具体的に調べてまた別記事で書きたいと思います。

(追記)iOS 9 のサンプルコード集

知る人ぞ知る(?)、恒例のサンプル−コード集をつくりました!

watchOS 2 のサンプルコード集もあります。

いずれもGitHub にて公開しております。

(追記)iOS 10 の新機能

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした