iOSテクノロジーの概要 (TP40007898 0.0.0)

iOSテクノロジーの概要
目次
iOSに組み込まれたさまざまな技術について 7
はじめに 8
iOSのアーキテクチャは階層化されている 8
iOSの技術はフレームワークというパッケージとして提供される 9
Developer Libraryを自由に活用して開発できる 9
この文書の使い方 9
関連項目 10
Cocoa Touchレイヤ 11
上位レベルの機能 11
アプリケーション拡張機能 11
Handoff 12
ドキュメントピッカー 13
AirDrop 13
TextKit 14
UIKit Dynamics 14
マルチタスク 15
Auto Layout 15
ストーリーボード 16
UI状態の保存 16
Apple Push Notificationサービス 17
ローカル通知 17
Gesture Recognizer 17
標準のシステムビューコントローラ 18
Cocoa Touchフレームワーク 19
Address Book UIフレームワーク 19
EventKit UIフレームワーク 19
GameKitフレームワーク 19
iAdフレームワーク 20
MapKitフレームワーク 20
Message UIフレームワーク 21
Notification Centerフレームワーク 21
PushKitフレームワーク 21
Twitterフレームワーク 21
2014-09-17 | Copyright © 2014 Apple Inc. All Rights Reserved.
2
目次
UIKitフレームワーク 21
Mediaレイヤ 23
グラフィックステクノロジー 23
オーディオテクノロジー 25
ビデオテクノロジー 26
AirPlay 27
Mediaレイヤのフレームワーク 28
Assets Libraryフレームワーク 28
AV Foundationフレームワーク 29
AVKitフレームワーク 29
Core Audio 30
CoreAudioKitフレームワーク 31
Core Graphicsフレームワーク 31
Core Imageフレームワーク 31
Core Textフレームワーク 31
Core Videoフレームワーク 32
Game Controllerフレームワーク 32
GLKitフレームワーク 32
Image I/Oフレームワーク 33
Media Accessibilityフレームワーク 33
Media Playerフレームワーク 33
Metalフレームワーク 34
OpenALフレームワーク 34
OpenGL ESフレームワーク 35
Photosフレームワーク 35
Photos UIフレームワーク 35
Quartz Coreフレームワーク 35
SceneKitフレームワーク 36
SpriteKitフレームワーク 36
Core Servicesレイヤ 38
上位レベルの機能 38
ピアツーピアサービス 38
iCloudストレージ 38
ブロックオブジェクト 39
データ保護 39
ファイル共有のサポート 40
Grand Central Dispatch 41
In-App Purchase 41
2014-09-17 | Copyright © 2014 Apple Inc. All Rights Reserved.
3
目次
SQLite 41
XMLサポート 42
Core Servicesフレームワーク 42
Accountsフレームワーク 42
Address Bookフレームワーク 42
Ad Supportフレームワーク 43
CFNetworkフレームワーク 43
CloudKitフレームワーク 44
Core Dataフレームワーク 44
Core Foundationフレームワーク 45
Core Locationフレームワーク 45
Core Mediaフレームワーク 46
Core Motionフレームワーク 46
Core Telephonyフレームワーク 46
EventKitフレームワーク 47
Foundationフレームワーク 47
HealthKitフレームワーク 48
HomeKitフレームワーク 48
JavaScript Coreフレームワーク 49
Mobile Core Servicesフレームワーク 49
Multipeer Connectivityフレームワーク 49
NewsstandKitフレームワーク 50
PassKitフレームワーク 50
Quick Lookフレームワーク 50
Safari Servicesフレームワーク 51
Socialフレームワーク 51
StoreKitフレームワーク 51
System Configurationフレームワーク 51
WebKitフレームワーク 52
Core OSレイヤ 53
Accelerateフレームワーク 53
Core Bluetoothフレームワーク 53
External Accessoryフレームワーク 54
Generic Security Servicesフレームワーク 54
Local Authenticationフレームワーク 54
Network Extensionフレームワーク 55
Securityフレームワーク 55
System 56
2014-09-17 | Copyright © 2014 Apple Inc. All Rights Reserved.
4
目次
64ビット対応 56
iOSのフレームワーク 58
デバイスのフレームワーク 58
シミュレータのフレームワーク 67
システムライブラリ 68
書類の改訂履歴 69
2014-09-17 | Copyright © 2014 Apple Inc. All Rights Reserved.
5
図、表
iOSに組み込まれたさまざまな技術について 7
図 I-1
iOSのレイヤ 8
Mediaレイヤ 23
表 2-1
表 2-2
表 2-3
表 2-4
iOSのグラフィックステクノロジー 23
iOSのオーディオテクノロジー 25
iOSのビデオテクノロジー 26
Core Audioフレームワーク 30
iOSのフレームワーク 58
表 A-1
デバイスのフレームワーク 58
2014-09-17 | Copyright © 2014 Apple Inc. All Rights Reserved.
6
iOSに組み込まれたさまざまな技術について
iOSは、iPad、iPhone、iPod touchなどのデバイス上で稼働するオペレーティングシステムです。デバ
イスハードウェアを管理するとともに、ネイティブアプリケーションの実装に必要な各種テクノロ
ジーを提供します。また、iOSには「電話(Phone)」、「メール(Mail)」、「Safari」などの標準的なシス
テムサービスをユーザに提供するさまざまなシステムアプリケーションが付属しています。
iOSソフトウェア開発キット(SDK、Software Development Kit) には、iOSデバイスのホーム画面に現
れる、ネイティブアプリケーションの開発、インストール、実行、およびテストを行うために必要な
ツールとインターフェイスが含まれています。ネイティブアプリケーションは、iOSのシステムフレー
ムワークとObjective-C言語を使用して構築され、iOS上で直接実行されます。Webアプリケーションと
は違い、ネイティブアプリケーションはデバイス上に物理的にインストールされるため、デバイスが
機内モードであっても、ユーザは常にネイティブアプリケーションを利用できます。ネイティブアプ
リケーションはその他のシステムアプリケーションと並んで配置されます。アプリケーションとすべ
てのユーザデータは、iTunesを介してユーザのコンピュータと同期されます。
2014-09-17 | Copyright © 2014 Apple Inc. All Rights Reserved.
7
iOSに組み込まれたさまざまな技術について
はじめに
注意: HTML、CSS(Cascading Style Sheet)、JavaScriptコードを組み合わせて、ウェブアプ
リケーションを開発することも可能です。ウェブアプリケーションはSafariウェブブラウザ
上で動作し、ウェブサーバにアクセスするためにはネットワーク接続が必要です。ここで
は、ウェブアプリケーションの開発方法については説明しません。Safari上で動作するウェ
ブアプリケーションの開発方法については、『Safari Web Content Guide 』を参照してくださ
い。
はじめに
iOS SDKが提供するのは、ネイティブiOSアプリケーションの開発に必要なリソースです。このSDKに
組み込まれている技術や付属するツールについて多少でも理解しておけば、アプリケーションを設
計、実装する際に、適切な方法を選択できるでしょう。
iOSのアーキテクチャは階層化されている
最上位レベルでは、iOSはそれが稼働しているハードウェアとアプリケーションの間の仲介役を果た
します。アプリケーションがハードウェアと直接やり取りすることはめったにありません。代わりに
アプリケーションは、明確に定義された一連のシステムインターフェイスを介してハードウェアとや
り取りします。このようなインターフェイスによって、ハードウェアの能力が異なるデバイス上でも
一貫性を保って動作するアプリケーションを容易に作成できます。
iOSテクノロジーの実装は、図 I-1に示すように、1つのレイヤセットで表現できます。システムの下位
の各レイヤには、すべてのアプリケーションが依存する基本的なサービスとテクノロジーがありま
す。一方、上位レベルの各レイヤには、より高度なサービスとテクノロジーが含まれます。
図 I-1
iOSのレイヤ
2014-09-17 | Copyright © 2014 Apple Inc. All Rights Reserved.
8
iOSに組み込まれたさまざまな技術について
この文書の使い方
コードを書くときには、下位レベルのフレームワークよりも、できる限り上位レベルのフレームワー
クを選ぶようにしてください。上位レベルのフレームワークは、下位レベルの構成体のオブジェクト
指向の抽象化を提供するために用意されています。一般にこれらの抽象化により、記述するコード量
が減り、ソケットやスレッドなどの複雑になりがちな機能がカプセル化されるため、コードの記述が
非常に楽になります。下位レベルのフレームワークやテクノロジーも、上位レベルのフレームワーク
が公開していないものであれば、使うことがあります。
関連する章: “Cocoa Touchレイヤ” (11 ページ)、“Mediaレイヤ” (23 ページ)、“Core
Servicesレイヤ” (38 ページ)、“Core OSレイヤ” (53 ページ)
iOSの技術はフレームワークというパッケージとして提供される
Appleでは、フレームワークと呼ばれる特殊なパッケージとしてほとんどのシステムインターフェイ
スを提供しています。フレームワークは、共有ダイナミックライブラリとそのライブラリをサポート
するために必要なリソース(ヘッダファイル、画像、ヘルパアプリケーションなど)を含む1つのディ
レクトリです。フレームワークはXcode上でアプリケーションプロジェクトに組み込んで使います。
関連する節: “iOSのフレームワーク” (58 ページ)
Developer Libraryを自由に活用して開発できる
iOS Developer Libraryはアプリケーション開発における重要なリソースです。また、APIリファレンス、
プログラミングガイド、リリースノート、技術ノート、サンプルコードその他、アプリケーション開
発に役立つさまざまなヒントやガイダンスが揃っています。
iOS Developer Libraryには、Apple Developer Webサイトから、またはXcodeからアクセスできます。
Xcode上で「Help」>「Documentation and API Reference」を実行すると、Xcodeの資料を扱うウイン
ドウが開きます。ここにはiOSアプリケーションの開発に関する情報が集約されています。資料を閲
覧、検索するほか、「しおり」をつけておくことも可能です。
この文書の使い方
『iOSテクノロジーの概要 』は、iOSプラットフォームの初心者向けの入門書です。開発プロセスに効
果をもたらすテクノロジーとツールの概要を説明し、関連ドキュメントなどの情報源へのリンクを紹
介します。本書は、次の目的のために参照してください。
●
iOSプラットフォームを理解する
●
iOSソフトウェアの各テクノロジーについて、使用する理由やどのような場合に使用するかを学ぶ
2014-09-17 | Copyright © 2014 Apple Inc. All Rights Reserved.
9
iOSに組み込まれたさまざまな技術について
関連項目
●
iOSプラットフォーム用の開発のチャンスについて学ぶ
●
ほかのプラットフォームからiOSへの移植方法についてのヒントおよびガイドラインを学ぶ
●
関心を持ったテクノロジーに関連する主要なドキュメントを見つける
このドキュメントには、ユーザレベルの機能についての情報や、ソフトウェア開発プロセスに関係の
ない機能についての情報は含まれていません。また、個々のiOSデバイスのハードウェア能力に関す
る記述もありません。経験の浅いデベロッパの場合は、iOSに慣れるためにこのドキュメントが役立
ちます。熟練デベロッパの場合は、特定のテクノロジーや開発手法を探究するためのロードマップと
してこのドキュメントを使用できます。
関連項目
iOSの開発が初めての方は、このドキュメントが扱っているのはiOSの概要だけである点に注意してく
ださい。iOSアプリケーションを開発する方法を詳しく知るには、次のドキュメントをお読みくださ
い。
●
●
●
『Start Developing iOS Apps Today 』は、システムのセットアップ方法から、完成したアプリケー
ションをApp Storeに登録する方法まで、順を追って開発の手順を説明しています。iOSアプリケー
ションの開発が初めてであれば、その入門として最適でしょう。
『iOSHumanInterfaceGuidelines 』では、iOSアプリケーションのユーザインターフェイスの設計方
法についてのガイダンスと重要な情報を提供しています。
『App Distribution Guide 』では、iOSの開発プロセスをツールの観点から説明しています。このド
キュメントでは、ソフトウェアをビルド、実行、およびテストするための、デバイスの構成やプ
ロビジョンとXcode(およびその他のツール)の使用についても言及しています。
実デバイス上で開発するには、Appleの有料のiOSデベロッパプログラムにサインアップし、デバイス
を開発用に構成する必要があります。サインアップ後、XcodeやiOS SDKをiOS Dev Centerで入手してく
ださい。
2014-09-17 | Copyright © 2014 Apple Inc. All Rights Reserved.
10
Cocoa Touchレイヤ
Cocoa Touchには、iOSアプリケーションを作成するための主要なフレームワークが含まれています。
フレームワークには、アプリケーションの外観を規定する働きがあります。また、基本的なアプリ
ケーションインフラストラクチャを定義し、マルチタスク、タッチベースの入力、プッシュ通知、上
位レベルの多くのシステムサービスなど、主要なテクノロジーをサポートしています。アプリケー
ションをデザインするときは、最初にこのレイヤのテクノロジーを調査して、要件を満たしているか
を検討する必要があります。
上位レベルの機能
以下のセクションでは、Cocoa Touchレイヤで利用できる主要なテクノロジーのいくつかについて解
説します。
アプリケーション拡張機能
iOS 8ではアプリケーション拡張機能により、システムの選択領域を拡張できます。ユーザがデバイス
を使っている状況に合わせて、独自の機能を利用できるようにするコードのことです。たとえば、情
報投稿サイトに投稿する作業を支援するアプリケーション拡張機能が考えられます。ユーザがこれを
インストールして有効にすると、何らかのアプリケーションを実行中に「Share」ボタンをタップす
ることにより、この拡張機能を呼び出せるようになります。この拡張機能には、投稿する文章を受け
付け、内容を検証し、実際に投稿するためのコードを実装することになるでしょう。拡張機能は「共
有」メニューに現れ、ユーザの選択に応じて起動されます。
作成したアプリケーション拡張機能は、必要な設定を施した上で、Xcode上で適当なアプリケーショ
ンに組み込みます。ユーザはこのアプリケーションをインストールした後、「設定(Settings)」アプリ
ケーションでこれを有効にします。すると、他のアプリケーションを実行中であっても、「Share」
メニューなど適切なシステムUIを介して、この拡張機能を呼び出せるようになります。
iOSではアプリケーション拡張機能を、拡張機能ポイントと呼ばれる次の箇所から起動できます。
●
Share。情報共有ウェブサイトなどに情報を投稿します。
●
Action。作業状況に応じた簡単なタスクを実行します。
●
ウィジェット。通知センターの「今日」ビューで、表示内容を即座に更新し、あるいは簡単なタ
スクを実行します。
2014-09-17 | Copyright © 2014 Apple Inc. All Rights Reserved.
11
Cocoa Touchレイヤ
上位レベルの機能
●
●
●
写真の編集。「写真(Photos)」アプリケーションで写真や動画を編集します。
ドキュメントプロバイダ。ほかのアプリケーションからもアクセス可能なドキュメントストレー
ジを提供します。ドキュメントピッカーのビューコントローラを使用するアプリケーションで
は、ドキュメントプロバイダで管理されているファイルを開く、またはドキュメントプロバイダ
にファイルを移動することが可能です。
カスタムキーボード。システムキーボードの代替として、デバイス上のどのアプリケーションで
も使える、カスタムキーボードを提供します。
拡張機能ポイントごとに、目的に応じた適切なAPIが定義されています。アプリケーション拡張機能
テンプレートを使って開発を始めると、デフォルトのターゲットが得られます。ここには、選択した
拡張機能ポイントに応じた、メソッドのスタブやプロパティリスト設定があります。
拡張機能の開発について詳しくは、『App Extension Programming Guide 』を参照してください。
Handoff
HandoffはOS XとiOSの両方に備わっている機能で、従来にも増して、デバイスの違いを意識せずに済
むようにする技術です。あるデバイス上で作業を始めた後、別のデバイスに切り替えても、そのまま
作業を続行できます。たとえば、Mac上のSafariで長い記事を閲覧している、という状況を考えてみま
しょう。このとき、iOSデバイスを手に取り、同じApple IDでiCloudにサインインすれば、iOS上のSafari
には自動的に同じウェブページが開き、同じ箇所までスクロールした状態になるのです。Handoffに
は、このようなデバイスの切り替えを、できる限りシームレスにおこなえるようにする働きがありま
す。
Handoffの機能を活かすためには、FoundationのあるAPIを呼び出す必要があります。アプリケーショ
ン上で進行中の各アクティビティは、「ユーザアクティビティ」オブジェクトで表されますが、ここ
には別のデバイスで続行するために必要なデータが収容されています。ユーザが別のデバイスでアク
ティビティを続行しようとすると、このオブジェクトが当該デバイスに送信されます。各「ユーザア
クティビティ」オブジェクトには対応するデリゲートオブジェクトがあって、別のデバイスに送信さ
れる直前など適切な時点で起動され、状態を更新するようになっています。
継続するために必要なデータが、「ユーザアクティビティ」オブジェクトの仕組みでは簡単に送信で
きない場合、切り替え先アプリケーションが、切り替え元に向けてストリームを開設することがあり
ます。ドキュメントベースのアプリケーションは、iCloudベースのドキュメントが捜査対象であれば、
はじめからアクティビティを継続する機能が備わっています。
Handoffの機能を組み込む手順について詳しくは、『Handoff Programming Guide 』を参照してくださ
い。
2014-09-17 | Copyright © 2014 Apple Inc. All Rights Reserved.
12
Cocoa Touchレイヤ
上位レベルの機能
ドキュメントピッカー
ドキュメントピッカーのビューコントローラ(UIDocumentPickerViewController)を組み込むと、
アプリケーションのサンドボックス外にあるファイルにアクセスできるようになります。簡単な仕組
みで、アプリケーション間でドキュメントを共有できるようになっています。複数のアプリケーショ
ンで同じドキュメントを編集するという、より複雑なワークフローにも対応できます。
ドキュメントピッカーを使えば、さまざまなドキュメントプロバイダが管理するファイルにアクセス
できます。たとえば「iCloud」ドキュメントプロバイダを使うと、他のアプリケーションのiCloudコ
ンテナに保存されているドキュメントにアクセスできます。Apple以外の開発者も、「Storage Provider」
拡張機能を用いる独自のドキュメントプロバイダを開発しています。
ドキュメントピッカーの使い方について詳しくは、『iOS Document Picker Programming Guide 』を参照
してください。
AirDrop
AirDropを使えば、写真、文書、URLその他、各種のデータを、付近のデバイスと共有できます。AirDrop
を使ってファイルを他のiOSデバイスに送信する機能が、UIActivityViewControllerクラスに組み
込まれます。このクラスで、指定したコンテンツを、さまざまな方法で共有できます。まだ使ってい
ないのであれば、アプリケーションを開発する際、そのインターフェイスに加えることを検討してく
ださい。
AirDropで送信されてきたファイルを受け取るためには、アプリケーションに次の処理を組み込む必要
があります。
●
●
受け取り可能な文書の型をXcodeで宣言すること(XcodeはアプリケーションのInfo.plistファ
イルに該当するキーを追加します)。システムはこの情報に基づいて、アプリケーションがファ
イルを開けるかどうか判断します。
アプリケーションデリゲートにapplication:openURL:sourceApplication:annotation:メソッ
ドを実装すること(新たにファイルを受信すると、システムがこのメソッドを呼び出します)。
送られてきたファイルは、アプリケーションのホームディレクトリ以下、Documents/Inboxに保存す
るようになっています。ファイルを書き替える場合は、あらかじめディレクトリ外に移動する必要が
あります(アプリケーションが読み取り/削除できるのは、このディレクトリ以下のファイルのみ)。
このディレクトリ以下にあるファイルは暗号化が施されているので、デバイスがロック状態であれば
アクセスできないよう対処しなければなりません。
アクティビティビューコントローラでデータを共有する方法について詳しくは、『UIActivityViewController
Class Reference 』を参照してください。
2014-09-17 | Copyright © 2014 Apple Inc. All Rights Reserved.
13
Cocoa Touchレイヤ
上位レベルの機能
TextKit
TextKitは、テキスト処理や高品位印刷に関する豊富な機能を備えた、高レベルのクラス群です。段
落、段組、ページを単位として、さまざまな書式を施した文章を配置できます。画像その他の領域を
回り込むように配置すること、複数のフォントを組み合わせることも可能です。テキストのレンダリ
ング処理を実装する手段としてCore Textを考えているのであれば、代わりにTextKitを使うこともぜひ
検討してください。TextKitはUIKitのテキストベースのあらゆるコントロール部品に統合されているた
め、アプリケーションは、より簡単にテキストを生成、編集、表示、保存できるようになります。iOS
で従来使われていた方法に比べ、コード量も削減できます。
TextKitを導入すれば、次のように、UIKitに新しいクラスが加わり、既存のクラスも拡張されます。
●
NSAttributedStringクラス:いくつか属性を追加して拡張。
●
NSLayoutManagerクラス:グリフの生成、テキストの配置。
●
NSTextContainerクラス:テキストを配置する領域の定義。
●
NSTextStorageクラス:テキストベースのコンテンツを管理する基盤インターフェイス。
TextKitについて詳しくは、『Text, Web, and Editing Programming Guide for iOS 』を参照してください。
UIKit Dynamics
アプリケーションは、UIViewその他、UIDynamicItemプロトコルに準拠するオブジェクトに対して、
力学的な(物理法則に適う)動作を指定できるようになりました(このようなオブジェクトを力学ア
イテム と言います)。力学的な動作を取り入れることにより、現実世界に見られるような運動や特性
をユーザインターフェイスに反映させ、使い勝手を改善することができます。UIKit Dynamicsには次の
ような動作が組み込まれています。
●
UIAttachmentBehaviorオブジェクトは、2つの力学アイテム間、あるいは力学アイテムと点を
結ぶ「結合」を表します。あるアイテム(や点)が移動すれば、もう一方のアイテムも移動しま
す。しかもこの結合が、完全に固定されているのではありません。減衰や振動を表すプロパティ
で、運動(時間軸に沿った動き)を指定できます。
●
UICollisionBehaviorオブジェクトを使えば、動的アイテムどうし、あるいは動的アイテムを境
界(壁)に、衝突させることができます。もちろんアイテムは、物理法則に適う動きを示しま
す。
●
UIGravityBehaviorオブジェクトは、動的アイテムに作用する重力ベクトルを表します。動的ア
イテムはこの方向に落下し、別のアイテムや境界に衝突します。
●
UIPushBehaviorオブジェクトは、動的アイテムに対する連続力/瞬間力ベクトルを表します。
●
UISnapBehaviorオブジェクトは動的アイテムの吸着点を指定します。吸着する際の効果も設定
できます。たとえば、ばねが間にはさまっているような吸着を実現できるのです。
2014-09-17 | Copyright © 2014 Apple Inc. All Rights Reserved.
14
Cocoa Touchレイヤ
上位レベルの機能
力学アイテムは、アニメータオブジェクト(UIDynamicAnimatorのインスタンス)に追加すると、
力学的な動作を示すようになります。アニメータには力学的な動作の「場」を与える働きがあるので
す。同じアイテムに複数の動作を適用することもできますが、アニメーション化には同じアニメータ
オブジェクトを使わなければなりません。
適用可能な振る舞いについては、『UIKit Framework Reference 』を参照してください。
マルチタスク
iOSデバイスを使う上で、電池の寿命は大きな関心事です。iOSのマルチタスクモデルは、電池をでき
るだけ節約しつつ、重要な作業に必要な時間を、充分にアプリケーションに割り当てるよう設計され
ています。ユーザがホーム(Home)ボタンを押すと、フォアグラウンド状態であったアプリケーショ
ンが、バックグラウンド実行コンテキストに移行します。することがなくなったアプリケーションは
一時停止し、「凍結」状態になります。コードはメモリ上に残っていますが、実行されることはあり
ません。しかし、ある種の処理が必要なアプリケーションは、バックグラウンド実行時間をシステム
にリクエストできます。以下に例を挙げます。
●
●
●
重要なタスクを完了させる必要がある場合は、その実行時間を無制限に設定するようリクエスト
できる。
ある種のサービス(音声の再生など)を提供するアプリケーションは、そのサービスに必要な時
間をリクエストできる。
アプリケーションの実行状況に関する通知を、指定した時間に表示させるためのローカル通知を
利用する。
●
定期的にネットワーク経由でコンテンツをダウンロードする。
●
プッシュ通知に応じてコンテンツをダウンロードする。
iOSのマルチタスクモデルに対応する方法については、『iOSAppProgrammingGuide 』を参照してくだ
さい。
Auto Layout
Auto Layoutを導入すれば、最小限のコードで、動的なインターフェイスを構築できます。Auto Layout
を使う場合、ユーザインターフェイス上の要素をどのようにレイアウトするか、規則を定義すること
になります。この規則は、関係を管理するクラスを拡大したもので、従来の「springs and struts」モ
デルよりも直感的に使えます。たとえば、ボタンは常に親ビューの左辺から20ポイント離さなければ
ならない、という規則を指定できます。
Auto Layoutで使うエンティティは、「制約 」と呼ばれるObjective-Cのオブジェクトです。制約には次
のような長所があります。
●
ローカライズは文字列を差し替えるだけで済み、レイアウトを手直しする必要はありません。
2014-09-17 | Copyright © 2014 Apple Inc. All Rights Reserved.
15
Cocoa Touchレイヤ
上位レベルの機能
●
左右を反転するだけで、ヘブライ語、アラビア語など、右から左に書く言語にも対応できます。
●
ビュー内のオブジェクトとコントローラレイヤとで、役割を適切に分担できます。
ビューオブジェクトは通常、標準のサイズ、スーパービュー内における位置、兄弟ビューとの相
対的な位置関係を管理します。ビューコントローラは、何か標準外の動作が必要な場合、この値
を修正できます。
Auto Layoutの使い方について詳しくは、『Cocoa Auto Layout Guide 』を参照してください。
ストーリーボード
アプリケーションのユーザインターフェイスを設計する手段として、ストーリーボードを推奨しま
す。ユーザインターフェイス全体を1箇所で設計できるので、ビューやビューコントローラがすべて
連携して動作する状況を確認できます。ストーリーボードで重要なのは、あるビューコントローラか
ら別のビューコントローラへの滑らかな遷移(セグエ)を定義できることです。この遷移を見れば、
ユーザインターフェイスの中身だけでなく、流れも把握できます。この遷移をXcodeで視覚的に定義
するほか、遷移を起こすコードを記述することも可能です。
ひとつのストーリーボードファイルに、アプリケーションのビューコントローラやビューをすべて格
納することも、あるいは複数のビューストーリーボードを使い、部分ごとに作成したインターフェイ
スを組み合わせることも可能です。Xcodeは構築時に、ストーリーボードファイルの中身を分割しま
す。必要になった時点で個別にロードし、性能を改善できるようにするのが目的です。アプリケー
ションがこの分割について意識する必要はありません。UIKitフレームワークは、コードからストー
リーボードの内容にアクセスするための、コンビニエンスクラスを提供しています。
ストーリーボードを使ってインターフェイスを設計する手順については、『XcodeUserGuide 』を参照
してください。コードからストーリーボードにアクセスする方法については、『UIStoryboard Class
Reference 』を参照してください。
UI状態の保存
状態の保存機能を導入すれば、アプリケーションが常時動作していなくても、常に動作しているよう
に見せかけることができます。その背景として、メモリが枯渇すると、システムはバックグラウンド
状態のアプリケーションを黙って停止してしまう、ということがあります。そこで、アプリケーショ
ンがフォアグラウンドからバックグラウンドに移行する際、ビューやビューコントローラの状態を保
存しておきます。次の起動サイクルで、この情報を使ってビューやビューコントローラの状態を復元
すれば、アプリケーションが停止せずそのまま動作し続けていたように見せることができるのです。
状態保存の機能をアプリケーションに組み込む手順については、『iOS App Programming Guide 』を参
照してください。
2014-09-17 | Copyright © 2014 Apple Inc. All Rights Reserved.
16
Cocoa Touchレイヤ
上位レベルの機能
Apple Push Notificationサービス
Apple Push Notificationサービスは、アプリケーションが実際には実行中でないときでも、新着情報が
あることをユーザに通知する手段を提供します。このサービスを使用すると、ユーザデバイス上でい
つでも、文字による通知のプッシュ、アプリケーションアイコンへのバッジの追加、音声による警告
のトリガを行うことができます。これらのメッセージは、ユーザに、アプリケーションを開いて関連
情報を受け取る必要があることを知らせます。iOS 7では、ユーザが認識できるような変化なしに通知
をプッシュすることにより、アプリケーションに対して、新規コンテンツがダウンロードできるよう
になった旨を通知することも可能です。
設計の観点から見ると、iOSアプリケーションのプッシュ通知を機能させるには2つの部分が必要で
す。まず、アプリケーションは通知の配信をリクエストし、通知が配信されたら通知データを処理す
る必要があります。2つ目に、まず初めの段階に通知を生成するために、サーバ側のプロセスを提供
する必要があります。このプロセスは、独自のローカルサーバ上に置き、Apple Push Notificationサー
ビスと一緒に機能させて通知をトリガします。
プッシュ通知が使えるようアプリケーションを設定する方法については、『Local and Push Notification
Programming Guide 』を参照してください。
ローカル通知
ローカル通知は、外部サーバに依存せずにローカルで通知を生成する手段をアプリケーションに提供
することによって、既存のプッシュ通知メカニズムを補完します。バックグラウンドで実行中のアプ
リケーションは、重要なイベントが発生すると、ユーザの注意を引きつける手段としてローカル通知
を使用できます。たとえば、バックグラウンドで実行中の道案内アプリケーションであれば、道を曲
がるタイミングをユーザに知らせるためにローカル通知を使用できます。アプリケーションは、将来
の日時を指定してローカル通知の配信をスケジューリングしたり、スケジューリングされた通知をア
プリケーションが実行されていないときでも配信させることができます。
ローカル通知の利点は、通知がアプリケーションに依存しない点です。通知がスケジューリングされ
ると、システムが通知の配信を管理します。アプリケーションは、通知が配信されるときに実行中で
ある必要もありません。
ローカル通知の使用方法については、『Local and Push Notification Programming Guide 』を参照してく
ださい。
Gesture Recognizer
ジェスチャリコグナイザは、ビューをスワイプする、ピンチするなど、一般的なタイプのジェスチャ
を検出するために使用します。システムがジェスチャを検出するのと同じヒューリスティックスを
使っているので、一貫した振る舞いになります。ジェスチャリコグナイザをビューにアタッチした
2014-09-17 | Copyright © 2014 Apple Inc. All Rights Reserved.
17
Cocoa Touchレイヤ
上位レベルの機能
後、ジェスチャが発生した時に実行するアクションメソッドを登録してください。ジェスチャリコグ
ナイザは、未処理のタッチイベントを追跡し、意図するジェスチャを構成するものかどうかを判断す
る、という難しい作業を行います。
ジェスチャリコグナイザはいずれも、基本的な動作を定義する、UIGestureRecognizerクラスを基
盤としています。UIKitには、タップ、ピンチ、パン、スワイプ、回転を検出する、ジェスチャリコグ
ナイザの標準的なサブクラスがあります。多くのジェスチャリコグナイザは、アプリケーションの要
件に合わせて、動作を調整することも可能です。たとえば「タップ」を検出するジェスチャリコグナ
イザに対し、所定の回数タップされてからアクションメソッドを呼び出すよう指定できるのです。
使用可能なジェスチャリコグナイザの詳細については、『Event Handling Guide for iOS 』を参照してく
ださい。
標準のシステムビューコントローラ
多くのシステムフレームワークには、標準のシステムインターフェイスを表示するためのビューコン
トローラが含まれています。できるだけ、独自に作るのではなく、付属のビューコントローラを使う
ようにしてください。一貫したユーザ体験を提供するために、これらのビューコントローラをアプリ
ケーションで使用することが推奨されます。以下のいずれかのタスクを実行する必要のあるときは、
対応するフレームワークに含まれるビューコントローラを使用してください。
●
●
●
●
●
●
連絡先情報の表示または編集。Address Book UIフレームワークのビューコントローラを使用しま
す。
カレンダーイベントの作成または編集。Event Kit UIフレームワークのビューコントローラを使用
します。
電子メールまたはSMSメッセージの作成。Message UIフレームワークのビューコントローラを使
用します。
ファイルの内容を開く、またはプレビューする。UIKitフレームワークの
UIDocumentInteractionControllerクラスを使用します。
写真を撮る、またはユーザのフォトライブラリから写真を選ぶ。UIKitフレームワークの
UIImagePickerControllerクラスを使用します。
ビデオクリップの撮影。UIKitフレームワークのUIImagePickerControllerクラスを使用します。
ビューコントローラを表示し、消去する方法の詳細については、『View Controller Programming Guide
for iOS 』を参照してください。特定のView Controllerによって表示されるインターフェイスの詳細につ
いては、『View Controller Catalog for iOS 』を参照してください。
2014-09-17 | Copyright © 2014 Apple Inc. All Rights Reserved.
18
Cocoa Touchレイヤ
Cocoa Touchフレームワーク
Cocoa Touchフレームワーク
以下のセクションでは、Cocoa Touchレイヤのフレームワーク、およびこれらフレームワークが提供
するサービスについて説明します。
Address Book UIフレームワーク
Address Book UIフレームワーク(AddressBookUI.framework)は、新規の連絡先を作成したり既存
の連絡先を編集または選択したりするための、標準的なシステムインターフェイスの表示に使われる
Objective-Cのプログラミングインターフェイスです。このフレームワークを利用するとアプリケー
ションに連絡先情報を表示するために必要な作業を容易に行えます。また、ほかのアプリケーション
と同じインターフェイスを使用できるため、プラットフォーム全体の一貫性を保証できます。
Address Book UIフレームワークのクラスとその使い方については、『Address Book Programming Guide
for iOS 』および『Address Book UI Framework Reference for iOS 』を参照してください。
EventKit UIフレームワーク
EventKit UIフレームワーク(EventKitUI.framework)は、カレンダー関連イベントの閲覧および編
集のための標準システムインターフェイスを表示するビューコントローラを提供します。このフレー
ムワークは、EventKitフレームワーク(“EventKitフレームワーク” (47 ページ)参照)のイベント関
連データに基づいて構築されています。
このフレームワークのクラスとメソッドについては、『Event Kit UI Framework Reference 』を参照して
ください。
GameKitフレームワーク
GameKitフレームワーク(GameKit.framework)にはGame Centerを使うための機能が実装されてお
り、ユーザはゲームに関する情報をオンラインで共有できるようになります。Game Centerは、以下
の機能をサポートします。
●
●
●
ニックネーム - ユーザがオンライン上で個人を識別するものを作成できます。ユーザはGame
Centerにサインインし、ニックネームを通じて他のプレーヤーと匿名でやり取りします。プレー
ヤーはステータスメッセージを設定したり、特定の人を自分の友だちとして登録したりできま
す。
Leaderboard - アプリケーションがユーザのスコアをGame Centerに送信し、後でスコアを取得で
きます。この機能は、アプリケーションのすべてのユーザの中でのベストスコアを表示するのに
使用できます。
マッチメーク - Game Centerにログインしているプレーヤーと接続することにより、アプリケー
ションでマルチプレーヤーゲームを実現できます。各プレーヤーは、マルチプレーヤーゲームに
参加するために物理的にそばにいる必要はありません。
2014-09-17 | Copyright © 2014 Apple Inc. All Rights Reserved.
19
Cocoa Touchレイヤ
Cocoa Touchフレームワーク
●
●
●
アチーブメント(Achievement、成績) - ゲームにおけるプレーヤーの達成状況を記録すること
ができます。
チャレンジ - プレーヤーは友だちに対し、アチーブメントやスコアを示して競争を挑むことが
できます(iOS 6以降)。
手番制のゲーム - 状態がiCloudに格納されるので、中断してもまた続きを始めることができま
す。
GameKitフレームワークの使用方法の詳細については、『Game Center Programming Guide 』および
『Game Kit Framework Reference 』を参照してください。
iAdフレームワーク
iAdフレームワーク(iAd.framework)を使用すると、アプリケーションからバナー広告を配信でき
ます。広告は、ユーザインターフェイスに統合し、必要なときに表示する標準ビューに組み込まれま
す。標準ビュー自体はAppleのiAdサービスとともに機能し、リッチメディア広告のロードと表示、お
よび広告内でのタップ操作へのレスポンスに関連するすべての作業を自動的に処理します。
アプリケーションでiAdを使う方法については、『iAd Programming Guide 』および『iAd Framework
Reference 』を参照してください。
MapKitフレームワーク
MapKitフレームワーク(MapKit.framework)は、アプリケーションのユーザインターフェイスに組
み込んで使える、スクロール可能なマップを提供します。フレームワークのインターフェイスを使っ
て、単に表示するだけでなく、中身や外観をカスタマイズできます。注釈の仕組みを使って着目地点
(PoI、Point of Interest)に旗を表示する、あるいは独自に用意した情報を重ねて表示し、変化を与え
ることが可能です。重ねて表示する仕組みの利用法として、バスの経路を描画する、付近の店やレス
トランを目立たせる、などが考えられるでしょう。
MapKitフレームワークは、地図を表示するだけでなく、「マップ(Maps)」アプリケーションと統合し、
あるいはAppleのマップサーバから経路情報を取得して使うことができるようになっています。「マッ
プ(Maps)」アプリケーションは、経路情報の取得機能を他のアプリケーションに委ねる、という使い
方が可能です。たとえば高速道路の経路情報に特化し、「マップ(Maps)」からの問い合わせに応じて
情報を提供するアプリケーションが成立するわけです。あるいは、Appleサーバから徒歩用と自動車
用の経路情報を取得し、独自に用意した経路情報と組み合わせて提供する、といったことも考えられ
るでしょう。
MapKitフレームワークのクラスの使用法については、『Location and Maps Programming Guide 』および
『Map Kit Framework Reference 』を参照してください。
2014-09-17 | Copyright © 2014 Apple Inc. All Rights Reserved.
20
Cocoa Touchレイヤ
Cocoa Touchフレームワーク
Message UIフレームワーク
Message UIフレームワーク(MessageUI.framework)を導入すれば、電子メールやSMSのメッセージ
作成機能をアプリケーションに組み込めます。メッセージ作成の機能は、アプリケーションで表示す
るビューコントローラインターフェイスで構成されます。このビューコントローラのフィールドをあ
らかじめ埋めて、メッセージに含める宛先、件名、本文の内容、および任意の添付を設定することが
できます。ビューコントローラを表示した後、ユーザは送信前にメッセージを編集することもできま
す。
Message UIフレームワークのクラスの詳細については、『Message UI Framework Reference 』を参照し
てください。このフレームワークに付属する各クラスの使い方については、『System Messaging
Programming Topics for iOS 』を参照してください。
Notification Centerフレームワーク
Notification Centerフレームワーク(NotificationCenter.framework)は、通知センターに情報を表
示する、ウィジェットの生成機能を提供します。通知センターウィジェットを生成する手順について
詳しくは、『App Extension Programming Guide 』および『Notification Center Framework Reference 』を参
照してください。
PushKitフレームワーク
PushKitフレームワーク(PushKit.framework)は、VoIPアプリケーション向けに登録機能を提供します。
VoIPアプリケーションを登録する従来のAPIに代わるものです。永続的に接続を開いておくと電池が消
耗するので、このフレームワークでは、着呼があったときにプッシュ通知を受け取る形にしました。
このフレームワークのインターフェイスについては、ヘッダファイルを参照してください。
Twitterフレームワーク
Twitterフレームワーク(Twitter.framework)はSocialフレームワークに変わりました。ツイートを
生成するためのUIが加わり、TwitterサービスにアクセスするURLを生成することもできるようになっ
ています。詳しくは“Socialフレームワーク” (51 ページ)を参照してください。
UIKitフレームワーク
UIKitフレームワーク(UIKit.framework)は、iOSにグラフィカルなイベント駆動型アプリケーショ
ンを実装するための主要なインフラストラクチャを提供します。
●
基本的なアプリケーション管理および基盤機能(メインループの処理など)
●
ユーザインターフェイスの管理(ストーリーボードやnibファイルの処理を含む)
●
ユーザインターフェイスの内容をカプセル化する、ビューコントローラモデル
2014-09-17 | Copyright © 2014 Apple Inc. All Rights Reserved.
21
Cocoa Touchレイヤ
Cocoa Touchフレームワーク
●
標準的なシステムビューとコントロールを表すオブジェクト
●
タッチベースイベントおよびモーションベースイベントの処理
●
iCloud統合その他の文書モデル(『Document-Based App Programming Guide for iOS 』を参照)
●
外付けディスプレイを含む、グラフィックス処理およびウインドウ管理(『View Programming
Guide for iOS 』を参照)。
●
マルチタスク対応(“マルチタスク” (15 ページ)を参照)
●
印刷機能(『Drawing and Printing Guide for iOS 』を参照)
●
標準的なUIKitコントロールの外観のカスタマイズ
●
テキストおよびWebコンテンツのサポート
●
カット、コピー、ペースト
●
ユーザインターフェイスコンテンツのアニメーション化
●
URLスキームおよびフレームワークインターフェイスによる、システム上のほかのアプリケーショ
ンとの統合
●
体の不自由なユーザのためのアクセシビリティのサポート
●
Apple Push Notificationサービス(“Apple Push Notificationサービス” (17 ページ)を参照)
●
Local Notificationのスケジューリングと配信(“ローカル通知” (17 ページ)参照)
●
PDF作成
●
システムキーボードのように動作するカスタム入力ビューの使用
●
システムキーボードとやり取りを行うカスタムテキストビューの作成
●
電子メール、Twitter、Facebookその他のサービスを介したコンテンツ共有のサポート
アプリケーション開発の基本的なコードを提供するほかに、UIKitは以下のようなデバイス固有機能に
も対応します。
●
内蔵カメラ(ある場合)
●
ユーザのフォトライブラリ
●
デバイス名およびモデル情報
●
バッテリー状態情報
●
近接センサー情報
●
接続されたヘッドセットからのリモートコントロール情報
UIKitフレームワークのクラスの詳細については、『UIKit Framework Reference 』を参照してください。
2014-09-17 | Copyright © 2014 Apple Inc. All Rights Reserved.
22
Mediaレイヤ
Mediaレイヤには、マルチメディア体験を演出することを目的とする、グラフィックス、オーディオ、
およびビデオの各テクノロジーが含まれています。このレイヤのテクノロジーは見た目もサウンドも
すばらしいアプリケーションを簡単に開発できるように設計されています。
グラフィックステクノロジー
高品質なグラフィックスは、すべてのアプリケーションにとって重要な要素です。iOSは、独自のアー
トやグラフィックスを画面に表示するための、さまざまな技術を提供しています。iOSのグラフィッ
クステクノロジーは、広範なサポートと、UIKitのビューアーキテクチャとのシームレスな連携によ
り、コンテンツを容易に提供できるようにしています。標準ビューを使って高速かつ高品質のイン
ターフェイスを提供するほか、独自のビューを作り、表 2-1に示すさまざまな技術を組み込むことも
可能です。
表 2-1
iOSのグラフィックステクノロジー
テクノロ
ジー
Description
UIKitグラ
フィックス
UIKitには、画像やベジエ曲線の描画、ビューの内容のアニメーション化を行
う、高レベルの支援機能が組み込まれています。描画機能を実装したクラスに
加え、画像やテキストベースのコンテンツを描画(レンダリング)する、高速
で効率のよい手段が揃っています。ビューはアニメーション化が可能(明示的
にコードを記述する方法、UIKit Dynamicsを介する方法の2通り)で、ユーザに
フィードバックを返し、入力を促すために利用できます。
UIKitフレームワークのクラスについて詳しくは、『UIKit Framework Reference 』
を参照してください。
Core
Graphicsフ
レームワー
ク
Core Graphics(別名Quartz )は、iOSアプリケーション用のネイティブな描画エ
ンジンで、独自の2次元ベクトルレンダリング、画像ベースのレンダリングが
可能です。OpenGL ESほど高速ではありませんが、2次元の図形や画像を動的に
レンダリングしたい場合に適しています。
詳しくは“Core Graphicsフレームワーク” (31 ページ)を参照してください。
2014-09-17 | Copyright © 2014 Apple Inc. All Rights Reserved.
23
Mediaレイヤ
グラフィックステクノロジー
テクノロ
ジー
Description
Core
Animation
Core Animation(Quartz Coreフレームワークの一部)は、アプリケーションに
アニメーションの要素を組み込むための基盤技術です。UIKitのビューはCore
Animationを使って、ビューレベルのアニメーションを実現しています。アニ
メーションの動作をよりきめ細かく制御したい場合に、Core Animationを直接
使うとよいでしょう。
詳しくは“Quartz Coreフレームワーク” (35 ページ)を参照してください。
Core Image
Core Imageは、ビデオ画像や静止画像を操作するための高度なサポートを、非
破壊的な方法で提供します。
詳しくは“Core Imageフレームワーク” (31 ページ)を参照してください。
OpenGL ES
およびGLKit
OpenGL ESは、ハードウェアによって加速化されたインターフェイスを使用し
て、高度な2Dおよび3Dのレンダリングを支援します。従来はゲームなど没入型
のアプリケーションを実装するために使われていました。レンダリング処理を
細かく制御するほか、高いフレームレートを活かして、滑らかな動きを実現す
ることが可能です。詳しくは“OpenGL ESフレームワーク” (35 ページ)を参照
してください。
GLKitはObjective-Cのクラス群で、OpenGL ESの機能を、オブジェクト指向のイ
ンターフェイスで利用できます。詳しくは“GLKitフレームワーク” (32 ページ)
を参照してください。
Metal
Metalを利用すれば、ほとんどオーバーヘッドなくA7 GPUにアクセスできるの
で、洗練されたグラフィックスの描画や演算タスクを高速に実行可能です。従
来のグラフィックAPIに見られる、状態の検証処理など性能上のさまざまなボト
ルネックが解消されています。詳しくは“Metalフレームワーク” (34 ページ)
を参照してください。
TextKitと
Core Text
TextKitは、高品位印刷やテキスト管理に用いるUIKitのクラス群です。高度なテ
キスト操作を伴うアプリケーションの場合、TextKitを導入すれば、必要な機能
がビューに統合されます。詳しくは“TextKit” (14 ページ)を参照してくださ
い。
Core Textは、高品位印刷やレイアウトを処理する、Cで記述された低レベルの
フレームワークです。詳しくは“Core Textフレームワーク” (31 ページ)を参照
してください。
Image I/O
Image I/Oには、ほとんどの画像形式の読み取り、書き込みを行うためのイン
ターフェイスが用意されています。詳しくは“Image I/Oフレームワーク” (33 ペー
ジ)を参照してください。
2014-09-17 | Copyright © 2014 Apple Inc. All Rights Reserved.
24
Mediaレイヤ
オーディオテクノロジー
テクノロ
ジー
Description
Photosライ
ブラリ
PhotosおよびPhotosUIフレームワークは、ユーザの写真やビデオ、メディアに
アクセスする手段を提供します。ユーザの写真その他を、アプリケーションに
取り込みたい場合に利用します。詳しくは、“Photosフレームワーク” (35 ペー
ジ)および“Photos UIフレームワーク” (35 ページ)を参照してください。
iOSには、Retinaと標準解像度のどちらのディスプレイであっても、アプリケーションが動作するよう
にするための機能が組み込まれています。ベクトルベースの描画の場合、Retinaディスプレイ用には、
システムフレームワークが自動的にピクセルを追加してコンテンツの鮮明度を上げます。アプリケー
ション内で画像を使用する場合、UIKitが既存の画像の高解像度のバリエーションを自動的に読み込む
機能を提供します。高解像度画面への対応に必要な要件の詳細については、『iOS App Programming
Guide 』の「App-Related Resources」を参照してください。
オーディオテクノロジー
iOSのオーディオテクノロジーは、基盤となるハードウェアと連携して、ユーザに豊かなオーディオ
体験を提供することを意図して設計されています。この体験には、高品質オーディオの再生や録音の
機能、MIDIコンテンツの処理、デバイス組み込みのサウンドを扱う機能が含まれています。
音声を扱うアプリケーションで利用できるテクノロジーがいくつかあります。表 2-2に、該当するフ
レームワークとその用途を示します。
表 2-2
iOSのオーディオテクノロジー
テクノロジー
Description
Media Playerフ
レームワーク
ユーザのiTunesライブラリへの簡単なアクセス、および曲やプレイリストの
再生を支援する、高レベルのフレームワークです。オーディオ機能を容易に
アプリケーションに統合でき、再生時の動作を細かく制御する必要がない場
合に向いています。詳しくは“Media Playerフレームワーク” (33 ページ)を
参照してください。
AV Foundation
AV Foundationは、オーディオ/ビデオの録音/録画や再生を管理する、
Objective-Cのインターフェイスを提供します。音声を録音するとき、あるい
は再生方法を細かく制御したい場合に向いています。詳しくは“AV Foundation
フレームワーク” (29 ページ)を参照してください。
OpenAL
OpenALは定位オーディオを提供する業界標準のテクノロジーです。多くの
ゲーム開発者がこのテクノロジーを基盤とし、クロスプラットフォームのイ
ンターフェイス群を使って、高品位オーディオの再生機能を実装します。詳
しくは“OpenALフレームワーク” (34 ページ)を参照してください。
2014-09-17 | Copyright © 2014 Apple Inc. All Rights Reserved.
25
Mediaレイヤ
ビデオテクノロジー
テクノロジー
Description
Core Audio
Core Audioは、オーディオやMIDIの録音/再生を行う、シンプルかつ洗練され
たインターフェイスを提供するフレームワーク群です。オーディオをきめ細
かく制御したい開発者に向いています。詳しくは“Core Audio” (30 ページ)
を参照してください。
iOSは、以下に示す、業界標準およびApple独自のオーディオ形式に対応しています。
●
AAC
●
Apple Lossless(ALAC)
●
A-law
●
IMA/ADPCM(IMA4)
●
リニアPCM
●
µ-law
●
DVI/Intel IMA ADPCM
●
Microsoft GSM 6.10
●
AES3-2003
ビデオテクノロジー
iOSには、アプリケーションに固定のビデオコンテンツを管理する機能、インターネット経由で取得
したストリーミングビデオを再生する機能があります。録画用のハードウェアを搭載したデバイス上
であれば、ビデオを録画し、アプリケーションに取り込むことも可能です。表 2-3に、ビデオの再生/
録画に関係するテクノロジーを示します。
表 2-3
iOSのビデオテクノロジー
テクノロジー
Description
UIImagePickerController
UIImagePickerControllerクラスはUIKitのビューコントローラで、メディ
アファイルの選択に使います。ユーザに、既存の静止画像やビデオを選択
させる、あるいは新規コンテンツを取り込ませるために使います。詳細に
ついては、『Camera Programming Topics for iOS 』を参照してください。
2014-09-17 | Copyright © 2014 Apple Inc. All Rights Reserved.
26
Mediaレイヤ
AirPlay
テクノロジー
Description
AVKit
AVKitフレームワークは、ビデオを再生するための、簡単に使える一連のイ
ンターフェイスを提供します。全画面表示と一部領域への表示が可能で、
ユーザが操作する再生コントロールも付属しています。詳しくは“AVKitフ
レームワーク” (29 ページ)を参照してください。
AV Foundation
高度なビデオ再生/録画機能を提供します。再生/録画の方法をきめ細かく
制御したい場合に向いています。たとえば複合現実感アプリケーションの
場合、ライブビデオとアプリケーションが生成したコンテンツを重ねて再
生する、という使い方ができるかも知れません。詳しくは“AV Foundation
フレームワーク” (29 ページ)を参照してください。
Core Media
Core Mediaフレームワークは、メディアを操作するために用いる、低レベ
ルのデータ型やインターフェイスを定義しています。通常、このフレーム
ワークを直接使う必要はありませんが、ビデオコンテンツの非常に細かな
部分を制御したい場合には役に立つでしょう。詳しくは“Core Mediaフレー
ムワーク” (46 ページ)を参照してください。
iOSは以下に挙げる、多くの業界標準ビデオ形式や圧縮規格に対応しています。
●
H.264ビデオ:最高1.5Mbps、640×480ピクセル、毎秒30フレーム、H.264バージョンの
Low-Complexityベースラインプロファイル(最高160KbpsのAAC-LCオーディオ)、
48kHz、.m4v、.mp4、.movファイルフォーマットのステレオオーディオ
●
H.264ビデオ:最高768Kbps、320×240ピクセル、毎秒30フレーム、最高レベル1.3のベースラ
インプロファイル(最高160KbpsのAAC-LCオーディオ)、48kHz、.m4v、.mp4、.movファイル
フォーマットのステレオオーディオ
●
MPEG-4ビデオ:最高2.5Mbps、640×480ピクセル、毎秒30フレーム、シンプルプロファイル
(最高160KbpsのAAC-LCオーディオ)、48kHz、.m4v、.mp4、.movファイルフォーマットのステ
レオオーディオ
●
複数のオーディオフォーマット(“オーディオテクノロジー” (25 ページ)で示したフォーマッ
トを含む)
AirPlay
AirPlayを導入すれば、オーディオ/ビデオをApple TVに、オーディオを他社のAirPlay対応スピーカー/
レシーバーに、それぞれストリーミング配信できます。AirPlayは、UIKit、Media Player、AV Foundation
などのフレームワークや、Core Audioフレームワーク群に組み込まれているので、多くの場合、特別
2014-09-17 | Copyright © 2014 Apple Inc. All Rights Reserved.
27
Mediaレイヤ
Mediaレイヤのフレームワーク
な作業は必要ありません。これらのフレームワークを使用して再生するコンテンツは、自動的にAirPlay
配布対応となります。ユーザがAirPlayを使用したコンテンツ再生を選ぶと、システムが自動的に経路
を選択します。
AirPlay経由の配信についてはほかに、次のような機能があります。
●
iOSデバイスにより多くのコンテンツを表示するため、副ウインドウオブジェクトを生成し、AirPlay
経由でデバイスに接続したUIScreenオブジェクトを割り当てる機能。外付け画面に、iOSデバイ
スの画面とは別の内容を表示する場合に有用です。
●
Media Playerフレームワークの「再生」クラスは、自動的にAirPlayにも対応するようになります。
「Now Playing」コンテンツを、AirPlay経由でApple TVに表示することも可能です。
●
●
AV FoundationのAVPlayerクラスは、アプリケーションのオーディオ/ビデオコンテンツの管理に
使います。ユーザがAirPlayを有効にすれば、これを経由してストリーミング配信することも可能
です。
ウェブベースのオーディオ/ビデオに関しては、embedタグにairplay属性を指定することにより、
AirPlay経由で再生できます。UIWebViewクラスでも、AirPlay経由の再生が可能です。
アプリケーション内でAirPlayを活用する方法について詳しくは、『AirPlay Overview 』を参照してくだ
さい。
Mediaレイヤのフレームワーク
以下のセクションでは、Mediaレイヤのフレームワーク、およびこれらフレームワークが提供するサー
ビスについて説明します。
Assets Libraryフレームワーク
Assets Libraryフレームワーク(AssetsLibrary.framework)は、「写真(Photos)」アプリケーション
で管理している写真やビデオにアクセスする手段を提供します。ユーザが保存し、あるいはデバイス
にインポートした、写真アルバムにアクセスするために使います。新しい写真やビデオをユーザが保
存したフォトアルバムに保存することもできます。
このフレームワークのクラスとメソッドについては、『Assets Library Framework Reference 』を参照し
てください。
2014-09-17 | Copyright © 2014 Apple Inc. All Rights Reserved.
28
Mediaレイヤ
Mediaレイヤのフレームワーク
AV Foundationフレームワーク
AV Foundationフレームワーク(AVFoundation.framework)は、オーディオ/ビデオの再生、録音/録
画、管理に用いる、Objective-Cのクラス群です。メディアの操作機能を、アプリケーションのユーザ
インターフェイスに一体化するために使います。より高度なメディア操作のためにも利用できます。
たとえば、複数の音声を同時に再生する、再生/録音をきめ細かく制御する、といった場合に有用で
す。
次のようなサービスがあります。
●
オーディオセッション管理(アプリケーションのオーディオ機能をシステムに対して宣言する機
能を含む)
●
アプリケーションのメディア資産管理
●
メディアコンテンツの編集
●
オーディオ/ビデオの取り込み
●
オーディオ/ビデオの再生
●
トラックの管理
●
メディアアイテムのメタデータ管理
●
ステレオパンニング
●
サウンド間の正確な同期
●
●
データフォーマット、サンプルレート、チャンネル数など、サウンドファイルに関する詳細を決
定するObjective-Cインターフェイス
AirPlay経由のストリーミング配信
AV Foundationの使い方について詳しくは、『AV Foundation Programming Guide 』を参照してくださ
い。また、AV Foundationフレームワークのクラスについては、『AV Foundation Framework Reference 』
を参照してください。
AVKitフレームワーク
AVKitフレームワーク(AVKit.framework)には、AV Foundationの既存のオブジェクトを強化し、デ
バイス上にビデオを表示できるようにする働きがあります。ビデオの表示に従来使われていた、Media
Playerフレームワークに代わるものです。
このフレームワークについて詳しくは、ヘッダファイルを参照してください。
2014-09-17 | Copyright © 2014 Apple Inc. All Rights Reserved.
29
Mediaレイヤ
Mediaレイヤのフレームワーク
Core Audio
Core Audioは、ネイティブなオーディオ処理機能を提供するフレームワーク群です(個々のフレーム
ワークは表 2-4を参照)。オーディオの生成、録音、ミキシング、再生が可能です。MIDIコンテンツ
の操作も可能で、オーディオ/MIDIコンテンツを他のアプリケーションにストリーミング配信できま
す。
表 2-4
Core Audioフレームワーク
フレームワーク
サービス
CoreAudio.framework
Core Audio全体で使われるオーディオデータ型を定義します。詳細
については、『Core Audio Framework Reference 』を参照してくださ
い。
AudioToolbox.framework
オーディオファイルおよびストリームに対して再生および録音サー
ビスを提供します。このフレームワークは、オーディオファイルの
管理、システムの警告音の再生、および対応デバイスにおけるバイ
ブレーション機能のトリガを可能にします。詳細については、
『Audio Toolbox Framework Reference 』を参照してください。
AudioUnit.framework
オーディオ処理モジュールである内蔵Audio Unitを使用するための
サービスを提供します。アプリケーションのオーディオコンテンツ
を、他のアプリケーションからも使えるオーディオコンポーネント
として販売することも可能です。詳細については、『Audio Unit
Framework Reference 』を参照してください。
CoreMIDI.framework
ハードウェアキーボードやシンセサイザなどのMIDIデバイスと通信
する標準的な手段を提供します。このフレームワークを使用して、
MIDIメッセージの送受信を行ったり、Dockコネクタやネットワーク
を使用してiOSベースのデバイスに接続されたMIDI機器とやり取り
を行ったりします。詳細については、『Core MIDI Framework
Reference 』を参照してください。
MediaToolbox.framework
オーディオタップインターフェイスへのアクセス機能を提供しま
す。
Core Audioの詳細については、『Core Audio Overview 』を参照してください。Audio Toolboxフレーム
ワークでサウンドを再生する方法については、『Audio Queue Services Programming Guide 』を参照して
ください。
2014-09-17 | Copyright © 2014 Apple Inc. All Rights Reserved.
30
Mediaレイヤ
Mediaレイヤのフレームワーク
CoreAudioKitフレームワーク
CoreAudioKitフレームワーク(CoreAudioKit.framework)は、オーディオ連携機能を組み込んだア
プリケーション間の接続を管理する、標準的なビューを提供します。接続された他のアプリケーショ
ンのアイコンを表示する「スイッチャ」ビューと、ホストアプリケーションが供給するオーディオの
「操作パネル」ビューから成ります。
このフレームワークのインターフェイスについて詳しくは、ヘッダファイルを参照してください。
Core Graphicsフレームワーク
Core Graphicsフレームワーク(CoreGraphics.framework)には、Quartz 2D描画API用のインターフェ
イスが含まれています。Quartzは、OS Xで使われているものと同じ、高度なベクトルベースの描画エ
ンジンです。パスベースの描画、アンチエイリアス化されたレンダリング、グラデーション、画像、
色、座標空間の変換、およびPDFドキュメントの作成、表示、解析をサポートします。APIはC言語ベー
スですが、オブジェクトベースの抽象化を使用して基礎的な描画オブジェクトを表します。これによ
り、グラフィックスコンテンツの保存と再利用が簡単に行えます。
Quartzを使って図形を描画する方法については、『Quartz2DProgrammingGuide 』および『CoreGraphics
Framework Reference 』を参照してください。
Core Imageフレームワーク
Core Imageフレームワーク(CoreImage.framework)には、ビデオや静止画像を操作する、強力な
フィルタ群が組み込まれています。この組み込みフィルタを使えば、写真のレタッチや修正から、顔
面認識、特徴認識、QRコード検出まで、さまざまなことが可能です。このフィルタは、もとの画像を
直接変更せず、非破壊的に加工するようになっています。さらに、フィルタはハードウェアで処理さ
れるので、高速で滑らかです。
Core Imageフレームワークのクラスやフィルタについては、『Core Image Reference Collection 』を参照
してください。
Core Textフレームワーク
Core Textフレームワーク(CoreText.framework)には、テキストのレイアウトとフォントの処理を
行う、シンプルで高性能なCベースの一連のインターフェイスが含まれています。TextKitは使わない
けれども、ワードプロセッサに見られるような、高度なテキスト処理機能を要するアプリケーション
に向いています。このフレームワークは、テキストの回り込みその他、洗練されたテキスト配置エン
ジンを提供します。また、複数のフォントやレンダリング属性を駆使した、高度なスタイル処理にも
対応しています。
2014-09-17 | Copyright © 2014 Apple Inc. All Rights Reserved.
31
Mediaレイヤ
Mediaレイヤのフレームワーク
Core Textインターフェイスについて詳しくは、『Core Text Programming Guide 』および『Core Text
Reference Collection 』を参照してください。
Core Videoフレームワーク
Core Videoフレームワーク(CoreVideo.framework)は、Core Mediaフレームワーク(“Core Mediaフ
レームワーク” (46 ページ)を参照)に対してバッファおよびバッファプールのサポートを提供しま
す。ほとんどのアプリケーションは、このフレームワークを直接使用する必要はありません。
Game Controllerフレームワーク
Game Controllerフレームワーク(GameController.framework)を導入すれば、iPhone/iPod/iPad用に
作られた(MFi、Made-for-iPhone/iPod/iPad)ゲームコントローラを、アプリケーションで検出、設定
できます。iOSデバイスに物理的に接続されたゲームコントローラのほか、Bluetooth経由で無線接続
されたものも対象です。Game Controllerフレームワークは、コントローラを検出するとアプリケー
ションに通知して、どのコントローラの入力を渡せばよいか指定するよう求めます。
ゲームコントローラのサポートについて詳しくは、『GameControllerProgrammingGuide 』を参照して
ください。
GLKitフレームワーク
GLKitフレームワーク(GLKit.framework)には、OpenGL ES アプリケーションの開発を容易にする、
Objective-Cベースの一連のユーティリティクラスが組み込まれています。GLKitは、アプリケーション
開発における、次の4つの重要な分野で支援機能を提供しています。
●
GLKViewクラス、GLKViewControllerクラスは、OpenGL ESに対応したビューやこれに関連する
レンダリングループの、標準的な実装を提供します。ビューはアプリケーションに代わって、基
盤となるフレームバッファオブジェクトを管理するので、アプリケーションはここに描画するだ
けで済みます。
●
GLKTextureLoaderクラスは、画像変換や画像読み込みのルーチンを提供します。アプリケーショ
ンは、テクスチャ画像を自動的にコンテキストに読み込むことができます。テクスチャは、同期
読み込みと非同期読み込みの両方が可能です。非同期読み込みの場合、アプリケーションは完了
ハンドラブロックに、コンテキストへの読み込みが完了したときの処理を記述します。
●
GLKitフレームワークには、ベクトル、行列、四元数や、行列スタックの演算が実装されており、
これはOpenGL ES 1.1と同等の機能です。
2014-09-17 | Copyright © 2014 Apple Inc. All Rights Reserved.
32
Mediaレイヤ
Mediaレイヤのフレームワーク
●
GLKBaseEffect、GLKSkyboxEffect、GLKReflectionMapEffectの各クラスは、よく使われるグ
ラフィックス演算を実装した、適応性の高いグラフィックスシェイダを提供します。特に
GLKBaseEffectクラスは、OpenGL ES 1.1の仕様で規定されている光源モデル、素材モデルが実装
されており、OpenGL ES 1.1を組み込んだアプリケーションを、より新しい版に合わせて移行する
作業も容易です。
GLKitフレームワークのクラスについては、『GLKit Framework Reference 』を参照してください。
Image I/Oフレームワーク
Image I/Oフレームワーク(ImageIO.framework)は、画像データおよび画像メタデータのインポー
トとエクスポートのためのインターフェイスを提供します。このフレームワークは、Core Graphics
データ型およびCore Graphics関数を使用し、iOSで利用できる標準的なあらゆる種類の画像に対応して
います。画像のExifおよびIPTCメタデータプロパティにもアクセスできます。
このフレームワークの関数やデータ型については、『Image I/O Reference Collection 』を参照してくだ
さい。
Media Accessibilityフレームワーク
Media Accessibilityフレームワーク(MediaAccessibility.framework)は、メディアファイルに埋め
込まれたクローズドキャプションの表示を管理します。クローズドキャプションの表示の有無を切り
替える仕組みと連動して動作します。
このフレームワークの内容については、ヘッダファイルを参照してください。
Media Playerフレームワーク
Media Playerフレームワーク(MediaPlayer.framework)は、アプリケーションからオーディオコン
テンツおよびビデオコンテンツを再生するための高レベルのサポートを提供します。このフレーム
ワークで次のようなことが可能です。
●
●
●
●
●
ユーザ画面に、あるいはAirPlay経由で他のデバイスに、ビデオを再生する。全画面表示と、大き
さ変更可能なビューに表示する方法があります。
ユーザのiTunesミュージックライブラリにアクセス。楽曲トラックやプレイリストの再生、曲の
検索、ユーザに対するメディアピッカーインターフェイスの表示を行えるようになりました。
動画再生の設定や管理。
ロック画面やApp Switcherに「Now Playing」情報を表示。AirPlay経由で配信し、Apple TVに表示す
ることもできます。
AirPlay経由でビデオが配信された旨の検出。
2014-09-17 | Copyright © 2014 Apple Inc. All Rights Reserved.
33
Mediaレイヤ
Mediaレイヤのフレームワーク
Media Playerフレームワークのクラスの詳細については、『Media Player Framework Reference 』を参照
してください。これらのクラスを使用してiTunesライブラリにアクセスする方法の詳細については、
『iPod Library Access Programming Guide 』を参照してください。
Metalフレームワーク
Metalを利用すれば、ほとんどオーバーヘッドなくA7 GPUにアクセスできるので、洗練されたグラ
フィックスの描画や演算タスクを高速に実行可能です。従来のグラフィックAPIに見られる、状態の
検証処理など性能上のさまざまなボトルネックが解消されています。コストがかかる状態遷移やコン
パイルの処理は、処理性能が落ちたとき影響が目に見えやすい描画処理と切り離して実行するよう、
意識して設計してあります。Metalには、コンパイル済みシェイダ、状態オブジェクト、明示的なコ
マンドスケジュール処理が組み込まれているため、GPUグラフィックスや計算タスクを、高い処理性
能と効率で実行できます。この設計の考え方は、アプリケーション構築に用いるツールにも及んでい
ます。アプリケーションを構築する際、Xcodeはプロジェクト内でMetalシェイダをコンパイルしてラ
イブラリに出力することにより、その準備に要する実行コストを最小限に抑えます。
グラフィックス、計算、BLIT(BLock Image Transfer)関係のコマンドは、シームレスに連携し、効率
よく動作するよう設計されています。マルチプロセッシングや共有メモリなど、モダンな構造的条件
を活用できるよう特別設計されており、簡単にGPUコマンドを並行して作成できます。
また、効率的なAPI、グラフィックとシェーディング演算のための統一言語、Xcodeベースのツールも
用意されているので、ゲームその他のアプリケーションでGPUを活用するために、いくつものフレー
ムワークや言語、ツールを学ぶ必要がありません。
Metalの使い方について詳しくは、『Metal Programming Guide 』、『Metal Framework Reference 』、
『Metal Shading Language Guide 』を参照してください。
OpenALフレームワーク
Open Audio Library(OpenAL)インターフェイスは、アプリケーションで定位のオーディオを提供す
るためのクロスプラットフォームの標準です。これを使用すると、定位のオーディオ出力が必要な
ゲームやその他のプログラムに高性能で高品質なオーディオを実現できます。OpenALはクロスプラッ
トフォームの標準であるため、OpenALを使用して記述されたiOS上のコードモジュールは、ほかの多
くのプラットフォームに簡単に移植できます。
OpenALおよびその使い方の詳細については、http://www.openal.orgを参照してください。
2014-09-17 | Copyright © 2014 Apple Inc. All Rights Reserved.
34
Mediaレイヤ
Mediaレイヤのフレームワーク
OpenGL ESフレームワーク
OpenGL ESフレームワーク(OpenGLES.framework)には、2Dコンテンツや3Dコンテンツを描画する
ための各種ツールが用意されています。これはC言語ベースのフレームワークで、デバイスハードウェ
アと密接に連携して動作し、ゲームなど全画面の没入型アプリケーション用に、きめ細かなグラフィッ
クス制御と高いフレームレートを提供します。OpenGLフレームワークは、(OpenGL ESの描画機能
と、UIKitのネイティブウインドウオブジェクトを結びつける、)EAGLインターフェイスと連携して動
作します。
OpenGL ES 1.1、2.0、3.0の各版に対応しています。2.0の仕様では、フラグメントシェーダ、頂点シェー
ダが加わりました。3.0の仕様では、マルチレンダーターゲット(一度に複数のサーフィスに描画)、
変換フィードバック(頂点シェーダの計算結果をバッファに保存)など、多くの機能が加わっていま
す。
OpenGL ESの使い方について詳しくは、『OpenGL ES Programming Guide for iOS 』を参照してください。
参考情報については、『OpenGL ES Framework Reference 』を参照してください。
Photosフレームワーク
Photosフレームワーク(Photos.framework)では、iCloud の写真アセットを含め、「写真(Photos)」
アプリケーションで管理されている写真/ビデオアセットと連動する新しいAPIを利用できます。Assets
Libraryフレームワークよりも機能が充実しています。PhotoKitは、サムネイルとフルサイズのアセッ
トのフェッチやキャッシュ、アセットの変更リクエスト、その他のアプリケーションによって適用さ
れた変更内容の監視、再開可能なアセットコンテンツ編集に対応した、スレッドセーフなアーキテク
チャを主な特徴としています。
このフレームワークのインターフェイスについては、『Photos Framework Reference 』を参照してくだ
さい。
Photos UIフレームワーク
Photos UIフレームワーク(PhotosUI.framework)を使って、「写真(Photos)」アプリケーション上で
画像やビデオを編集する、アプリケーション拡張機能を開発できます。写真編集用の拡張機能を開発
する手順について詳しくは、『App Extension Programming Guide 』を参照してください。
Quartz Coreフレームワーク
Quartz Coreフレームワーク(QuartzCore.framework)には、Core Animationインターフェイスが含
まれています。Core Animationは高度な画像合成テクノロジーであり、高速で効率よく動作する、
ビューベースのアニメーションを容易に作成できます。合成エンジンはハードウェアの能力を駆使し
2014-09-17 | Copyright © 2014 Apple Inc. All Rights Reserved.
35
Mediaレイヤ
Mediaレイヤのフレームワーク
て、ビューの内容を、実時間で効率よく操作します。アプリケーション側はアニメーションの開始点
と終了点を指定するだけです。さらに、Core Animationはその基盤となるUIViewアーキテクチャに組
み込まれているので、いつでも使用可能です。
Core Animationをアプリケーションに組み込む手順については、『CoreAnimationProgrammingGuide 』
および『Core Animation Reference Collection 』を参照してください。
SceneKitフレームワーク
SceneKitは、3Dグラフィックスを活用して、簡単なゲームや機能豊富なユーザインターフェイスを構
築する、Objective-Cのフレームワークです。高性能の描画エンジンと、機能に即した名前の高レベル
なAPIを備えています。OS X v10.8以降で使えますが、今回初めて、iOSでも動作するようになりまし
た。低レベルのAPI(OpenGL ESなど)を使う場合、画面表示のための描画アルゴリズムを、詳細まで
実装する必要があります。一方、SceneKitを利用すれば、形状寸法、素材、光源、カメラなどといっ
た概念にもとづいてシーンを作成し、その変化を記述することにより動きを表現できます。
SceneKitの3D物理エンジンでは、重力、力、剛体衝突、関節をシミュレートすることで、躍動感あふ
れるアプリケーションやゲームを作成できます。これに動きを加えることにより、乗り物(自動車な
ど)を画面に登場させたり、ある範囲内の物体に放射重力、電磁気力、乱流などを及ぼす物理場を加
えたりすることも容易です。
OpenGL ESを使ってシーンの描画内容を補ったり、GLSLシェイダを取り入れて、SceneKitの描画を置き
換え、あるいは補うことも可能です。さらに、色のグレーディング(色彩の補正処理)、SSAO(環
境光に対する影の表現、Screen Space Ambient Occlusion)など、シェイダベースの後処理技法を取り
入れるのもよいでしょう。
このフレームワークのインターフェイスについては、『Scene Kit Framework Reference 』を参照してく
ださい。
SpriteKitフレームワーク
SpriteKitフレームワーク(SpriteKit.framework)には、2Dゲームや2.5Dゲームのアニメーション
を、ハードウェアで高速化するための機能があります。多くのゲームに必要となる、画像のレンダリ
ングやアニメーション化、音声再生、物理シミュレーションエンジンなどが組み込まれています。こ
ういった機能を改めて開発する必要がないので、ゲームそのものの設計や高レベルの対話機能に集中
できるでしょう。
SpriteKitアプリケーションのコンテンツは、いくつかのシーンに分かれています。各シーンには、テ
クスチャを施したオブジェクト、ビデオ、パスを組み合わせた図形、Core Imageフィルタ、その他の
特殊効果を入れることができます。SpriteKitはこういったオブジェクトを使い、画面にレンダリング
2014-09-17 | Copyright © 2014 Apple Inc. All Rights Reserved.
36
Mediaレイヤ
Mediaレイヤのフレームワーク
する最も効率よい方法を判断します。シーンの内容をアニメーション表示する場合、SpriteKitを使っ
てアクションを明示的に指定するか、物理シミュレーションエンジンを使ってオブジェクトの物理的
な振る舞い(重力、引力、反発力など)を規定することになります。
SpriteKitフレーム以外にも、粒子放出効果やテクスチャアトラス(多数の画像を1枚に集約した画像)
を生成する、各種のXcodeツールがあります。このようなツールでアプリケーション資産を管理し、
SpriteKitのシーンを迅速に更新できるのです。
SpriteKitの使い方について詳しくは、『SpriteKitProgrammingGuide 』を参照してください。SpriteKitを
使って実際に動作するアプリケーションを開発した例が、『code:Explained Adventure 』に載っていま
す。
2014-09-17 | Copyright © 2014 Apple Inc. All Rights Reserved.
37
Core Servicesレイヤ
Core Servicesレイヤには、アプリケーション向けの基本的なサービスが含まれています。中でも重要
なのは、あらゆるアプリケーションに必要となる基本的な型を定義している、Core Foundationと
Foundationフレームワークでしょう。このレイヤには、地理的位置の検出、iCloud、ソーシャルメディ
ア、ネットワークなどを活用するために必要な、個別の技術も組み込まれています。
上位レベルの機能
以下のセクションでは、Core Servicesレイヤで利用できる上位レベルの機能の一部を説明します。
ピアツーピアサービス
Multipeer Connectivityフレームワークは、Bluetooth経由でピアツーピア接続を提供します。ピアツー
ピア接続を使用することで、近くにあるデバイスとの間で通信セッションを開始できます。主にゲー
ムで使用されますが、その他のタイプのアプリケーションで使用することもできます。
アプリケーションでピアツーピア接続機能を使用する方法の詳細については、『MultipeerConnectivity
Framework Reference 』を参照してください。
iCloudストレージ
iCloudストレージでは、アプリケーションがユーザのドキュメントおよびデータを中央の場所に書き
込めます。ユーザはどこからでも、コンピュータやiOSデバイスを使ってアクセスできます。iCloudを
利用して、ユーザ文書をどこからでもアクセスできるようにすれば、意識的に同期や転送の操作をす
ることなく、どのデバイスからでも文書を表示し、編集できるようになります。ドキュメントをユー
ザのiCloudアカウントに格納すれば、安全性も確保されます。ユーザがデバイスを紛失しても、その
デバイスのドキュメントはiCloudストレージ上にあるので、損失することはありません。
アプリケーションがiCloudストレージを活用する方法は2つあり、それぞれ異なる用途を想定していま
す。
●
iCloud文書ストレージ。ユーザ文書やデータを、ユーザのiCloudアカウントに格納します。
●
iCloudキー値データストレージ。少量のデータを、複数のアプリケーション間で共有します。
●
CloudKitストレージ。公開の共有コンテンツを作成し、あるいはデータのやり取りを自分で管理
したい場合に有用です。
2014-09-17 | Copyright © 2014 Apple Inc. All Rights Reserved.
38
Core Servicesレイヤ
上位レベルの機能
アプリケーションの多くはiCloudドキュメントストレージを使い、ユーザのiCloudアカウントに置か
れているドキュメントを共有します(iCloudストレージと聞いて普通思い浮かべる機能はこれでしょ
う)。ユーザは、文書がデバイス間で共有されているかどうか、だけを意識していればよく、どのデ
バイスからでも文書を表示、管理できます。一方、iCloudキー値データストアは、ユーザの目に触れ
るものではありません。アプリケーションがごく少量(数十キロバイト程度)のデータを、同じアプ
リケーションのほかのインスタンスと共有するためのものです。この機能を使って保存するのは、重
要なデータではなく、環境設定など付随的なアプリケーションデータです。
iCloudの操作機能をアプリケーションに組み込む方法の概要については、『iCloud Design Guide 』を参
照してください。
ブロックオブジェクト
ブロックオブジェクトは、CおよびObjective-Cのコードに組み込むことのできる、Cレベル言語の構成
体です。ブロックオブジェクトは、基本的には匿名関数およびその関数に伴うデータであり、ほかの
言語ではクロージャ やラムダ と呼ばれているものです。ブロックは特に、コールバックとして使用
したり、または実行するコードと関連するデータを簡単に組み合わせる手段が必要な場合に使用でき
ます。
iOSでは、ブロックは一般的に以下のシナリオで使用されます。
●
デリゲートおよびデリゲートメソッドの代替として
●
コールバック関数の代替として
●
1回限りの操作の終了ハンドラを実装するため
●
コレクション内のすべての要素に対するタスクの実行を容易にするため
●
ディスパッチキューとともに非同期タスクを実行するため
ブロックオブジェクトの概要および使い方については、『A Short Practical Guide to Blocks 』を参照して
ください。ブロックについては、『Blocks Programming Topics 』を参照してください。
データ保護
データ保護機能により、機密性の高いユーザデータを扱うアプリケーションは、一部のデバイスで利
用可能な内蔵の暗号化機能を利用できるようになりました。特定のファイルを保護対象として指定す
ると、システムはそのファイルを暗号化された形式でディスク上に格納します。デバイスがロックさ
れている間、アプリケーションからも侵入者からもファイルの内容にはアクセスできません。一方、
ユーザがデバイスをロック解除すると、暗号鍵が作成されてアプリケーションからファイルにアクセ
スできるようになります。これ以外のレベルのデータ保護機能も利用可能です。
2014-09-17 | Copyright © 2014 Apple Inc. All Rights Reserved.
39
Core Servicesレイヤ
上位レベルの機能
データ保護を実装するには、保護対象のデータの作成方法と管理方法を理解しておく必要がありま
す。アプリケーションは、データの作成時にデータのセキュリティを確保し、ユーザがデバイスを
ロックまたはロック解除したときのアクセスの変更に備えるよう設計されなければなりません。
アプリケーションのファイルにデータ保護を追加する方法の詳細については、『iOSAppProgramming
Guide 』を参照してください。
ファイル共有のサポート
ファイル共有によりアプリケーションは、iTunes 9.1以上を通じてユーザのデータファイルを利用でき
ます。ファイル共有のサポートを宣言したアプリケーションでは、ユーザは/Documentsディレクト
リの内容を利用できます。ユーザは必要に応じて、iTunesからこのディレクトリとの間でファイルを
移動することができます。この機能では、アプリケーションは、同一デバイス上のほかのアプリケー
ションとの間でファイルを共有することはできません。この動作には、ペーストボードまたはDocument
Interaction Controllerオブジェクトが必要です。
アプリケーションにファイル共有機能を持たせるには、次の手順を実行します。
1.
アプリケーションのInfo.plistファイルにUIFileSharingEnabledキーを追加し、値をYESとし
ます。
2.
共有するファイルはすべて、アプリケーションのDocumentsディレクトリに置きます。
3.
デバイスがユーザのコンピュータに接続されていると、iTunesは選択されたデバイスの「Apps」
タブに「File Sharing」セクションを表示します。
4.
ユーザはこのディレクトリにファイルを追加したり、デスクトップにファイルを移動したりでき
ます。
ファイル共有に対応したアプリケーションは、Documentsディレクトリにファイルが追加されたこと
を認識し、適切に対応できなければなりません。たとえば、アプリケーションはそのインターフェイ
スを通じて、新しいファイルの内容を利用できるようにすることが考えられます。このディレクトリ
のファイルの一覧をユーザに表示して、それらのファイルに対する操作を決めるようにユーザに求め
たりしてはなりません。
UIFileSharingEnabledキーの詳細については、『Information Property List Key Reference 』を参照して
ください。
2014-09-17 | Copyright © 2014 Apple Inc. All Rights Reserved.
40
Core Servicesレイヤ
上位レベルの機能
Grand Central Dispatch
Grand Central Dispatch(GCD)はBSDレベルのテクノロジーで、アプリケーション内のタスクの実行管
理に使用します。GCDは非同期プログラミングモデルと高度に最適化されたコアを一体化させること
で、スレッドに代わる簡便で効率的な手段を提供します。また、ファイル記述子の読み取りと書き込
み、タイマーの実装、シグナルイベントおよびプロセスイベントの監視など、さまざまな下位レベル
タスクに対する便利な代替手段も提供します。
アプリケーションでGCDを使う方法については、『Concurrency Programming Guide 』を参照してくだ
さい。個々のGCD関数の詳細については、『Grand Central Dispatch (GCD) Reference 』を参照してくださ
い。
In-App Purchase
In-App Purchaseにより、アプリケーション内部から、当該アプリケーションに特有のコンテンツや
サービス、iTunesコンテンツを購入することができます。In-App Purchaseは、ユーザのiTunesアカウン
トを使用した会計処理に必要なインフラストラクチャを提供するStoreKitフレームワークを使用して
実装されています。アプリケーションは、全体的なユーザ体験、および購入可能なコンテンツやサー
ビスの表示を処理します。ダウンロード可能なコンテンツは、自分で配送するほか、Appleのサーバ
に委ねることも可能です。
In-App Purchaseのサポートについて詳しくは、『In-App Purchase Programming Guide 』を参照してくだ
さい。StoreKitフレームワークについて詳しくは、“StoreKitフレームワーク” (51 ページ)を参照して
ください。
SQLite
SQLiteライブラリにより、軽量なSQLデータベースをアプリケーションに組み込むことができます。
これにより、リモートで別にデータベースサーバプロセスを実行する必要がありません。アプリケー
ションからローカルデータベースファイルを作成し、ファイル内のテーブルやレコードを管理できま
す。ライブラリは汎用の目的のために設計されていますが、データベースのレコードにすばやくアク
セスできるようにさらに最適化されています。
SQLiteライブラリのアクセス用ヘッダファイルは<iOS_SDK> /usr/include/sqlite3.hにあります。
<iOS_SDK> は、Xcodeのインストールディレクトリ内のターゲットSDKへのパスです。SQLiteの使い方
については『SQLite Software Library』を参照してください。
2014-09-17 | Copyright © 2014 Apple Inc. All Rights Reserved.
41
Core Servicesレイヤ
Core Servicesフレームワーク
XMLサポート
Foundationフレームワークは、XMLドキュメントから要素を取得するためのNSXMLParserクラスを提
供しています。XMLコンテンツの操作の追加サポートは、libxml2ライブラリによって提供されてい
ます。このオープンソースライブラリを利用すると任意のXMLデータをすばやく解析したり記述した
りできます。また、XMLコンテンツをHTMLに変換することもできます。
libxml2ライブラリのアクセス用ヘッダファイルは<iOS_SDK> /usr/include/libxml2/ディレクトリ
にあります。<iOS_SDK> は、Xcodeのインストールディレクトリ内のターゲットSDKへのパスです。
libxml2の使い方についてはlibxml2の資料を参照してください。
Core Servicesフレームワーク
以下のセクションでは、Core Servicesレイヤのフレームワーク、およびこれらフレームワークが提供
するサービスについて説明します。
Accountsフレームワーク
Accountsフレームワーク(Accounts.framework)は、ユーザアカウントにログインするための「シ
ングルサインオン」モデルを提供します。「シングルサインオン」が利用できると、複数のアカウン
トを使い分ける場合でも、その都度ユーザに問い合わせることがなくなるので、使い勝手がよくなり
ます。また、アプリケーションはアカウント認証処理を委ねることができるので、開発モデルも簡明
になります。このフレームワークはSocialフレームワークと組み合わせて使用します。
Accountsフレームワークのクラスについては、『AccountsFrameworkReference 』を参照してください。
Address Bookフレームワーク
Address Bookフレームワーク(AddressBook.framework)は、ユーザの連絡先データベースにプログ
ラムからアクセスするための手段を提供します。アプリケーションが連絡先情報を使用する場合は、
このフレームワークを使用して情報にアクセスしたり修正したりできます。たとえば、チャットプロ
グラムでこのフレームワークを使用して、チャットセッションを開始可能な連絡先リストを取得した
りその連絡先をカスタムビューに表示したりすることができます。
2014-09-17 | Copyright © 2014 Apple Inc. All Rights Reserved.
42
Core Servicesレイヤ
Core Servicesフレームワーク
Important: ユーザの連絡先データにアクセスするためには、当該ユーザの明示的な許可が必要に
なりました。したがってアプリケーションには、ユーザがアクセスを拒否できるようにする仕組
みが必要です。さらに、アクセスが必要な理由を、Info.plistの所定のキーに記述するよう推奨
します。
Address Bookフレームワークの関数の詳細については、『Address Book Framework Reference for iOS 』を
参照してください。
Ad Supportフレームワーク
Ad Supportフレームワーク(AdSupport.framework)を使って、広告識別子にアクセスし、広告目的
に使えます。また、追跡型広告の機能(Ad Tracking)を制限している旨を表すフラグも参照できま
す。アプリケーションは、広告識別子にアクセスする前にフラグを調べ、その指示に従わなければな
りません。
このフレームワークの詳細については、『Ad Support Framework Reference 』を参照してください。
CFNetworkフレームワーク
CFNetworkフレームワーク(CFNetwork.framework)は、ネットワークプロトコルを処理するために
オブジェクト指向の抽象化を使用する、高性能なC言語ベースのインターフェイスセットです。これ
らの抽象化によって、プロトコルスタックに対して細かな制御が可能になり、BSDソケットなどの下
位レベルの構成体を使うのが簡単になります。このフレームワークを使用することで、FTPサーバお
よびHTTPサーバとの通信やDNSホスト解決などの作業が簡単に行えます。CFNetworkフレームワーク
を使用することで、以下のことが可能になります。
●
BSDソケットの使用
●
SSLまたはTLSを使用した暗号化接続の作成
●
DNSホストの解決
●
HTTPサーバ、認証HTTPサーバ、およびHTTPSサーバの使用
●
FTPサーバの使用
●
Bonjourサービスの公開、解決、ブラウズ
CFNetworkは、物理的にも論理的にもBSDソケットを基にしています。CFNetworkの使い方について
は、『CFNetworkProgrammingGuide 』および『CFNetworkFrameworkReference 』を参照してください。
2014-09-17 | Copyright © 2014 Apple Inc. All Rights Reserved.
43
Core Servicesレイヤ
Core Servicesフレームワーク
CloudKitフレームワーク
CloudKit(CloudKit.framework)は、アプリケーションとiCloudとの間でデータをやり取りする経路
を提供します。他のiCloud技術はアプリケーション側が関与しないところでデータのやり取りが起こ
るのに対し、CloudKitの場合、データをいつ伝送するか自由に制御できます。どんな種類のデータで
もCloudKitで管理可能です。
アプリケーションは、CloudKitを直接使えば、全ユーザの共有リポジトリにデータを保存できます。
この公開リポジトリは、(個々のユーザではなく)アプリケーション自身と結びついており、iCloud
アカウントを登録していないデバイスでも利用できます。アプリケーションは、このコンテナ内の
データを直接管理し、CloudKitダッシュボードを介してユーザが変更を施したとき、その内容を認識
できることになります。
このフレームワークに属するクラスについて詳しくは、『Cloud Kit Framework Reference 』を参照して
ください。
Core Dataフレームワーク
Core Dataフレームワーク(CoreData.framework)は、Model-View-Controllerアプリケーションのデー
タモデルを管理するためのテクノロジーです。Core Dataは、すでにデータモデルが高度に構造化され
ているアプリケーションでの使用を目的としています。プログラムでデータ構造を定義する代わり
に、Xcodeのグラフィカルなツールを使ってデータモデルを表すスキーマを作成できます。実行時に
は、Core Dataフレームワークを通してデータモデルエンティティのインスタンスの作成、管理、使用
が行われます。
アプリケーションのデータモデルを管理することにより、Core Dataはアプリケーションの作成に必要
なコード量を大幅に削減します。Core Dataは以下の機能も提供します。
●
パフォーマンスの最適化のためのSQLiteデータベース内のオブジェクトデータ格納域
●
テーブルビューの結果を管理するためのNSFetchedResultsControllerクラス
●
基本的なテキスト編集以外の取り消し(Undo)/やり直し(Redo)の管理
●
プロパティ値の検証のサポート
●
変更の伝達のサポート、およびオブジェクト間の関係の一貫性の保証
●
メモリ内のデータの、グループ化、フィルタ処理、編成のサポート
新しいアプリケーションの開発や、既存のアプリケーションに対して重要な更新を計画している場合
は、Core Dataの使用を検討してください。iOSアプリケーションでのCore Dataの使用方法の例につい
ては、『Core Data Tutorial for iOS 』を参照してください。Core Dataフレームワークのクラスの詳細に
ついては、『Core Data Framework Reference 』を参照してください。
2014-09-17 | Copyright © 2014 Apple Inc. All Rights Reserved.
44
Core Servicesレイヤ
Core Servicesフレームワーク
Core Foundationフレームワーク
Core Foundationフレームワーク(CoreFoundation.framework)は、iOSアプリケーションの基本的
なデータ管理およびサービス機能を提供する、C言語ベースのインターフェイスセットです。このフ
レームワークは、以下をサポートしています。
●
コレクションデータ型(配列、集合など)
●
バンドル
●
文字列管理
●
日付と時刻の管理
●
未加工データブロック管理
●
環境設定管理
●
URLおよびストリーム操作
●
スレッドおよび実行ループ
●
ポートおよびソケット通信
Core Foundationフレームワークは、Foundationフレームワークと密接に関係しており、同じような基
本機能にObjective-Cインターフェイスを提供します。FoundationのオブジェクトとCore Foundationの
型を混在させる必要がある場合は、この2つのフレームワーク間にある「toll-free bridging」(犠牲を
伴わない橋渡し)を利用できます。 toll-free bridging とは、いくつかのCore Foundation型とFoundation
型は、どちらのフレームワークのメソッドや関数でも同じように使用できることを意味します。この
サポートは、コレクションデータ型や文字列データ型など多くのデータ型に利用できます。それぞれ
のフレームワークのクラスと型の説明には、オブジェクトがtoll-free bridgingに対応しているかどうか
が示されています。また、対応している場合には対応先のオブジェクトが示されています。
このフレームワークの詳細については、『Core Foundation Framework Reference 』を参照してくださ
い。
Core Locationフレームワーク
Core Locationフレームワーク(CoreLocation.framework)は、位置と方角の情報をアプリケーショ
ンに提供します。位置情報について、このフレームワークは、オンボードGPS、携帯電話、またはWi-Fi
の無線を使用して、ユーザの現在の経度と緯度を把握します。このテクノロジーをアプリケーション
に組み込んで、ユーザに位置情報を提供することができます。たとえば、近隣のレストラン、店舗、
または施設を検索するようなサービスでは、ユーザの現在位置に基づいて検索ができます。Core
Locationは以下の機能も提供します。
●
磁力センサーが搭載されたiOSベースのデバイスにおける、コンパスベースの方角情報へのアクセ
ス
2014-09-17 | Copyright © 2014 Apple Inc. All Rights Reserved.
45
Core Servicesレイヤ
Core Servicesフレームワーク
●
地理的位置やBluetoothビーコンに基づく地域監視
●
携帯電話基地局を用いた低電力の位置監視
●
MapKitとの連携による位置データの精度向上(自動車運転中など特殊な状況で)
位置情報および方角情報の収集にCore Locationを使用する方法の詳細については、『Location and Maps
Programming Guide 』および『Core Location Framework Reference 』を参照してください。
Core Mediaフレームワーク
Core Mediaフレームワーク(CoreMedia.framework)は、AV Foundationフレームワークが使用する下
位レベルのメディアタイプを提供します。ほとんどのアプリケーションはこのフレームワークを使用
する必要はありませんが、オーディオコンテンツとビデオコンテンツの作成と表示において、より正
確な制御を必要とするデベロッパのためにこのフレームワークが提供されています。
このフレームワークの関数やデータ型については、『Core Media Framework Reference 』を参照してく
ださい。
Core Motionフレームワーク
Core Motionフレームワーク(CoreMotion.framework)には、デバイスの動き(モーション)に関す
るあらゆるデータにアクセスできる、一連のインターフェイス群が揃っています。加速度センサーの
生データおよび加工済みデータに、新たに追加されたブロックベースのインターフェイスを介してア
クセスできます。ジャイロスコープが組み込まれたデバイスであれば、その姿勢や回転率を反映する
生データおよび加工済みデータを取得できます。ゲームその他のアプリケーションは、加速度セン
サーやジャイロスコープのデータを使って、デバイスの動きを入力として扱うなど、さまざまな方法
で使い勝手を高めることができます。ステップカウンタ搭載デバイスであれば、そのデータを参照し
て運動の実施状況を追跡できます。
このフレームワークのクラスとメソッドについては、『Core Motion Framework Reference 』を参照して
ください。
Core Telephonyフレームワーク
Core Telephonyフレームワーク(CoreTelephony.framework)は、携帯電話用無線機能が備わったデ
バイス上の電話ベースの情報をやり取りするためのインターフェイスを提供します。アプリケーショ
ンは、このフレームワークを使用して、ユーザの携帯電話サービスプロバイダに関する情報を取得す
ることができます。携帯電話の呼び出しイベント(VoIPアプリケーションなど)が関係するアプリ
ケーションは、呼び出しイベントの発生時に通知を受けることもできます。
2014-09-17 | Copyright © 2014 Apple Inc. All Rights Reserved.
46
Core Servicesレイヤ
Core Servicesフレームワーク
このフレームワークのクラスやメソッドの使い方については、『CoreTelephonyFrameworkReference 』
を参照してください。
EventKitフレームワーク
EventKitフレームワーク(EventKit.framework)は、ユーザデバイス上のカレンダーイベントにアク
セスするためのインターフェイスを提供します。このフレームワークで次のようなことが可能です。
●
ユーザのカレンダーから、既存のイベントや備忘データを取得
●
イベント(予定)をカレンダーに追加
●
備忘データを生成(「リマインダー(Reminders)」アプリケーションに表示)
●
カレンダーイベントに対するアラームの設定(アラームをいつ起動するか、など)
Important: カレンダーやリマインダーのデータにアクセスするためには、ユーザの明示的な許可
が必要になりました。したがってアプリケーションには、ユーザがアクセスを拒否できるように
する仕組みが必要です。さらに、アクセスが必要な理由を、Info.plistの所定のキーに記述する
よう推奨します。
このフレームワークのクラスとメソッドについては、『Event Kit Framework Reference 』を参照してく
ださい。さらには、“EventKit UIフレームワーク” (19 ページ)も参照してください。
Foundationフレームワーク
Foundationフレームワーク(Foundation.framework)は、Core Foundationフレームワーク(“Core
Foundationフレームワーク” (45 ページ)を参照)の機能の多くにObjective-Cラッパーを提供します。
Foundationフレームワークは、以下の機能をサポートします。
●
コレクションデータ型(配列、集合など)
●
バンドル
●
文字列管理
●
日付と時刻の管理
●
未加工データブロック管理
●
環境設定管理
●
URLおよびストリーム操作
●
スレッドおよび実行ループ
●
Bonjour
●
通信ポート管理
2014-09-17 | Copyright © 2014 Apple Inc. All Rights Reserved.
47
Core Servicesレイヤ
Core Servicesフレームワーク
●
国際化
●
正規表現の一致
●
キャッシュのサポート
Foundationフレームワークのクラスの詳細については、『Foundation Framework Reference 』を参照し
てください。
HealthKitフレームワーク
HealthKit(HealthKit.framework)は、健康に関する情報を管理する、新しいフレームワークです。
健康の状態や増進に関する情報を追跡するアプリケーションやデバイスが急増していますが、実際に
何をどのように管理しているのか、きちんと把握するのは難しいのが実情です。HealthKitを利用すれ
ば、健康に関する情報をアプリケーション間で容易に共有できます。iOSデバイスに接続した測定機
器から取得した情報でも、ユーザが手入力した情報でも構いません。この情報は安全な場所に一括保
存され、「ヘルスケア(Health)」アプリケーションにすべて表示して、日々役立てることができます。
アプリケーションにHealthKitの機能を組み込むだけで、ユーザの健康データにアクセスし、健康増進
に役立つさまざまな情報を提供できます。さまざまな測定機器類からデータを取り込む機能を実装す
る必要はありません。ユーザは、どの健康データのアクセスを許可するか指定できます。さらに、
データが変化したとき通知が届くよう登録することも可能です。どのようなときに通知が届くか、細
かく制御できるのです。たとえば、血圧を測定したときは常に通知する、あるいは血圧が所定の値を
超えた場合にのみ通知する、といった制御をすることが考えられます。
このフレームワークのインターフェイスについては、『HealthKit Framework Reference 』を参照してく
ださい。
HomeKitフレームワーク
HomeKit(HomeKit.framework)は、自宅にあるデバイスと通信し、操作するための新しいフレーム
ワークです。接続性がよくなるだけでなく、使い勝手も改善されます。HomeKitは、こういったデバ
イスと通信する、標準的な手段を提供します。
アプリケーションにHomeKitを組み込めば、自宅にある他のデバイスとの通信が可能になります。ユー
ザはこのアプリケーション上でデバイスに接続し、設定を施すことができるのです。さらに、デバイ
スを制御するアクションを作成することも考えられます。これをグループ化し、Siriを介して実行す
るのもよいでしょう。有用なアクションは、他のユーザに使ってもらうことも可能です。たとえば、
訪ねてきた友人に一時的に使わせるのもよいでしょう。
HomeKit Accessory Simulatorを利用して、HomeKitアプリケーションとデバイスとの通信をテストでき
ます。
2014-09-17 | Copyright © 2014 Apple Inc. All Rights Reserved.
48
Core Servicesレイヤ
Core Servicesフレームワーク
このフレームワークのインターフェイスについては、『Home Kit Framework Reference 』を参照してく
ださい。
JavaScript Coreフレームワーク
JavaScript Coreフレームワーク(JavaScriptCore.framework)は、標準的な多くのJavaScriptオブジェ
クトの、Objective-Cによるラッパークラスを実装しています。JavaScriptコードを評価し、JSONデータ
をパースするために使えます。
このフレームワークが提供するクラスについては、ヘッダファイルを参照してください。
Mobile Core Servicesフレームワーク
Mobile Core Servicesフレームワーク(MobileCoreServices.framework)は、Uniform Type Identifiers
(UTI)で使用される下位レベルのタイプを定義します。
このフレームワークで定義されているタイプについては、『Uniform Type Identifiers Reference 』を参照
してください。
Multipeer Connectivityフレームワーク
Multipeer Connectivityフレームワーク(MultipeerConnectivity.framework)は、付近にあるデバ
イスを検出し、インターネット接続を介することなく、直接通信するために使います。マルチピア
セッションを生成し、信頼性が高い順次データ伝送、実時間データ伝送を容易に実現できます。この
フレームワークを使って、付近のデバイスと通信し、データを交換する機能をアプリケーションに実
装できます。
デバイス検出やネットワークサービスの管理は、プログラムで実装するほか、UIを介して操作させる
方法も可能です。アプリケーションのUIにMCBrowserViewControllerクラスを組み込むことにより、
ピアデバイスを一覧表示し、ユーザに選択させることができます。あるいは、
MCNearbyServiceBrowserクラスを利用して、ピアデバイスを検出、管理するプログラムを実装する
ことも可能です。
このフレームワークのインターフェイスについては、『Multipeer Connectivity Framework Reference 』を
参照してください。
2014-09-17 | Copyright © 2014 Apple Inc. All Rights Reserved.
49
Core Servicesレイヤ
Core Servicesフレームワーク
NewsstandKitフレームワーク
Newsstandは雑誌や新聞を購読する「窓口」としての場を提供します。Newsstandを介して雑誌や新聞
を配布しようとする出版者は、独自のiOSアプリケーションを、NewsstandKitフレームワーク
(NewsstandKit.framework)を使って開発できます。最新号の雑誌や新聞を、バックグラウンドで
ダウンロードする機能があります。ダウンロードを始めると、その後の処理はシステムが行い、最新
号が読めるようになるとアプリケーションに通知します。
Newsstandによるダウンロード処理に用いるクラスについては、『NewsstandKitFrameworkReference 』
を参照してください。アプリケーションに通知を送る手順については、『Local and Push Notification
Programming Guide 』を参照してください。
PassKitフレームワーク
Passbookアプリケーションを使うと、「パス」を発行して業務に活用できます。クーポン、搭乗券、
催しの入場券、割引券などに相当するものです。ユーザは、iOSデバイスにパスを格納し、物理的な
紙などを使う従来の方法と同じように利用できます。PassKitフレームワーク(PassKit.framework)
にはObjective-Cのインターフェイスがあり、パスを操作する機能をアプリケーションに組み込むこと
ができます。ウェブインターフェイスやファイル形式情報と組み合わせて使い、企業独自のパスを作
成、管理できます。
パスは企業のウェブサービスを使って作成し、電子メール、Safari、独自のアプリケーションを介し
て配布することになります。パス自身は特別な形式のファイルで、暗号技術を用いたデジタル署名を
施した上で配布するようになっています。ファイル形式は、提供するサービス内容を記述できるよう
になっているので、ユーザはこれが何のために配布されたサービスなのか識別できます。また、バー
コードその他の情報を入れておけば、これを検証して、未使用(払い戻し可能)か使用済みかを判断
できます。
PassKitの詳細、およびこの機能をアプリケーションに組み込む方法については、『PassbookProgramming
Guide 』を参照してください。
Quick Lookフレームワーク
Quick Lookフレームワーク(QuickLook.framework)は、アプリケーションが直接サポートしていな
いファイルの内容をプレビューするための直接的なインターフェイスを提供します。このフレーム
ワークは主に、ネットワークからファイルをダウンロードするアプリケーション、または未知のソー
スから取得したファイルを扱うアプリケーションを対象にしています。ファイルを取得した後、この
フレームワークが提供するView Controllerを使用してユーザインターフェイス内に直接そのファイル
の内容を表示します。
このフレームワークのクラスとメソッドについては、『Quick Look Framework Reference for iOS 』を参
照してください。
2014-09-17 | Copyright © 2014 Apple Inc. All Rights Reserved.
50
Core Servicesレイヤ
Core Servicesフレームワーク
Safari Servicesフレームワーク
Safari Servicesフレームワーク(SafariServices.framework)は、Safariの履歴リストに、プログラム
でURLを追加するために使います。このフレームワークが提供するクラスについては、ヘッダファイ
ルを参照してください。
Socialフレームワーク
Socialフレームワーク(Social.framework)は、ユーザのソーシャルメディアアカウントにアクセス
するための、単純なインターフェイスです。Twitterフレームワークを補うもので、Facebook、新浪微
博など、他のソーシャルアカウントにも対応できるようになりました。アプリケーションはこのフ
レームワークを活用して、ユーザのアカウントに、状態の更新や画像を投稿できます。また、Accounts
フレームワークと連携して、シングルサインオンの機能を実現するとともに、アカウントへのアクセ
スが承認済みかどうかを確認しています。
Socialフレームワークについて詳しくは、『Social Framework Reference 』を参照してください。
StoreKitフレームワーク
StoreKitフレームワーク(StoreKit.framework)は、iOSアプリケーション内からコンテンツやサー
ビスを購入できる機能を提供します。この機能をIn-App Purchase と呼びます。たとえば、この機能を
使用すると、ユーザは追加のアプリケーション機能のロック解除ができるようになります。また、
ゲームデベロッパであれば、この機能を使用して追加のゲームレベルを提供することもできます。ど
ちらの場合も、会計面の処理、ユーザのiTunes Storeアカウントを通じてのペイメントリクエストの処
理、購入に関する情報のアプリケーションへの提供は、StoreKitフレームワークによって扱われます。
StoreKitは、会計面のトランザクションに焦点をしぼり、トランザクションが安全かつ正確に行われ
ることを保証します。アプリケーションでは、購入インターフェイスの表示や適切なコンテンツのダ
ウンロード(またはロック解除)など、会計面以外のトランザクションを処理します。この役割分担
により、デベロッパはコンテンツ購入のユーザ体験を制御できます。デベロッパは、ユーザにどんな
種類の購入インターフェイスを表示するか、またそれをいつ行うかを決定します。また、アプリケー
ションに最も適した配布メカニズムを決定します。
StoreKitフレームワークの使い方については、『In-App Purchase Programming Guide 』および『Store Kit
Framework Reference 』を参照してください。
System Configurationフレームワーク
System Configurationフレームワーク(SystemConfiguration.framework)は、デバイスのネットワー
ク構成を特定するために使用できる、到達性のためのインターフェイスを提供します。このフレーム
ワークは、Wi-Fi接続または携帯電話接続が使用中かどうか、そして特定のホストサーバがアクセス可
能かどうかを特定するために使用できます。
2014-09-17 | Copyright © 2014 Apple Inc. All Rights Reserved.
51
Core Servicesレイヤ
Core Servicesフレームワーク
このフレームワークのインターフェイスについては、『System Configuration Framework Reference 』を
参照してください。このフレームワークを使用してネットワーク情報を取得する方法の例について
は、『Reachability 』サンプルコードプロジェクトを参照してください。
WebKitフレームワーク
WebKitフレームワーク(WebKit.framework)を利用して、HTMLコンテンツをアプリケーション内に
表示できます。これに加え、基本的な編集機能をアプリケーションに組み込んで、テキストを書き換
え、属性(CSSプロパティなど)を操作できるようにすることも可能です。さらに、HTMLドキュメン
トのDOMレベルでコンテンツを作成、編集する機能もあります。たとえば、ページ内にあるリンクの
リストを抽出し、所定の規則に従って置換してからウェブビューに表示する、といったことが考えら
れます。
このフレームワークのインターフェイスについては、『WebKit Framework Reference 』を参照してくだ
さい。
2014-09-17 | Copyright © 2014 Apple Inc. All Rights Reserved.
52
Core OSレイヤ
Core OSレイヤには、ほかのほとんどのテクノロジーの土台となる下位レベルの機能が含まれていま
す。これらのテクノロジーは、アプリケーションで直接使用されていない場合でも、たいていは他の
フレームワークによって使用されています。セキュリティや外部のハードウェアアクセサリとの通信
を明示的に扱う必要のある状況では、このレイヤのフレームワークを使用する必要が生じます。
Accelerateフレームワーク
Accelerateフレームワーク(Accelerate.framework)には、DSP(デジタル信号処理)、線形代数、
画像処理の計算を実行するためのインターフェイスが含まれています。これらのインターフェイス
は、独自に作成することもできますが、このフレームワークを使用したほうがiOSデバイスのあらゆ
るハードウェア構成に対して最適化されているという利点がります。そのため、一度コードを記述す
れば、すべてのデバイス上で効率良くコードを実行できます。
Accelerateフレームワークの機能については、『AccelerateFrameworkReference 』を参照してください。
Core Bluetoothフレームワーク
Core Bluetoothフレームワーク(CoreBluetooth.framework)を導入すれば、開発者は特に、Bluetooth
Low-Energy(「LE」)アクセサリを活用できます。このフレームワークが提供するObjective-Cインター
フェイスで、次のような処理が可能です。
●
●
Bluetoothアクセサリを走査、検出し、いずれかに接続、または切断
アプリケーション内でサービスを購入、iOSデバイスを他のBluetoothデバイスの周辺機器として
使用
●
iOSデバイスからiBeacon情報を同報送信
●
Bluetooth接続の状態を保存しておき、次のアプリケーション起動時に復元
●
Bluetooth周辺機器の状況(接続の可不可)が変化したとき、その通知に応じる機能
Core Bluetoothフレームワークの使い方について詳しくは、『Core Bluetooth Programming Guide 』およ
び『Core Bluetooth Framework Reference 』を参照してください。
2014-09-17 | Copyright © 2014 Apple Inc. All Rights Reserved.
53
Core OSレイヤ
External Accessoryフレームワーク
External Accessoryフレームワーク
External Accessoryフレームワーク(ExternalAccessory.framework)は、iOSベースのデバイスに接
続されているハードウェアアクセサリとの通信のためのサポートを提供します。アクセサリは、デバ
イスの30ピンDockコネクタを使用して接続するか、Bluetoothを使用してワイヤレスに接続できます。
External Accessoryフレームワークは、利用可能な個々のアクセサリについての情報を取得し、通信セッ
ションを初期化する方法を提供します。その後、サポートされているコマンドのいずれかを使用し
て、アクセサリを直接自由に操作できます。
このフレームワークの使用方法の詳細については、『External Accessory Programming Topics 』を参照し
てください。iOSデバイス向けアクセサリの開発については、Apple Developerウェブサイトを参照し
てください。
Generic Security Servicesフレームワーク
Generic Security Servicesフレームワーク(GSS.framework)を使えば、セキュリティ関係の標準的な
サービス群をiOSアプリケーションに組み込むことができます。このフレームワークの基本的なイン
ターフェイス仕様は、IETF RFC 2743およびRFC 4401に記述されています。iOSには、標準的なインター
フェイスに加え、規格では指定されていないけれども多くのアプリケーションで必要な、証明書を管
理するための機能がいくつか追加されています。
GSSフレームワークのインターフェイスについては、ヘッダファイルを参照してください。
Local Authenticationフレームワーク
Local Authenticationフレームワーク(LocalAuthentication.framework) を組み込むと、Touch IDを
使ってユーザを認証できます。(たとえ一部だけにせよ)情報にアクセスする際、セキュリティに配
慮しなければならないアプリケーションは少なくありません。この場合、ユーザの認証処理が必要に
なるでしょう。このフレームワークを組み込むと、アプリケーションの性質に応じ、必要が生じた時
点で認証を求める警告を表示できます。ユーザからの応答後、認証が成功したか否かに応じて対処す
ることになります。
このフレームワークのインターフェイスについては、『Local Authentication Framework Reference 』を
参照してください。
2014-09-17 | Copyright © 2014 Apple Inc. All Rights Reserved.
54
Core OSレイヤ
Network Extensionフレームワーク
Network Extensionフレームワーク
Network Extensionフレームワーク(NetworkExtension.framework)には、VPN(Virtual Private Network、
仮想専用網)上にトンネルを開設し、制御する機能があります。このフレームワークを使って、ま
ず、VPNの設定をおこないます。次に、ユーザの操作に応じてVPNトンネルを開設するか、または所
定のイベントが発生したときに開設されるよう、適当な規則を設定します。
このフレームワークのインターフェイスについては、ヘッダファイルを参照してください。
Securityフレームワーク
内蔵のセキュリティ機能に加えてiOSでは、アプリケーションで管理するデータのセキュリティを保
証できる、明示的なSecurityフレームワーク(Security.framework)も提供します。このフレーム
ワークは、証明書、公開鍵と非公開鍵、および信用ポリシーを管理するインターフェイスを提供しま
す。暗号技術的にセキュアな擬似乱数の生成をサポートします。また、キーチェーンへの証明書や暗
号鍵の保存もサポートします。キーチェーンは、機密性の高いユーザデータのためのセキュリティ保
護されたリポジトリです。
CommonCryptoライブラリは、対称暗号化、HMAC(Hash-based Message Authentication Codes)、およ
びダイジェストをサポートします。ダイジェスト機能は、OpenSSLライブラリに標準的に含まれる機
能と本質的に互換性のある関数を提供します。ただし、OpenSSLライブラリはiOSでは利用できませ
ん。
作成した複数のアプリケーション間で、キーチェーン項目を共有できるようになりました。項目を共
有すると、同じスイートのアプリケーションをスムーズに相互運用できます。 たとえば、この機能
を使用して、複数のユーザーパスワードやその他の要素(つまり、共有しなければ、個々のアプリ
ケーションから別々にユーザへの指示をリクエストされる可能性のあるような要素)を共有できま
す。アプリケーション間でデータを共有するには、各アプリケーションのXcodeプロジェクトを正し
いエンタイトルメントで設定する必要があります。
Securityフレームワークに関連した関数や機能の詳細については、『Security Framework Reference 』を
参照してください。キーチェーンにアクセスする方法については、『Keychain Services Programming
Guide 』を参照してください。Xcodeプロジェクトでのエンタイトルメントの設定の詳細については、
『App Distribution Guide 』の「Adding Capabilities」を参照してください。設定できるエンタイトルメ
ントの詳細については、『Keychain Services Reference 』のSecItemAdd関数の説明を参照してくださ
い。
2014-09-17 | Copyright © 2014 Apple Inc. All Rights Reserved.
55
Core OSレイヤ
System
System
システムレベルには、カーネル環境、ドライバ、オペレーティングシステムの下位レベルUNIXイン
ターフェイスが含まれています。カーネル自体はMachを基盤にしており、オペレーティングシステ
ムのすべての側面に関与しています。また、仮想メモリシステム、スレッド、ファイルシステム、
ネットワーク、およびプロセス間通信を管理します。このレイヤのドライバは、利用可能なハード
ウェアとシステムフレームワークとの間のインターフェイスも提供します。セキュリティを確保する
目的で、カーネルおよびドライバへのアクセスは、一部のシステムフレームワークとアプリケーショ
ンに限定されています。
iOSは、オペレーティングシステムの下位レベルの多くの機能にアクセスするためのインターフェイ
スを提供します。アプリケーションは、LibSystemライブラリを通してこれらの機能にアクセスしま
す。これらのインターフェイスはC言語ベースであり、以下をサポートしています。
●
並行性(POSIXスレッド、Grand Central Dispatch)
●
ネットワーク(BSDソケット)
●
ファイルシステムアクセス
●
標準I/O
●
BonjourサービスおよびDNSサービス
●
ロケール情報
●
メモリ割り当て
●
数学的演算処理
多くのCore OSテクノロジー用のヘッダファイルは<iOS_SDK> /usr/include/ディレクトリにありま
す。<iOS_SDK> は、Xcodeのインストールディレクトリ内のターゲットSDKへのパスです。この技術に
関連する関数については、『iOS Manual Pages 』を参照してください。
64ビット対応
iOSは当初、実行ファイルが32ビットアーキテクチャのデバイスで動作すると想定して設計されまし
た。しかしiOS 7では、64ビットアーキテクチャで動作する実行ファイルのコンパイル、リンク、デ
バッグも可能になっています。システムライブラリやフレームワークはすべて64ビット対応であり、
32ビット、64ビットの、どちらのアプリケーションでも使えます。64ビット用にコンパイルしたアプ
リケーションは、64ビットモード向けのプロセッサ資源を活用できるため、従来よりも高速になりま
す。
2014-09-17 | Copyright © 2014 Apple Inc. All Rights Reserved.
56
Core OSレイヤ
64ビット対応
iOSはOS Xその他のUNIXシステムで使われているLP64モデルを採用しているので、移植の手間も最小
限で済みます。iOSの64ビット用実行時ルーチンや、64ビットアプリケーションの開発方法について
は、『64-bit Transition Guide for Cocoa Touch 』を参照してください。
2014-09-17 | Copyright © 2014 Apple Inc. All Rights Reserved.
57
iOSのフレームワーク
この付録では、iOSの各種フレームワークを紹介します。これらのフレームワークは、iOSプラット
フォーム用にソフトウェアを記述するために必要なインターフェイスを提供します。該当する場合
は、フレームワークのクラス、メソッド、関数、型、または定数で使われる主要なプレフィックスを
掲載しました。独自のコードには、ここに指定されているプレフィックスの使用は避ける必要があり
ます。
デバイスのフレームワーク
表 A-1に、iOSベースのデバイスで利用可能なフレームワークを示します。これらのフレームワーク
は、
<Xcode.app> Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/<iOS_SDK> /System/Library/Frameworks
ディレクトリにあります。<Xcode.app> はXcodeが置かれているパス、<iOS_SDK> は、ターゲットに
なっている特定のSDKバージョンを表します。「最初のリリース」の欄は、このフレームワークが最
初に導入されたiOSリリースです。
表 A-1
デバイスのフレームワーク
変数名
最初
のリ
リー
ス
プレ
フィック
ス
解説
Accelerate.framework
4.0
cblas、
vDSP
高速化された数学関数およびDSP関数
が含まれています(“Accelerateフレー
ムワーク” (53 ページ)を参照)。
Accounts.framework
5.0
AC
ユーザのシステムアカウントへのアク
セスを管理するためのインターフェイ
スが含まれています(“Accountsフレー
ムワーク” (42 ページ)を参照)。
AddressBook.framework
2.0
AB
ユーザの連絡先データベースに直接ア
クセスするための関数が含まれていま
す(“Address Bookフレームワー
ク” (42 ページ)を参照)。
2014-09-17 | Copyright © 2014 Apple Inc. All Rights Reserved.
58
iOSのフレームワーク
デバイスのフレームワーク
変数名
最初
のリ
リー
ス
プレ
フィック
ス
解説
AddressBookUI.framework
2.0
AB
システム定義のPeopleピッカーと編集
インターフェイスを表示するためのク
ラスが含まれています(“Address Book
UIフレームワーク” (19 ページ)を参
照)。
AdSupport.framework
6.0
AS
広告目的で、有用な情報を収集分析す
るためのクラスがあります(“Ad
Supportフレームワーク” (43 ページ)
を参照)。
AssetsLibrary.framework
4.0
AL
ユーザの写真やビデオにアクセスする
ためのクラスが含まれています
(“Assets Libraryフレームワー
ク” (28 ページ)を参照)。
AudioToolbox.framework
2.0
AU、
Audio
オーディオストリームデータを扱った
り、オーディオの再生と録音のための
インターフェイスが含まれています
(“Core Audio” (30 ページ)を参
照)。
AudioUnit.framework
2.0
AU、
Audio
オーディオユニットのロードと使用の
ためのインターフェイスが含まれてい
ます(“Core Audio” (30 ページ)を参
照)。
AVFoundation.framework
2.2
AV
オーディオとビデオの再生と録音のた
めのObjective-Cインターフェイスが含
まれています(“AV Foundationフレー
ムワーク” (29 ページ)を参照)。
AVKit.framework
8.0
AV
オーディオとビデオの再生と録音のた
めのObjective-Cインターフェイスが含
まれています“AVKitフレームワー
ク” (29 ページ)を参照。
CFNetwork.framework
2.0
CF
Wi-Fi無線と携帯電話無線によってネッ
トワークにアクセスするためのイン
ターフェイスが含まれています
(“CFNetworkフレームワー
ク” (43 ページ)を参照)。
2014-09-17 | Copyright © 2014 Apple Inc. All Rights Reserved.
59
iOSのフレームワーク
デバイスのフレームワーク
変数名
最初
のリ
リー
ス
プレ
フィック
ス
解説
CloudKit.framework
8.0
CK
iCloudデータを取得、保存する、
Objective-Cのインターフェイスが含ま
れています(“CloudKitフレームワー
ク” (44 ページ)を参照)。
CoreAudio.framework
2.0
Audio
Core Audio全体で使われるオーディオ
データタイプを提供します(“Core
Audio” (30 ページ)を参照)。
CoreAudioKit.framework
8.0
CA
Core Audio全体で使われるオーディオ
データタイプを提供します
(“CoreAudioKitフレームワー
ク” (31 ページ)を参照)。
CoreBluetooth.framework
5.0
CB
省電力Bluetoothハードウェアへのアク
セスを提供します。(“Core Bluetooth
フレームワーク” (53 ページ)を参
照)。
CoreData.framework
3.0
NS
アプリケーションのデータモデルを管
理するためのインターフェイスが含ま
れています(“Core Dataフレームワー
ク” (44 ページ)を参照)。
CoreFoundation.framework
2.0
CF
基本ソフトウェアサービスを提供しま
す(一般的なデータ型の抽象化、文字
列ユーティリティ、コレクションユー
ティリティ、リソース管理、環境設定
など)(“Core Foundationフレームワー
ク” (45 ページ)を参照)。
CoreGraphics.framework
2.0
CG
Quartz 2D用のインターフェイスが含ま
れています(“Core Graphicsフレーム
ワーク” (31 ページ)を参照)。
CoreImage.framework
5.0
CI
ビデオ画像、静止画像を操作するため
のインターフェイスが含まれていま
す。(“Core Imageフレームワー
ク” (31 ページ)を参照)。
2014-09-17 | Copyright © 2014 Apple Inc. All Rights Reserved.
60
iOSのフレームワーク
デバイスのフレームワーク
変数名
最初
のリ
リー
ス
プレ
フィック
ス
解説
CoreLocation.framework
2.0
CL
ユーザの位置を決定するためのイン
ターフェイスが含まれています。
(“Core Locationフレームワー
ク” (45 ページ)を参照)。
CoreMedia.framework
4.0
CM
オーディオおよびビデオを操作する下
位レベルのルーチンが含まれていま
す。(“Core Mediaフレームワー
ク” (46 ページ)を参照)。
CoreMIDI.framework
4.2
MIDI
MIDIデータを処理する下位レベルの
ルーチンが含まれています(“Core
Audio” (30 ページ)を参照)。
CoreMotion.framework
4.0
CM
加速度計およびジャイロデータにアク
セスするためのインターフェイスを含
まれています(“Core Motionフレーム
ワーク” (46 ページ)を参照)。
CoreTelephony.framework
4.0
CT
電話関連の情報にアクセスするための
ルーチンが含まれています(“Core
Telephonyフレームワーク” (46 ペー
ジ)を参照)。
CoreText.framework
3.2
CT
テキストのレイアウトとレンダリング
のエンジンが含まれています(“Core
Textフレームワーク” (31 ページ)を
参照)。
CoreVideo.framework
4.0
CV
オーディオおよびビデオを操作する下
位レベルのルーチンが含まれていま
す。このフレームワークを直接使用し
ないでください。
EventKit.framework
4.0
EK
ユーザのカレンダーイベントデータに
アクセスするためのインターフェイス
が含まれています(“EventKitフレーム
ワーク” (47 ページ)を参照)。
EventKitUI.framework
4.0
EK
標準のシステムカレンダーインター
フェイスを表示するクラスが含まれて
います(“EventKit UIフレームワー
ク” (19 ページ)を参照)。
2014-09-17 | Copyright © 2014 Apple Inc. All Rights Reserved.
61
iOSのフレームワーク
デバイスのフレームワーク
変数名
最初
のリ
リー
ス
プレ
フィック
ス
解説
ExternalAccessory.framework
3.0
EA
接続されているハードウェアアクセサ
リと通信するためのインターフェイス
が含まれています(“External Accessory
フレームワーク” (54 ページ)を参
照)。
Foundation.framework
2.0
NS
文字列、コレクション、およびその他
の下位レベルデータ型を管理するため
のインターフェイスが含まれています
(“Foundationフレームワー
ク” (47 ページ)を参照)。
GameController.framework
7.0
GC
ゲーム関係のハードウェアと通信する
ためのインターフェイスが含まれてい
ます(“Game Controllerフレームワー
ク” (32 ページ)を参照)。
GameKit.framework
3.0
GK
ピアツーピア接続を管理するためのイ
ンターフェイスが含まれています
(“GameKitフレームワーク” (19 ペー
ジ)を参照)。
GLKit.framework
5.0
GLK
複雑なOpenGL ESアプリケーションの
構築に用いる、Objective-Cのユーティ
リティクラスが含まれています。
(“GLKitフレームワーク” (32 ペー
ジ)を参照)。
GSS.framework
5.0
gss
セキュリティ関係の標準的なサービス
群を提供します。
HealthKit.framework
8.0
HK
健康管理に関する情報の保存手段を提
供します(“HealthKitフレームワー
ク” (48 ページ)を参照)。
HomeKit.framework
8.0
HM
自宅にあるデバイスの通信サービスを
提供します(“HomeKitフレームワー
ク” (48 ページ)を参照)。
2014-09-17 | Copyright © 2014 Apple Inc. All Rights Reserved.
62
iOSのフレームワーク
デバイスのフレームワーク
変数名
最初
のリ
リー
ス
プレ
フィック
ス
解説
iAd.framework
4.0
AD
アプリケーション内に広告を表示する
ためのクラスが含まれています(“iAd
フレームワーク” (20 ページ)を参
照)。
ImageIO.framework
4.0
CG
画像データの読み取りおよび作成のた
めのクラスが含まれています(“Image
I/Oフレームワーク” (33 ページ)を
参照)。
IOKit.framework
2.0
特にな
し
デバイスによって使用されるインター
フェイスが含まれています。このフ
レームワークを直接使用しないでくだ
さい。
JavaScriptCore.framework
7.0
JS
JavaScriptのコードを評価し、JSONデー
タをパースするために使う、
Objective-Cのラッパークラスがありま
す(“JavaScript Coreフレームワー
ク” (49 ページ)を参照)。
LocalAuthentication.framework
8.0
LA
Touch IDによるユーザ認証機能を提供
します(“Local Authenticationフレーム
ワーク” (54 ページ)を参照)。
MapKit.framework
3.0
MK
アプリケーションへのマップインター
フェイスの埋め込みと、逆ジオコーダ
座標のためのクラスが含まれています
(“MapKitフレームワーク” (20 ペー
ジ)を参照)。
MediaAccessibility.framework
7.0
MA
メディアファイルに埋め込まれたク
ローズドキャプションを表示します
(“Media Accessibilityフレームワー
ク” (33 ページ)を参照)。
MediaPlayer.framework
2.0
MP
フルスクリーンビデオを再生するため
のインターフェイスが含まれています
(“Media Playerフレームワー
ク” (33 ページ)を参照)。
2014-09-17 | Copyright © 2014 Apple Inc. All Rights Reserved.
63
iOSのフレームワーク
デバイスのフレームワーク
変数名
最初
のリ
リー
ス
プレ
フィック
ス
解説
MediaToolbox.framework
6.0
MT
オーディオコンテンツを再生するため
のインターフェイスが含まれていま
す。
MessageUI.framework
3.0
MF
電子メールメッセージの作成とキュー
イングのためのインターフェイスが含
まれています(“Message UIフレーム
ワーク” (21 ページ)を参照)。
Metal.framework
8.0
MTL
オーバーヘッドが小さいグラフィック
ス描画エンジンを提供します(“Metal
フレームワーク” (34 ページ)を参
照)。
MobileCoreServices.framework
3.0
UT
システムによってサポートされるUTI
(Uniform Type Identifier)を定義しま
す(“Mobile Core Servicesフレームワー
ク” (49 ページ)を参照)。
MultipeerConnectivity.framework
7.0
MC
デバイス間のピアツーピアネットワー
クを実装するためのインターフェイス
を提供します(“Multipeer Connectivity
フレームワーク” (49 ページ)を参
照)。
NetworkExtension.framework
8.0
NE
VPN機能の設定や制御に用いるイン
ターフェイスを提供します(“Network
Extensionフレームワーク” (55 ペー
ジ)を参照)。
NewsstandKit.framework
5.0
NK
雑誌や新聞をバックグラウンドでダウ
ンロードするためのインターフェイス
を提供します。(“NewsstandKitフレー
ムワーク” (50 ページ)を参照)。
NotificationCenter.framework
8.0
NK
通知センターウィジェットを実装する
ためのインターフェイスを提供します
(“Notification Centerフレームワー
ク” (21 ページ)を参照)。
2014-09-17 | Copyright © 2014 Apple Inc. All Rights Reserved.
64
iOSのフレームワーク
デバイスのフレームワーク
変数名
最初
のリ
リー
ス
プレ
フィック
ス
解説
OpenAL.framework
2.0
AL
OpenAL(クロスプラットフォームの
定位オーディオライブラリ)用のイン
ターフェイスが含まれています。
(“OpenALフレームワーク” (34 ペー
ジ)を参照)。
OpenGLES.framework
2.0
EAGL、
GL
OpenGL ES(クロスプラットフォーム
のOpenGL 2Dおよび3Dグラフィックス
レンダリングライブラリの組み込み
版)用のインターフェイスが含まれて
います(“OpenGL ESフレームワー
ク” (35 ページ)を参照)。
PassKit.framework
6.0
PK
入場券、搭乗券、会員カードなどをデ
ジタル技術により再現した、「パス」
を作成するためのインターフェイスが
含まれています(“PassKitフレームワー
ク” (50 ページ)を参照)。
Photos.framework
8.0
PH
写真やビデオにアクセスし、操作する
ためのインターフェイスを提供します
(“Photosフレームワーク” (35 ペー
ジ)を参照)。
PhotosUI.framework
8.0
PH
写真やビデオを操作する、アプリケー
ション拡張機能を開発するためのイン
ターフェイスを備えています(“Photos
UIフレームワーク” (35 ページ)を参
照)。
PushKit.framework
8.0
PK
VoIPアプリケーションをデバイスに登
録する手段を提供します(“PushKitフ
レームワーク” (21 ページ)を参
照)。
QuartzCore.framework
2.0
CA
Core Animationインターフェイスが含
まれています(“Quartz Coreフレーム
ワーク” (35 ページ)を参照)。
2014-09-17 | Copyright © 2014 Apple Inc. All Rights Reserved.
65
iOSのフレームワーク
デバイスのフレームワーク
変数名
最初
のリ
リー
ス
プレ
フィック
ス
解説
QuickLook.framework
4.0
QL
ファイルをプレビューするためのイン
ターフェイスが含まれています
(“Quick Lookフレームワー
ク” (50 ページ)を参照)。
SafariServices.framework
7.0
SS
Safariの履歴リスト項目を作成できま
す(“Safari Servicesフレームワー
ク” (51 ページ)を参照)。
SceneKit.framework
8.0
SCN
3Dグラフィックスを生成するためのイ
ンターフェイスを提供します
(“SceneKitフレームワーク” (36 ペー
ジ)を参照)。
Security.framework
2.0
CSSM、
Sec
証明書、公開鍵と非公開鍵、および信
用ポリシーを管理するインターフェイ
スが含まれています(“Securityフレー
ムワーク” (55 ページ)を参照)。
Social.framework
6.0
SL
ソーシャルメディアアカウントと相互
にやり取りするためのインターフェイ
スが含まれています(“Socialフレーム
ワーク” (51 ページ)を参照)。
SpriteKit.framework
7.0
SK
スプライトベースのアニメーションを
作成し、レンダリングするための機能
です(“SpriteKitフレームワー
ク” (36 ページ)を参照)。
StoreKit.framework
3.0
SK
In-App Purchaseに関連付けられた会計
処理を扱うためのインターフェイスが
含まれています(“StoreKitフレーム
ワーク” (51 ページ)を参照)。
SystemConfiguration.framework
2.0
SC
デバイスのネットワーク設定を判別す
るインターフェイスが含まれています
(“System Configurationフレームワー
ク” (51 ページ)を参照)。
2014-09-17 | Copyright © 2014 Apple Inc. All Rights Reserved.
66
iOSのフレームワーク
シミュレータのフレームワーク
変数名
最初
のリ
リー
ス
プレ
フィック
ス
解説
Twitter.framework
5.0
TW
Twitterサービスを介してツイートを送
るためのインターフェイスが含まれて
います。(“Twitterフレームワー
ク” (21 ページ)を参照)。
UIKit.framework
2.0
UI
iOSアプリケーションユーザインター
フェイスレイヤ用のクラスとメソッド
が含まれています(“UIKitフレームワー
ク” (21 ページ)を参照)。
VideoToolbox.framework
6.0
特にな
し
デバイスによって使用されるインター
フェイスが含まれています。このフ
レームワークを直接インクルードしな
いでください。
WebKit.framework
8.0
WK
ウェブコンテンツをアプリケーション
に取り込むための機能を提供します
(“WebKitフレームワーク” (52 ペー
ジ)を参照)。
シミュレータのフレームワーク
コードを記述しているときは、常にデバイスのフレームワークをターゲットにする必要があります
が、テスト中は特別にシミュレータ用にコードをコンパイルする必要があります。デバイスとシミュ
レータで利用可能なフレームワークはほとんど同じですが、少しだけ違いがあります。たとえば、シ
ミュレータは、自身の実装の一部に OS Xのフレームワークをいくつか使用しています。さらに、デバ
イスのフレームワークとシミュレータのフレームワークで利用可能な同じインターフェイスでも、シ
ステムの制約によって多少異なる場合があります。
デバイスとiOSシミュレータの動作の違いについては、『iOS Simulator User Guide 』に一覧が載ってい
ます。
2014-09-17 | Copyright © 2014 Apple Inc. All Rights Reserved.
67
iOSのフレームワーク
システムライブラリ
システムライブラリ
Core OSおよびCore Servicesレベルの特殊なライブラリの中には、フレームワークとしてパッケージ化
されていないものもあります。その代わりに、iOSではシステムの/usr/libディレクトリにたくさん
のダイナミックライブラリが含まれています。共有ダイナミックライブラリは、.dylib拡張子で識
別されます。これらのライブラリのヘッダファイルは、/usr/includeディレクトリにあります。
iOS SDKの各バージョンには、この共有ダイナミックライブラリのローカルコピーが含まれており、
これらはシステムと一緒にインストールされます。これらのコピーは、Xcodeプロジェクトからリン
クできるように開発用のシステムにインストールされます。特定のバージョンのiOS用のライブラリ
のリストを調べるには、
<Xcode.app> /Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/<iOS_SDK> /usr/lib
を参照してください。<Xcode.app> はXcodeが置かれているパス、<iOS_SDK> は、ターゲットになって
いる特定のSDKバージョンを表します。たとえば、iOS 8.0 SDK用の共有ライブラリ
は/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS8.0.sdk/usr/lib
ディレクトリにあります。それに対応するヘッダ
は/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS8.0.sdk/usr/include
にあります。
iOSでは、シンボリックリンクを使用してほとんどのライブラリの最新バージョンを参照できます。
共有ダイナミックライブラリにリンクする場合は、特定のバージョンのライブラリへのリンクではな
くこのシンボリックリンクを使用します。ライブラリのバージョンは、iOSの今後のバージョンで変
更される可能性があります。したがって、ソフトウェアを特定のバージョンにリンクした場合、その
バージョンがユーザのシステム上で常に利用できるとは限りません。
2014-09-17 | Copyright © 2014 Apple Inc. All Rights Reserved.
68
書類の改訂履歴
この表は「iOSテクノロジーの概要 」の改訂履歴です。
日付
メモ
2014-09-17
iOS 8.0で導入された機能についての情報を追加しました。
2013-09-18
iOS 7で導入されたテクノロジーを追加しました。
2012-09-19
iOS 6に導入された、新しいフレームワークや技術に関する情報を追
加しました。
2011-10-12
iOS 5で導入されたテクノロジーを追加しました。
2010-11-15
iOS 4.1およびiOS 4.2の新しい機能を反映するようにドキュメント全
体を更新しました。
2010-07-08
『iPhone OSテクノロジーの概要』からドキュメント名を変更しま
した。
2010-06-04
iOS 4.0の機能を反映するように更新しました。
2009-10-19
付録にリファレンスドキュメントへのリンクを追加しました。
2009-05-27
iOS 3.0用に更新しました。
2008-10-15
iOSとそのテクノロジーについて紹介した新規ドキュメント。
2014-09-17 | Copyright © 2014 Apple Inc. All Rights Reserved.
69
Apple Inc.
Copyright © 2014 Apple Inc.
All rights reserved.
本書の一部あるいは全部を Apple Inc. から書
面による事前の許諾を得ることなく複写複製
(コピー)することを禁じます。また、製品
に付属のソフトウェアは同梱のソフトウェア
使用許諾契約書に記載の条件のもとでお使い
ください。書類を個人で使用する場合に限り
1 台のコンピュータに保管すること、またそ
の書類にアップルの著作権表示が含まれる限
り、個人的な利用を目的に書類を複製するこ
とを認めます。
Apple ロゴは、米国その他の国で登録された
Apple Inc. の商標です。
キーボードから入力可能な Apple ロゴについ
ても、これを Apple Inc. からの書面による事
前の許諾なしに商業的な目的で使用すると、
連邦および州の商標法および不正競争防止法
違反となる場合があります。
本書に記載されているテクノロジーに関して
は、明示または黙示を問わず、使用を許諾し
ません。 本書に記載されているテクノロジー
に関するすべての知的財産権は、Apple Inc.
が保有しています。 本書は、Apple ブランド
のコンピュータ用のアプリケーション開発に
使用を限定します。
本書には正確な情報を記載するように努めま
した。 ただし、誤植や制作上の誤記がないこ
とを保証するものではありません。
Apple Inc.
1 Infinite Loop
Cupertino, CA 95014
U.S.A.
Apple Japan
〒106-6140 東京都港区六本木
6丁目10番1号
六本木ヒルズ
http://www.apple.com/jp/
Offline copy. Trademarks go here.
Apple Inc. は本書の内容を確認しておりますが、本
書に関して、明示的であるか黙示的であるかを問わ
ず、その品質、正確さ、市場性、または特定の目的
に対する適合性に関して何らかの保証または表明を
行うものではありません。その結果、本書は「現状
有姿のまま」提供され、本書の品質または正確さに
関連して発生するすべての損害は、購入者であるお
客様が負うものとします。
いかなる場合も、Apple Inc. は、本書の内容に含ま
れる瑕疵または不正確さによって生じる直接的、間
接的、特殊的、偶発的、または結果的損害に対する
賠償請求には一切応じません。そのような損害の可
能性があらかじめ指摘されている場合においても同
様です。
上記の損害に対する保証および救済は、口頭や書面
によるか、または明示的や黙示的であるかを問わ
ず、唯一のものであり、その他一切の保証にかわる
ものです。 Apple Inc. の販売店、代理店、または従
業員には、この保証に関する規定に何らかの変更、
拡張、または追加を加える権限は与えられていませ
ん。
一部の国や地域では、黙示あるいは偶発的または結
果的損害に対する賠償の免責または制限が認められ
ていないため、上記の制限や免責がお客様に適用さ
れない場合があります。 この保証はお客様に特定
の法的権利を与え、地域によってはその他の権利が
お客様に与えられる場合もあります。