この記事では、iOS 10 の既存のフレームワークに対する追加のマイナー変更や機能強化について説明します。
AVFoundation フレームワークの追加
AVFoundation フレームワークには、次の機能強化が含まれています。
- iOS 10 では、開発者はコンテンツ タイプに基づいてさまざまな AVPlayerItem 動作を実装する必要がなくなりました。 単に
Rateプロパティを設定するだけで、AVFoundation は、止まることなく再生に十分なコンテンツが使用できるタイミングを判別します。 - 新しい AVCapturePhotoOutput クラスは、非推奨となった
AVCaptureStillImageOutputクラスに置き換わるもので、キャプチャ プロセスの高度な制御と監視を提供し、Live Photos や RAW キャプチャ形式などの新機能をサポートすることで、すべての写真のワークフローを処理するための統合メソッドを提供します。 - 新しい
AVPlayerLooperクラスを使用すると、再生中に特定のメディアを簡単にループできます。 - この
AVAssetDownloadURLSessionクラスを使用すると、FairPlay で暗号化された HLS ストリームをダウンロードしてから後で再生できます。 - 既定では、AVCaptureSession クラスは、デバイス ハードウェアでサポートされている場合に、ワイドカラーの広色域キャプチャを自動的にサポートします。 詳細については、Apple の「iOS デバイスの互換性リファレンス」を参照してください。
AVKit の追加
AVKit フレームワークには、Now Playing Info Center を更新するタイミングを示す新しい UpdatesNowPlayingInfoCenter プロパティが含まれるようになりました。
コア データの機能強化
iOS 10 には、Core Data フレームワークに対する次の機能強化が含まれています。
- WAL ジャーナル モードの SQLite データ ストアを含む NSManagedObjectContext オブジェクトは、Managed Object Contexts (MOC) を将来のトランザクションのフェッチとエラーのために特定のデータベース バージョンにピン留めできる、新しいクエリ生成機能をサポートします。
- ルートの NSManagedObjectContext オブジェクトは、シリアル化することなく、同時実行のエラーとフェッチをサポートします。
- NSPersistentStoreCoordinator クラスは、SQLite データ ストアのプールを保持します。
- フェッチの実行とサブクラスの作成を容易にするために、いくつかの新しい便利なメソッドが
NSManagedObjectに追加されました。 - 上位レベル
NSPersistenceContainerを使用して、NSPersistentStoreCoordinator、NSManagedObjectModel やその他のコア データ構成リソースを参照します。
詳細については、Apple の Core Data フレームワークのリファレンスを参照してください。
コア イメージの機能強化
iOS 10 では、Core Image フレームワークに対して次の機能強化が行われています。
- 開発者は、処理の前後に色空間を変換することで、Core Image コンテキストの作業中の色空間の外側にある色空間でイメージを処理できるようになりました。
- A8 または A9 CPU を使用する iOS デバイスでは、RAW イメージ形式がサポートされるようになりました。 Core Image は、組み込みの iSight カメラまたはサード パーティ製のカメラから RAW イメージをデコードできるようになりました。 CIFilter クラスの
FilterWithImageDataまたはFilterWithImageURLメソッドを使用して RAW イメージを処理します。 UIImageViewオブジェクトのUIImageレンダリング (Core Image イメージ ストアによってサポートされている場合) のいくつかのレンダリング パフォーマンスが強化されました。- 広色域にタグ付けされた
UIImageオブジェクトは、広色域をサポートする iOS デバイス上のUIImageViewオブジェクトで広色域の色としてレンダリングされます。 - Core Image カーネル コードで、特定のピクセル出力形式を要求できるようになりました。
- CIFilter クラスの
ImageWithExtentメソッドを使用して、フィルター操作にカスタム処理を挿入できます。 Core Image は、出力または表示用のイメージを処理するときに、フィルター間で指定されたコールバックを呼び出します。
さらに、次の新しい Core Image フィルターが追加されています。
CINinePartTiledCINinePartStretchedCIHueSaturationValueGradientCIEdgePreserveUpsampleFilterCIClamp
Core Motion の追加
iOS 10 の新機能である Core Motion フレームワークには、歩数計イベントが含まれており、ランニング中にユーザーがトラッキングの一時停止や再開行った通知を、アプリが迅速かつリアルタイムに受け取ることができます。 CMPedometer を使用して、フォアグラウンドまたはバックグラウンドの歩数計イベントを登録します。
Foundation の機能強化
iOS 10 の Foundation フレームワークに対して、次の機能強化が行われました。
新しい NSMeasurementFormatter クラスを使用して、エンド ユーザーに表示するためのローカライズされた測定値を書式設定します。
新しい NSDateInterval クラスを使用して、期間などの日付と時間間隔の計算を行い、間隔を比較し、間隔の交差をテストします。
新しい NSMeasurement クラスを使用して、異なる測定単位 (UOM) 間で変換したり、異なる UOM 内の値に対して計算を実行したりします。
特定の UOM を表すために、新しい NSUnit クラスと NSDimension クラスを使用します。
ローカル情報と使用可能な表示形式を取得するために、NSLocal クラスにいくつかの新しいプロパティを追加しました。
GameKit の機能強化
iOS 10 の GameKit フレームワークに対して、次の機能強化が行われました。
- Game Center アプリは非推奨となり、iOS から削除されました。 アプリで GameKit を使用する場合は、ランキングなどの GameKit 機能を表示するための独自のインターフェイスを提示する必要があります。
- 新しい iCloud 専用アカウントの種類が GKCloudPlayer クラスによって実装されました。
- 新しい GKGameSession クラスは、Game Center で永続的なデータ ストレージを管理するための一般化されたソリューションを提供します。 プレイヤーの一覧は
GKGameSessionが保持し、参加者の日付の格納、取得、またはプレイヤー間で交換する方法とタイミングはアプリによって実装されます。 多くの場合、Game Session は、既存のターンベースのマッチ、リアルタイムのマッチ、永続的なゲームの保存メソッドに置き換えることができます。
GameplayKit の機能強化
iOS 10 の GameplayKit フレームワークに対して、次の機能強化が行われました。
- 新しい GKMeshGraph クラスを使用して、高パフォーマンスで自然な見た目のパスを提供します。
- 手続き型のノイズ生成が追加され、自然に見えるテクスチャのリアリズムを強化し、カメラの動きにリアリズムを追加し、豊富なゲーム世界を生成するために使用できます。
- Spatial Partitioning を使用して、効率的な検索のためにゲーム世界のデータをパーティション分割します。
- 可能な移動計算を網羅するために、新しいモンテカルロ戦略 (GKMonteCarloStrategist) が追加されました。
- 新しい GKAgent3D クラスと GKGraphNode3D クラスを使用して、既存のエージェントとパス検索の動作に 3D サポートを追加しました。
- 新しい GKScene クラスと GKSKNodeComponent クラスを使用すると、GameplayKit と SpriteKit の組み合わせがこれまで以上に簡単になります。
- ゲーム構築 AI を強化するために、新しいデシジョン ツリー API (GKDecisionTree と GKDecisionNode) が追加されました。
HealthKit の機能強化
iOS 10 の HealthKit フレームワークに対して、次の機能強化が行われました。
- 天気の種類 (
HKWeatherConditionClearやHKWeatherConditionCloudyなど) とトレーニングの種類 (HKWorkoutActivityTypeFlexibilityやHKWorkoutActivityTypeWheelchairRunPaceなど) のために、新しいメタデータ キーが追加されました。 - 新しい
HKCDADocumentクラスが、Clinical Document Architecture (CDA) 形式のドキュメントを表すために追加されました。 - 新しい HKWorkoutConfiguration クラスを使用して、トレーニングの
ActivityTypeとLocationTypeを指定します。 - 車椅子関連の医療データを操作するために、新しい HKWheelchairUseObject と HKHealthStore クラスの
WheelchairUseメソッドが追加されました。
HomeKit の機能強化
iOS 10 の HomeKit フレームワークに対して、次の機能強化が行われました。
- 新しいサービスと特性が追加されました。
- iPad は、リモート アクセサリのアクセスを提供し、オートメーション トリガーを実行し、共有ユーザーのアクセス許可を有効にするための HomeKit ハブとして機能するように構成できます。
- カメラとドアベル アクセサリーのサポートが追加されました。
- アクセサリには、より多くのコンテキストと構成が用意されています。
詳細については、HomeKit の概要に関するドキュメントを参照してください。
Metal の機能強化
iOS 10 の Metal フレームワークに対して、次の機能強化が行われました。
- 3D アプリとゲームで Tessellation を使用して、GPU 経由で複雑なシーンとジオメトリを効率的にレンダリングできるようになりました。
- リソース ヒープとメモリレス レンダー ターゲットを使用して、Metal ベースのアプリのパフォーマンスを最適化するために、リソース割り当てをきめ細かく制御します。
- 関数の特殊化を使用して、シーンのマテリアルとライトの組み合わせ関数の高度に最適化されたコレクションを作成します。
詳細については、Apple の Metal プログラミング ガイドに関するページを参照してください。
ModelIO の機能強化
iOS 10 の ModelIO フレームワークに対して、次の機能強化が行われました。
- USD ファイル形式がサポートされるようになりました。
- 符号付きディスタンス フィールドのサポートが、MDLVoxelArray クラスに追加されました。
- 新しい
MDLLightProbeIrradianceDataSourceクラスを使用して、Light Probe の配置を支援します。 - 新しい
MDLMaterialPropertyGraphクラスを使用して、モデルのランタイムの変更を簡単にサポートします。
Photos の機能強化
iOS 10 の Photos フレームワークに対して、次の機能強化が行われました。
- CIImageProcessorInput クラスと CIImageProcessorOutput クラスを使用して、新しい Core Image プロセッサ機能を利用して編集を実行します。
- Photos フレームワークをサポートするアプリと写真編集の拡張機能 (フォト アプリとカメラ アプリ内で使用する) で Live Photo 編集を利用できるようになりました。
- 新しい PHLivePhotoEditingContext クラスを使用して、Live Photos のビデオと静止画コンテンツの両方に編集を適用します。
ReplayKit の機能強化
iOS 10 の ReplayKit フレームワークに対して、次の機能強化が行われました。
- RPScreenRecorder、RPBroadcastActivityViewController、RPBroadcastController クラスを使用して、サード パーティのサイトを介した記録されたメディアのブロードキャストをサポートします。
- アプリで ReplayKit によるサード パーティのブロードキャスト サービスをサポートするには、Broadcast UI と Broadcast Upload 拡張機能が必要です。
SceneKit の機能強化
iOS 10 の SceneKit フレームワークに対して、次の機能強化が行われました。
- SCNCamera クラスは、HDR の機能と効果を使用して、より優れたリアリズムを提供できます。 アダプティブ露出を使用して自動効果を作成するか、ビネット、カラー フリンジ、カラー グレーディングを使用して、フィルム効果をゲームに追加します。
- SceneKit に、よりシンプルなアセット作成で、より現実的な結果を得るための新しい Physically Based Rendering (PBR) システムが含まれるようになりました。
- 新しい SCNLightingModelPhysicallyBased シェーディング モデルを使用して、3 つの基本的なプロパティ (
Diffuse、Metalness、Roughness) のみを必要としながら、幅広い現実的なシェーディング効果を作成します。 - PBR シェーディングは環境ベースの照明に最適であるため、この
LightingEnvironmentプロパティを使用して、シーン全体にイメージ ベースの照明を割り当てます。 - この
IESProfileURLプロパティを使用して、強度 (ルーメン) や色温度 (ケルビン度) などの実際の値に基づいて照明を定義する実際のライト フィクスチャをインポートします。 - PBR と HDR の両方のカメラ機能は、従来のレンダリング手法よりも優れた結果を提供します。その結果、SceneKit は、すべてのカラー計算がリニア色空間で実行されるようになりました (広色域デバイス ディスプレイで P3 色域を使用)。
- SceneKit では、カラー プロファイル情報を読み取ることで、色がすべての色と一致するようになりました。
- SceneKit は、すべてのシェーダーの種類に対してリニア RGB 色空間内の色要素の値を解釈します。
- リニア色空間のレンダリングと広色域の両方を無効にするには、アプリの
Info.plistでSCNDisableLinearSpaceRenderingキーとSCNDisableWideGamutキーを指定します。 - 新しい SCNGeometryPrimitiveTypePolygon クラスを使用してジオメトリを指定するために、任意の多角形プリミティブ (ファイルから読み込まれるか、プログラムによって生成されます) を構築します。
- SceneKit はテクスチャ イメージのカラー プロファイル情報を読み取って調整するため、すべてのイメージに Asset Catalog 使用して、この情報が確実に提供されるようにします。
SpriteKit の機能強化
iOS 10 の SpriteKit フレームワークに対して、次の機能強化が行われました。
- カスタム シェーダーは、属性値 (
SKAttributeValue) 指定することでシェーダーを使用する各ノードによって個別に構成できる属性 (SKAttribute) を提供できます。 - タイルマップは、2D、2.5D、および
SKTileMapMode、SKTileGroup、SKTileGroupRule、SKTileSetクラスを使用したサイド スクロール ゲームの正方形、六角形、アイソメトリックのタイル図形をサポートするようになりました。 - 新しい
SKWarpGeometryクラスを使用して、SKSpriteNode または SKEffectNode レンダリングを伸縮させたり、歪めたりします。 新しい SKAction クラスを使用して、ワープ効果の間の画面切り替え効果をアニメーション化できます。 - SKView クラスには、シーンをレンダリングするタイミングと方法をきめ細かく制御するための新しいメソッドがいくつか用意されています。
ScrollView の機能強化
iOS 10.3 の ScrollView コントロールに対して、次の機能強化が行われました。
UIScrollViewでは、ユーザーが次のUIScrollViewIndexDisplayModeとしてスクロールしている間のインデックスの表示方法を制御するIndexDisplayModeプロパティが含まれます。Automatic- インデックスの表示は OS によって制御されます。AlwaysHidden- インデックスの表示は常に非表示になります。
UIKit の機能強化
iOS 10 の UIKit フレームワークに対して、次の機能強化が行われました。
- 新しい UIPasteboard API は、新しいオプション (有効期間の制限など) を提供し、共通のクラス型の互換性のあるコンテンツ タイプを自動的に宣言します。
- 完全にインタラクティブなオブジェクト ベースの割り込み可能なアニメーションのサポートが新たに追加され、ジェスチャにリンクできます。 詳細については、Apple の UIViewAnimating プロトコル リファレンス、UIViewPropertyAnimator クラス リファレンス、UITimingCurveProvider プロトコル リファレンス、UICubicTimingParameters クラス リファレンス、UISpringTimingParameter クラス リファレンスを参照してください。
- 新しい
UIPreviewInteractionとUIPreviewInteractionDelegateを使用すると、開発者アプリがクイック表示とポップ操作のためのカスタム インターフェイスを提供できます。 - 新しい
UIAccessibilityCustomRotorクラスを使用すると、アプリは、Voice Over などの支援テクノロジにカスタムのコンテキスト固有の機能を提供できます。 UIAccessibilityIsAssistiveTouchRunningとUIAccessibilityAssistiveTouchStatusDidChangeNotificationシンボルを使用して、AssistiveTouch が有効になっているかどうかを判断します。UIAccessibilityHearingDevicePairedEarとUIAccessibilityHearingDevicePairedEarDidChangeNotificationシンボルを使用して、ペアリングされた MFi 聴覚補助具の状態を取得します。- ラベルで動的な型をサポートするには、テキスト フィールドとテキスト ボックスで
UIFontクラスの新しいPreferredFontForTextStyleメソッドを使用します。 - デバイスの
UIContentSizeCategoryが変更されるときに、要素がそのフォントを更新する必要があるかどうかを判断するには、UIContentSizeCategoryAdjustingデリゲートのAdjustsFontForContentSizeCategoryプロパティを使用します。 UIApplicationクラスのOpenURLメソッドは非同期的に呼び出され、オープン アクションの完了後に呼び出される完了ハンドラーがサポートされるようになりました。- CloudKit 共有を開始し、新しい
UICloudSharingControllerとUICloudSharingControllerDelegateクラスを使用してそのプロパティを変更します。 - プリフェッチされたセルを利用して、新しい
UICollectionViewDataSourcePrefetchingデリゲートでUICollectionViewsのスクロール エクスペリエンスを向上させます。 - 開発者は、タブ バー項目 (テキストや背景色など) のバッジの外観を制御できるようになりました。
- すべてのスクロール ビューおよびスクロール ビュー サブクラス (
UICollectionViewなど) で Refresh コントロールがサポートされるようになりました。
WebKit の機能強化
iOS 10 の WebKit フレームワークに対して、次の機能強化が行われました。
WKWebViewクラスにクイック表示とポップのサポートが追加されました。 このShouldPreviewElementメソッドを使用して、特定の Web ビューにプレビューを表示するかどうかを判断します。