iOS 9 の概要
"この記事では、Xamarin.iOS 開発者向けに、iOS 9 で使用できる新規および変更された API と機能のすべてについて説明します。"
Apple は、既存の機能に対する多くの機能強化に加えて、iOS 9 にいくつかの新しい API とサービスを追加しました。
3D Touch
iOS 9、iPhone 6s、iPhone 6s Plus の新機能である 3D Touch では、iOS アプリに感圧性ジェスチャが追加されます。 3D Touch を使うと、iPhone アプリはユーザーがデバイスの画面に触れていることを認識できるだけでなく、ユーザーが加えている圧力の強さを感知し、さまざまな圧力レベルに対応することもできます。
3D Touch は、アプリに次の機能を提供します。
- 感圧性 - アプリは、ユーザーが画面に触れている強弱の程度を測定し、その情報を利用できるようになりました。 たとえば、ペイント アプリは、ユーザーが画面をタッチする強さに基づいて線を太くしたり、細くしたりできます。
- Peek と Pop - ユーザーが現在のコンテキストから移動しなくてもデータを操作できるようになりました。 画面を強く押すと、興味のある項目を Peek (覗く) することができます (メッセージのプレビューなど)。 より強く押すことで、項目に Pop (ポップする) できます。
- クイック アクション - クイック アクションは、ユーザーがデスクトップ アプリで項目を右クリックしたときにポップアップされるコンテキスト メニューのようなものだと考えてください。 クイック アクションを使うと、iOS デバイスのホーム画面アイコンからアプリ内の機能への共通の、すばやく簡単にアクセスできるショートカットを追加できます。
詳細については、3D Touch の概要に関するガイドを参照してください。
アプリケーション トランスポート セキュリティ
iOS 9 の新機能、アプリ トランスポート セキュリティ (ATS) では、インターネット リソース (アプリのバックエンド サーバーなど) とアプリの間にセキュリティで保護された接続が適用されます。 ATS は、すべてのインターネット通信がセキュリティで保護された接続のベスト プラクティスに準拠していることを保証し、アプリまたは使用しているライブラリを介して偶発的に直接機密情報が漏えいすることを防ぎます。
iOS 9 および OS X 10.11 (El Capitan) 用に構築されたアプリでは ATS が既定で有効なため、NSUrlConnection、CFUrl、または NSUrlSession を使うすべての接続は ATS セキュリティ要件の対象となります。 接続がこれらの要件を満たしていない場合、例外が発生して失敗します。
ATS の詳細については、アプリ トランスポート セキュリティに関するガイドを参照してください。
iPad のマルチタスキング
iOS 9 では、特定の iPad ハードウェア上で 2 つのアプリを同時に実行するためのマルチタスク サポートが Apple により追加されました。 その結果、Xamarin.iOS アプリは、特定の時点で実行されている唯一のアプリであることや、デバイスの全画面またはリソースにアクセスできることを想定できなくなりました。
iPad のマルチタスクは、次の機能によってサポートされています。
- スライド オーバー - ユーザーは、現在実行中のメイン アプリの約 25% を占めるスライド アウト パネル (言語の方向に基づいてパネルの右側または左側) で 2 つ目の iOS アプリを一時的に実行できます。 スライド オーバーは、iPad Pro、iPad Air、iPad Air 2、iPad Mini 2、iPad Mini 3、または iPad Mini 4 でのみ使用できます。
- 分割ビュー - サポートされている iPad ハードウェア (iPad Air 2、iPad Mini 4、iPad Pro のみ) では、ユーザーは 2 つ目のアプリを選び、分割画面モードで現在実行中のアプリと並べて実行できます。 ユーザーは、各アプリがメイン画面に占める割合を制御できます。
- ピクチャ イン ピクチャ - 動画コンテンツを再生するアプリの場合、iOS デバイス上で現在実行されている他のアプリの上に浮かぶ、移動可能でサイズ変更可能なウィンドウで動画を再生できるようになりました。 ユーザーは、このウィンドウのサイズと位置を完全に制御できます。 ピクチャ イン ピクチャは、iPad Pro、iPad Air、iPad Air 2、iPad Mini 2、iPad Mini 3、または iPad Mini 4 でのみ使用できます。
iOS 9 の新しいマルチタスク機能の詳細については、iPad のマルチタスクに関するガイドを参照してください。
新しい Contacts と Contacts UI フレームワーク
iOS 9 の導入に伴い、Apple は、iOS 8 以前で使われていた既存のアドレス帳およびアドレス帳 UI フレームワークを置き換える 2 つの新しいフレームワーク、Contacts と ContactsUI をリリースしました。
これらの新しいオブジェクト指向フレームワークでは、次の機能が提供されます。
- Contacts - Xamarin.iOS にユーザーの連絡先情報へのアクセスを提供します。 ほとんどのアプリは読み取り専用アクセスのみを必要とするため、このフレームワークはスレッドセーフな読み取り専用アクセス用に最適化されています。
- ContactsUI - iOS デバイスで連絡先を表示、編集、選択、作成するための Xamarin.iOS UI 要素を提供します。
詳細については、Contacts と Contacts UI に関するドキュメントを参照してください。
新しい検索 API
iOS 9 では検索が拡張され、Xamarin.iOS アプリ内の情報にアクセスするための優れた新しい方法が提供されました。 新しい検索 API を使うと、Spotlight と Safari の検索結果、Handoff、Siri のリマインダーと提案を使ってアプリのコンテンツを検索できるようになります。 これにより、ユーザーはアプリの奥深くにあるアクティビティや情報にすばやくアクセスできるようになります。
さらに、新しい検索 API を使うと、検索の実装経験がなくても、アプリに検索を簡単に統合できます。 このため、Apple は、通常は数時間で iOS 9 アプリのコンテンツが App Search を使って汎用的に検索できるようになると主張しています。
詳細については、検索の機能強化に関するドキュメントを参照してください。
新しいスタック ビュー
スタック ビュー コントロール (UIStackView) は、自動レイアウトとサイズ調整クラスの機能を利用して、iOS デバイスの向きと画面サイズに動的に対応するサブビューのスタック (水平方向または垂直方向) を管理します。
スタック ビュー コントロールを使うと、ユーザー インターフェイスのレイアウトに必要な作業量が大幅に削減されます。 スタック ビューにアタッチされているすべてのサブビューのレイアウトは、軸、分布、配置、間隔などの開発者が定義したプロパティに基づいて自動的に管理されます。
詳細については、スタック ビューの概要に関するドキュメントを参照してください。
コレクション ビューの変更
iOS 9 では、コレクション ビュー (UICollectionView) は、新しい既定のジェスチャ認識エンジンといくつかの新しいサポート メソッドを追加することにより、すぐに使える、項目のドラッグによる並べ替えをサポートするようになりました。
これらの新しいメソッドを使うと、コレクション ビューでドラッグによる並べ替えを簡単に実装でき、並べ替えプロセスのどの段階でも項目の外観をカスタマイズすることができます。
iOS 9 のコレクション ビューの変更点の詳細については、コレクション ビューの変更点に関するガイドを参照してください。
ゲームの機能強化
iOS 9 では、Apple はゲーム API にいくつかの技術的改良を加え、Xamarin.iOS アプリでゲームのグラフィックスとオーディオを簡単に実装できるようにしました。 これには、上位レベルのフレームワークによる開発の容易さと、iOS デバイスの GPU のパワーを活用した下位レベルの機能強化による速度とグラフィック能力の向上の両方が含まれます。
これには、GameplayKit、ReplayKit、Model I/O、MetalKit、Metal Performance Shaders に加えて、Metal、SceneKit、SpriteKit の新しい強化された機能が含まれます。
詳細については、ゲームの機能強化に関するドキュメントを参照してください。
HomeKit フレームワークの変更
iOS 8 で導入された HomeKit フレームワークは、Xamarin.iOS アプリからさまざまな HomeKit 対応アクセサリ (自動照明、ドア ロック、ガレージ ドア開閉機など) をセットアップおよび制御する機能を提供します。 セットアップと構成が簡単であることに加えて、HomeKit アクセサリは音声 Siri コマンドによって制御できます。
iOS 9 では、Apple はセットアップを容易にし、サポートされるアクセサリの種類を拡張し、より多くのアクセサリの操作 (iCloud 経由でアクセサリをリモート制御するなど) を提供しました。
詳しくは、HomeKit の概要に関する記事と、Apple の HomeKit に関するドキュメントをご覧ください。
Handoff フレームワークの変更
Handoff (継続性とも呼ばれる) は、ユーザーがいずれかのデバイス (iOS または Mac) でアクティビティを開始し、その同じアクティビティを別のデバイス (ユーザーの iCloud アカウントによって特定される) で継続する方法として、iOS 8 および OS X Yosemite (10.10) で Apple によって導入されました。
iOS 9 では Handoff が強化され、新しく強化された検索機能もサポートされました。 詳細については、検索の機能強化に関するドキュメントを参照してください。 Handoff の使用方法の詳細については、Handoff の概要に関するドキュメントを参照してください。
新しい拡張ポイント
iOS 8 で、Apple は、ユーザーがキーボードを要求したとき、または写真を編集しているときなど、通知センター内などの標準のコンテキストでオペレーティング システムによって表示されるライブラリである拡張機能を導入しました。
iOS 9 では、Apple は次のように、使用ポリシーを定義し、特定の領域内で機能するための API を提供するいくつかの新しい "拡張機能ポイント" を提供することで、拡張機能のサポートを拡張しています。
- 新しいオーディオ ユニット拡張機能ポイント - この拡張機能ポイントを使って、他のオーディオ ユニット ホスト アプリ (GarageBand など) 内で使うオーディオ エフェクト、楽器、サウンド ジェネレーターなどを提供します。 この拡張機能ポイントを使うと、App Store で "オーディオ ユニット" (オーディオ プラグイン) を販売することもできます。
- 新しいインデックス メンテナンス拡張機能ポイント - この拡張機能ポイントを使って、アプリの再起動を必要とせずにアプリ データの再インデックスをサポートします。
- 新しいネットワーク拡張機能ポイント (これらには Apple からの特別なアクセス許可が必要です):
- アプリ プロキシ プロバイダー拡張機能 - この拡張機能ポイントを使って、カスタムの透過的なクライアント側ネットワーク プロキシを実装します。
- フィルター データ プロバイダー/フィルター コントロール プロバイダー拡張機能 - これらの拡張機能ポイントを使って、デバイス上で動的ネットワーク コンテンツ フィルター処理を実装します。
- パケット トンネル プロバイダー拡張機能 - この拡張機能ポイントを使って、クライアント側にカスタム VPN トンネリング プロトコルを実装します。
- 新しい Safari 拡張機能ポイント:
- コンテンツ ブロック拡張機能 - この拡張機能ポイントを使って、ユーザーが Web を閲覧しているときに表示されない、ブロックされるコンテンツの一覧を定義します。
- 共有リンク拡張機能 - この拡張機能ポイントを使って、Safari の共有リンクでアプリのコンテンツを表示できるようにします。
詳細については、拡張機能の概要と Apple のアプリ拡張機能プログラミング ガイドに関するドキュメントを参照してください。
キーチェーンの機能強化
iOS 9 では、Apple はキーチェーンを強化してセキュリティで保護されたエンクレーブ用に新しい暗号化キーの種類を提供し、次のような項目保護オプションを追加しました。
- 指紋データベースが変更されたときにキーチェーン項目を無効にする新しい Touch ID 制約。
- Touch ID またはパスコードのみを使ってアクセス制御リストのエントリを作成できる新しい制約。
SecItem
呼び出しとは別に認証を呼び出すことができる新しい認証コンテキスト。- アプリが提供するキーチェーン項目の暗号化のためのアクセス制御リストのエントロピー (アプリケーション パスワード オプションを使用)。
- セキュリティで保護されたエンクレーブ内でのキーの生成と使用のサポート (
kSecAttrTokenIDSecureEnclave
属性を使用)。
詳細については、Xamarin.iOS の Touch ID と Face ID に関する記事を参照してください。
右から左へ記述する言語のサポート
iOS 9 では、Apple は右から左へ記述する言語を完全にサポートすることで、反転したユーザー インターフェイスの表示をこれまでより簡単にしました。 次に例を示します。
- 標準の UIKit コントロールは、iOS デバイスのロケールと言語設定に基づいて自動的に右から左に反転します。
- UIView クラスには、特定のビューを右から左に反転したときにどのように表示されるかを定義できる属性が用意されています。
- UIImage クラスの FlipsForRightToLeftLayoutDirection プロパティを使って、プログラムで画像を反転する機能。
詳細については、Apple の右から左へ記述する言語のサポートのドキュメントを参照してください。
追加のフレームワークの変更
上記で説明した主要な変更に加えて、Apple は以下を含む iOS 9 のいくつかの既存のフレームワークに変更と改善を加えました。
- AV Foundation フレームワーク
- AVKit フレームワーク
- CloudKit フレームワーク
- Foundation フレームワーク
- Handoff フレームワーク
- HealthKit フレームワーク
- HomeKit フレームワーク
- ローカル認証フレームワーク
- MapKit フレームワーク
- PassKit フレームワーク
- Safari サービス フレームワーク
- UIKit フレームワーク
詳細については、「iOS 9 フレームワークの追加変更」のドキュメントを参照してください。
非推奨の API と関数
Apple は、iOS 9 で次の API と関数を非推奨にしました。
- アドレス帳とアドレス帳 UI - これらの API は、Contact と Contact UI フレームワークに置き換えられました。 詳細については、Contacts と Contacts UI に関するドキュメントを参照してください。
- CBCentralManager -
CBCentralManager
クラスのRetrievePeripherals
メソッドとRetrieveConnectedPeripherals
メソッドは iOS 9 で削除されました。 これらのメソッドを呼び出すと、アクセサリのペアリング時またはアプリの起動時にアプリがクラッシュします。 - FetchAllChanges -
CKFetchRecordChangesOperation
クラスのFetchAllChanges
は非推奨になり、iOS 9 では削除される予定です。 - Media Player - Media Player フレームワークは iOS 9 で非推奨になりました。 代わりに AVKit または AV Foundation API を使います。
特定の API の非推奨の完全な一覧については、Apple の iOS 9.0 API の相違点に関するドキュメントを参照してください。