iosテクノロジーの概要 (tp40007898 0.0.0)

70
iOSテクノロジーの概要

Upload: hoangngoc

Post on 28-Jan-2017

220 views

Category:

Documents


1 download

TRANSCRIPT

iOSテクノロジーの概要

目次

iOSに組み込まれたさまざまな技術について 7はじめに 8

iOSのアーキテクチャは階層化されている 8iOSの技術はフレームワークというパッケージとして提供される 9Developer Libraryを自由に活用して開発できる 9

この文書の使い方 9関連項目 10

Cocoa Touchレイヤ 11上位レベルの機能 11アプリケーション拡張機能 11Handoff 12ドキュメントピッカー 13AirDrop 13TextKit 14UIKit Dynamics 14マルチタスク 15Auto Layout 15ストーリーボード 16UI状態の保存 16Apple Push Notificationサービス 17ローカル通知 17Gesture Recognizer 17標準のシステムビューコントローラ 18

Cocoa Touchフレームワーク 19Address Book UIフレームワーク 19EventKit UIフレームワーク 19GameKitフレームワーク 19iAdフレームワーク 20MapKitフレームワーク 20Message UIフレームワーク 21Notification Centerフレームワーク 21PushKitフレームワーク 21Twitterフレームワーク 21

2014-09-17 | Copyright © 2014 Apple Inc. All Rights Reserved.

2

UIKitフレームワーク 21

Mediaレイヤ 23グラフィックステクノロジー 23オーディオテクノロジー 25ビデオテクノロジー 26AirPlay 27Mediaレイヤのフレームワーク 28

Assets Libraryフレームワーク 28AV Foundationフレームワーク 29AVKitフレームワーク 29Core Audio 30CoreAudioKitフレームワーク 31Core Graphicsフレームワーク 31Core Imageフレームワーク 31Core Textフレームワーク 31Core Videoフレームワーク 32Game Controllerフレームワーク 32GLKitフレームワーク 32Image I/Oフレームワーク 33Media Accessibilityフレームワーク 33Media Playerフレームワーク 33Metalフレームワーク 34OpenALフレームワーク 34OpenGL ESフレームワーク 35Photosフレームワーク 35Photos UIフレームワーク 35Quartz Coreフレームワーク 35SceneKitフレームワーク 36SpriteKitフレームワーク 36

Core Servicesレイヤ 38上位レベルの機能 38ピアツーピアサービス 38iCloudストレージ 38ブロックオブジェクト 39データ保護 39ファイル共有のサポート 40Grand Central Dispatch 41In-App Purchase 41

2014-09-17 | Copyright © 2014 Apple Inc. All Rights Reserved.

3

目次

SQLite 41XMLサポート 42

Core Servicesフレームワーク 42Accountsフレームワーク 42Address Bookフレームワーク 42Ad Supportフレームワーク 43CFNetworkフレームワーク 43CloudKitフレームワーク 44Core Dataフレームワーク 44Core Foundationフレームワーク 45Core Locationフレームワーク 45Core Mediaフレームワーク 46Core Motionフレームワーク 46Core Telephonyフレームワーク 46EventKitフレームワーク 47Foundationフレームワーク 47HealthKitフレームワーク 48HomeKitフレームワーク 48JavaScript Coreフレームワーク 49Mobile Core Servicesフレームワーク 49Multipeer Connectivityフレームワーク 49NewsstandKitフレームワーク 50PassKitフレームワーク 50Quick Lookフレームワーク 50Safari Servicesフレームワーク 51Socialフレームワーク 51StoreKitフレームワーク 51System Configurationフレームワーク 51WebKitフレームワーク 52

Core OSレイヤ 53Accelerateフレームワーク 53Core Bluetoothフレームワーク 53External Accessoryフレームワーク 54Generic Security Servicesフレームワーク 54Local Authenticationフレームワーク 54Network Extensionフレームワーク 55Securityフレームワーク 55System 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 iOSのグラフィックステクノロジー 23表 2-2 iOSのオーディオテクノロジー 25表 2-3 iOSのビデオテクノロジー 26表 2-4 Core Audioフレームワーク 30

iOSのフレームワーク 58表 A-1 デバイスのフレームワーク 58

2014-09-17 | Copyright © 2014 Apple Inc. All Rights Reserved.

6

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のレイヤ

iOSに組み込まれたさまざまな技術についてはじめに

2014-09-17 | Copyright © 2014 Apple Inc. All Rights Reserved.

8

コードを書くときには、下位レベルのフレームワークよりも、できる限り上位レベルのフレームワークを選ぶようにしてください。上位レベルのフレームワークは、下位レベルの構成体のオブジェクト指向の抽象化を提供するために用意されています。一般にこれらの抽象化により、記述するコード量が減り、ソケットやスレッドなどの複雑になりがちな機能がカプセル化されるため、コードの記述が非常に楽になります。下位レベルのフレームワークやテクノロジーも、上位レベルのフレームワークが公開していないものであれば、使うことがあります。

関連する章: “Cocoa Touchレイヤ” (11 ページ)、“Mediaレイヤ” (23 ページ)、“CoreServicesレイヤ” (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ソフトウェアの各テクノロジーについて、使用する理由やどのような場合に使用するかを学ぶ

iOSに組み込まれたさまざまな技術についてこの文書の使い方

2014-09-17 | Copyright © 2014 Apple Inc. All Rights Reserved.

9

● 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で入手してください。

iOSに組み込まれたさまざまな技術について関連項目

2014-09-17 | Copyright © 2014 Apple Inc. All Rights Reserved.

10

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』を参照してください。

HandoffHandoffはOS XとiOSの両方に備わっている機能で、従来にも増して、デバイスの違いを意識せずに済むようにする技術です。あるデバイス上で作業を始めた後、別のデバイスに切り替えても、そのまま作業を続行できます。たとえば、Mac上のSafariで長い記事を閲覧している、という状況を考えてみましょう。このとき、iOSデバイスを手に取り、同じApple IDでiCloudにサインインすれば、iOS上のSafariには自動的に同じウェブページが開き、同じ箇所までスクロールした状態になるのです。Handoffには、このようなデバイスの切り替えを、できる限りシームレスにおこなえるようにする働きがあります。

Handoffの機能を活かすためには、FoundationのあるAPIを呼び出す必要があります。アプリケーション上で進行中の各アクティビティは、「ユーザアクティビティ」オブジェクトで表されますが、ここには別のデバイスで続行するために必要なデータが収容されています。ユーザが別のデバイスでアクティビティを続行しようとすると、このオブジェクトが当該デバイスに送信されます。各「ユーザアクティビティ」オブジェクトには対応するデリゲートオブジェクトがあって、別のデバイスに送信される直前など適切な時点で起動され、状態を更新するようになっています。

継続するために必要なデータが、「ユーザアクティビティ」オブジェクトの仕組みでは簡単に送信できない場合、切り替え先アプリケーションが、切り替え元に向けてストリームを開設することがあります。ドキュメントベースのアプリケーションは、iCloudベースのドキュメントが捜査対象であれば、はじめからアクティビティを継続する機能が備わっています。

Handoffの機能を組み込む手順について詳しくは、『Handoff Programming Guide』を参照してください。

Cocoa Touchレイヤ上位レベルの機能

2014-09-17 | Copyright © 2014 Apple Inc. All Rights Reserved.

12

ドキュメントピッカードキュメントピッカーのビューコントローラ(UIDocumentPickerViewController)を組み込むと、アプリケーションのサンドボックス外にあるファイルにアクセスできるようになります。簡単な仕組みで、アプリケーション間でドキュメントを共有できるようになっています。複数のアプリケーションで同じドキュメントを編集するという、より複雑なワークフローにも対応できます。

ドキュメントピッカーを使えば、さまざまなドキュメントプロバイダが管理するファイルにアクセスできます。たとえば「iCloud」ドキュメントプロバイダを使うと、他のアプリケーションのiCloudコンテナに保存されているドキュメントにアクセスできます。Apple以外の開発者も、「Storage Provider」拡張機能を用いる独自のドキュメントプロバイダを開発しています。

ドキュメントピッカーの使い方について詳しくは、『iOS Document Picker Programming Guide』を参照してください。

AirDropAirDropを使えば、写真、文書、URLその他、各種のデータを、付近のデバイスと共有できます。AirDropを使ってファイルを他のiOSデバイスに送信する機能が、UIActivityViewControllerクラスに組み込まれます。このクラスで、指定したコンテンツを、さまざまな方法で共有できます。まだ使っていないのであれば、アプリケーションを開発する際、そのインターフェイスに加えることを検討してください。

AirDropで送信されてきたファイルを受け取るためには、アプリケーションに次の処理を組み込む必要があります。

● 受け取り可能な文書の型をXcodeで宣言すること(XcodeはアプリケーションのInfo.plistファイルに該当するキーを追加します)。システムはこの情報に基づいて、アプリケーションがファイルを開けるかどうか判断します。

● アプリケーションデリゲートにapplication:openURL:sourceApplication:annotation:メソッドを実装すること(新たにファイルを受信すると、システムがこのメソッドを呼び出します)。

送られてきたファイルは、アプリケーションのホームディレクトリ以下、Documents/Inboxに保存するようになっています。ファイルを書き替える場合は、あらかじめディレクトリ外に移動する必要があります(アプリケーションが読み取り/削除できるのは、このディレクトリ以下のファイルのみ)。このディレクトリ以下にあるファイルは暗号化が施されているので、デバイスがロック状態であればアクセスできないよう対処しなければなりません。

アクティビティビューコントローラでデータを共有する方法について詳しくは、『UIActivityViewControllerClass Reference』を参照してください。

Cocoa Touchレイヤ上位レベルの機能

2014-09-17 | Copyright © 2014 Apple Inc. All Rights Reserved.

13

TextKitTextKitは、テキスト処理や高品位印刷に関する豊富な機能を備えた、高レベルのクラス群です。段落、段組、ページを単位として、さまざまな書式を施した文章を配置できます。画像その他の領域を回り込むように配置すること、複数のフォントを組み合わせることも可能です。テキストのレンダリング処理を実装する手段として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オブジェクトは動的アイテムの吸着点を指定します。吸着する際の効果も設定できます。たとえば、ばねが間にはさまっているような吸着を実現できるのです。

Cocoa Touchレイヤ上位レベルの機能

2014-09-17 | Copyright © 2014 Apple Inc. All Rights Reserved.

14

力学アイテムは、アニメータオブジェクト(UIDynamicAnimatorのインスタンス)に追加すると、力学的な動作を示すようになります。アニメータには力学的な動作の「場」を与える働きがあるのです。同じアイテムに複数の動作を適用することもできますが、アニメーション化には同じアニメータオブジェクトを使わなければなりません。

適用可能な振る舞いについては、『UIKit Framework Reference』を参照してください。

マルチタスクiOSデバイスを使う上で、電池の寿命は大きな関心事です。iOSのマルチタスクモデルは、電池をできるだけ節約しつつ、重要な作業に必要な時間を、充分にアプリケーションに割り当てるよう設計されています。ユーザがホーム(Home)ボタンを押すと、フォアグラウンド状態であったアプリケーションが、バックグラウンド実行コンテキストに移行します。することがなくなったアプリケーションは一時停止し、「凍結」状態になります。コードはメモリ上に残っていますが、実行されることはありません。しかし、ある種の処理が必要なアプリケーションは、バックグラウンド実行時間をシステムにリクエストできます。以下に例を挙げます。

● 重要なタスクを完了させる必要がある場合は、その実行時間を無制限に設定するようリクエストできる。

● ある種のサービス(音声の再生など)を提供するアプリケーションは、そのサービスに必要な時間をリクエストできる。

● アプリケーションの実行状況に関する通知を、指定した時間に表示させるためのローカル通知を利用する。

● 定期的にネットワーク経由でコンテンツをダウンロードする。

● プッシュ通知に応じてコンテンツをダウンロードする。

iOSのマルチタスクモデルに対応する方法については、『iOSAppProgrammingGuide』を参照してください。

Auto LayoutAuto Layoutを導入すれば、最小限のコードで、動的なインターフェイスを構築できます。Auto Layoutを使う場合、ユーザインターフェイス上の要素をどのようにレイアウトするか、規則を定義することになります。この規則は、関係を管理するクラスを拡大したもので、従来の「springs and struts」モデルよりも直感的に使えます。たとえば、ボタンは常に親ビューの左辺から20ポイント離さなければならない、という規則を指定できます。

Auto Layoutで使うエンティティは、「制約」と呼ばれるObjective-Cのオブジェクトです。制約には次のような長所があります。

● ローカライズは文字列を差し替えるだけで済み、レイアウトを手直しする必要はありません。

Cocoa Touchレイヤ上位レベルの機能

2014-09-17 | Copyright © 2014 Apple Inc. All Rights Reserved.

15

● 左右を反転するだけで、ヘブライ語、アラビア語など、右から左に書く言語にも対応できます。

● ビュー内のオブジェクトとコントローラレイヤとで、役割を適切に分担できます。

ビューオブジェクトは通常、標準のサイズ、スーパービュー内における位置、兄弟ビューとの相対的な位置関係を管理します。ビューコントローラは、何か標準外の動作が必要な場合、この値を修正できます。

Auto Layoutの使い方について詳しくは、『Cocoa Auto Layout Guide』を参照してください。

ストーリーボードアプリケーションのユーザインターフェイスを設計する手段として、ストーリーボードを推奨します。ユーザインターフェイス全体を1箇所で設計できるので、ビューやビューコントローラがすべて連携して動作する状況を確認できます。ストーリーボードで重要なのは、あるビューコントローラから別のビューコントローラへの滑らかな遷移(セグエ)を定義できることです。この遷移を見れば、ユーザインターフェイスの中身だけでなく、流れも把握できます。この遷移をXcodeで視覚的に定義するほか、遷移を起こすコードを記述することも可能です。

ひとつのストーリーボードファイルに、アプリケーションのビューコントローラやビューをすべて格納することも、あるいは複数のビューストーリーボードを使い、部分ごとに作成したインターフェイスを組み合わせることも可能です。Xcodeは構築時に、ストーリーボードファイルの中身を分割します。必要になった時点で個別にロードし、性能を改善できるようにするのが目的です。アプリケーションがこの分割について意識する必要はありません。UIKitフレームワークは、コードからストーリーボードの内容にアクセスするための、コンビニエンスクラスを提供しています。

ストーリーボードを使ってインターフェイスを設計する手順については、『XcodeUserGuide』を参照してください。コードからストーリーボードにアクセスする方法については、『UIStoryboard ClassReference』を参照してください。

UI状態の保存状態の保存機能を導入すれば、アプリケーションが常時動作していなくても、常に動作しているように見せかけることができます。その背景として、メモリが枯渇すると、システムはバックグラウンド状態のアプリケーションを黙って停止してしまう、ということがあります。そこで、アプリケーションがフォアグラウンドからバックグラウンドに移行する際、ビューやビューコントローラの状態を保存しておきます。次の起動サイクルで、この情報を使ってビューやビューコントローラの状態を復元すれば、アプリケーションが停止せずそのまま動作し続けていたように見せることができるのです。

状態保存の機能をアプリケーションに組み込む手順については、『iOS App Programming Guide』を参照してください。

Cocoa Touchレイヤ上位レベルの機能

2014-09-17 | Copyright © 2014 Apple Inc. All Rights Reserved.

16

Apple Push NotificationサービスApple Push Notificationサービスは、アプリケーションが実際には実行中でないときでも、新着情報があることをユーザに通知する手段を提供します。このサービスを使用すると、ユーザデバイス上でいつでも、文字による通知のプッシュ、アプリケーションアイコンへのバッジの追加、音声による警告のトリガを行うことができます。これらのメッセージは、ユーザに、アプリケーションを開いて関連情報を受け取る必要があることを知らせます。iOS 7では、ユーザが認識できるような変化なしに通知をプッシュすることにより、アプリケーションに対して、新規コンテンツがダウンロードできるようになった旨を通知することも可能です。

設計の観点から見ると、iOSアプリケーションのプッシュ通知を機能させるには2つの部分が必要です。まず、アプリケーションは通知の配信をリクエストし、通知が配信されたら通知データを処理する必要があります。2つ目に、まず初めの段階に通知を生成するために、サーバ側のプロセスを提供する必要があります。このプロセスは、独自のローカルサーバ上に置き、Apple Push Notificationサービスと一緒に機能させて通知をトリガします。

プッシュ通知が使えるようアプリケーションを設定する方法については、『LocalandPushNotificationProgramming Guide』を参照してください。

ローカル通知ローカル通知は、外部サーバに依存せずにローカルで通知を生成する手段をアプリケーションに提供することによって、既存のプッシュ通知メカニズムを補完します。バックグラウンドで実行中のアプリケーションは、重要なイベントが発生すると、ユーザの注意を引きつける手段としてローカル通知を使用できます。たとえば、バックグラウンドで実行中の道案内アプリケーションであれば、道を曲がるタイミングをユーザに知らせるためにローカル通知を使用できます。アプリケーションは、将来の日時を指定してローカル通知の配信をスケジューリングしたり、スケジューリングされた通知をアプリケーションが実行されていないときでも配信させることができます。

ローカル通知の利点は、通知がアプリケーションに依存しない点です。通知がスケジューリングされると、システムが通知の配信を管理します。アプリケーションは、通知が配信されるときに実行中である必要もありません。

ローカル通知の使用方法については、『Local and Push Notification Programming Guide』を参照してください。

Gesture Recognizerジェスチャリコグナイザは、ビューをスワイプする、ピンチするなど、一般的なタイプのジェスチャを検出するために使用します。システムがジェスチャを検出するのと同じヒューリスティックスを使っているので、一貫した振る舞いになります。ジェスチャリコグナイザをビューにアタッチした

Cocoa Touchレイヤ上位レベルの機能

2014-09-17 | Copyright © 2014 Apple Inc. All Rights Reserved.

17

後、ジェスチャが発生した時に実行するアクションメソッドを登録してください。ジェスチャリコグナイザは、未処理のタッチイベントを追跡し、意図するジェスチャを構成するものかどうかを判断する、という難しい作業を行います。

ジェスチャリコグナイザはいずれも、基本的な動作を定義する、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 Guidefor iOS』を参照してください。特定のView Controllerによって表示されるインターフェイスの詳細については、『View Controller Catalog for iOS』を参照してください。

Cocoa Touchレイヤ上位レベルの機能

2014-09-17 | Copyright © 2014 Apple Inc. All Rights Reserved.

18

Cocoa Touchフレームワーク以下のセクションでは、Cocoa Touchレイヤのフレームワーク、およびこれらフレームワークが提供するサービスについて説明します。

Address Book UIフレームワークAddress Book UIフレームワーク(AddressBookUI.framework)は、新規の連絡先を作成したり既存の連絡先を編集または選択したりするための、標準的なシステムインターフェイスの表示に使われるObjective-Cのプログラミングインターフェイスです。このフレームワークを利用するとアプリケーションに連絡先情報を表示するために必要な作業を容易に行えます。また、ほかのアプリケーションと同じインターフェイスを使用できるため、プラットフォーム全体の一貫性を保証できます。

Address Book UIフレームワークのクラスとその使い方については、『Address Book Programming Guidefor 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は、以下の機能をサポートします。

● ニックネーム - ユーザがオンライン上で個人を識別するものを作成できます。ユーザはGameCenterにサインインし、ニックネームを通じて他のプレーヤーと匿名でやり取りします。プレーヤーはステータスメッセージを設定したり、特定の人を自分の友だちとして登録したりできます。

● Leaderboard - アプリケーションがユーザのスコアをGame Centerに送信し、後でスコアを取得できます。この機能は、アプリケーションのすべてのユーザの中でのベストスコアを表示するのに使用できます。

● マッチメーク - Game Centerにログインしているプレーヤーと接続することにより、アプリケーションでマルチプレーヤーゲームを実現できます。各プレーヤーは、マルチプレーヤーゲームに参加するために物理的にそばにいる必要はありません。

Cocoa TouchレイヤCocoa Touchフレームワーク

2014-09-17 | Copyright © 2014 Apple Inc. All Rights Reserved.

19

● アチーブメント(Achievement、成績) - ゲームにおけるプレーヤーの達成状況を記録することができます。

● チャレンジ - プレーヤーは友だちに対し、アチーブメントやスコアを示して競争を挑むことができます(iOS 6以降)。

● 手番制のゲーム - 状態がiCloudに格納されるので、中断してもまた続きを始めることができます。

GameKitフレームワークの使用方法の詳細については、『Game Center Programming Guide』および『Game Kit Framework Reference』を参照してください。

iAdフレームワークiAdフレームワーク(iAd.framework)を使用すると、アプリケーションからバナー広告を配信できます。広告は、ユーザインターフェイスに統合し、必要なときに表示する標準ビューに組み込まれます。標準ビュー自体はAppleのiAdサービスとともに機能し、リッチメディア広告のロードと表示、および広告内でのタップ操作へのレスポンスに関連するすべての作業を自動的に処理します。

アプリケーションでiAdを使う方法については、『iAd Programming Guide』および『iAd FrameworkReference』を参照してください。

MapKitフレームワークMapKitフレームワーク(MapKit.framework)は、アプリケーションのユーザインターフェイスに組み込んで使える、スクロール可能なマップを提供します。フレームワークのインターフェイスを使って、単に表示するだけでなく、中身や外観をカスタマイズできます。注釈の仕組みを使って着目地点(PoI、Point of Interest)に旗を表示する、あるいは独自に用意した情報を重ねて表示し、変化を与えることが可能です。重ねて表示する仕組みの利用法として、バスの経路を描画する、付近の店やレストランを目立たせる、などが考えられるでしょう。

MapKitフレームワークは、地図を表示するだけでなく、「マップ(Maps)」アプリケーションと統合し、あるいはAppleのマップサーバから経路情報を取得して使うことができるようになっています。「マップ(Maps)」アプリケーションは、経路情報の取得機能を他のアプリケーションに委ねる、という使い方が可能です。たとえば高速道路の経路情報に特化し、「マップ(Maps)」からの問い合わせに応じて情報を提供するアプリケーションが成立するわけです。あるいは、Appleサーバから徒歩用と自動車用の経路情報を取得し、独自に用意した経路情報と組み合わせて提供する、といったことも考えられるでしょう。

MapKitフレームワークのクラスの使用法については、『LocationandMapsProgrammingGuide』および『Map Kit Framework Reference』を参照してください。

Cocoa TouchレイヤCocoa Touchフレームワーク

2014-09-17 | Copyright © 2014 Apple Inc. All Rights Reserved.

20

Message UIフレームワークMessage UIフレームワーク(MessageUI.framework)を導入すれば、電子メールやSMSのメッセージ作成機能をアプリケーションに組み込めます。メッセージ作成の機能は、アプリケーションで表示するビューコントローラインターフェイスで構成されます。このビューコントローラのフィールドをあらかじめ埋めて、メッセージに含める宛先、件名、本文の内容、および任意の添付を設定することができます。ビューコントローラを表示した後、ユーザは送信前にメッセージを編集することもできます。

Message UIフレームワークのクラスの詳細については、『Message UI Framework Reference』を参照してください。このフレームワークに付属する各クラスの使い方については、『System MessagingProgramming 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ファイルの処理を含む)

● ユーザインターフェイスの内容をカプセル化する、ビューコントローラモデル

Cocoa TouchレイヤCocoa Touchフレームワーク

2014-09-17 | Copyright © 2014 Apple Inc. All Rights Reserved.

21

● 標準的なシステムビューとコントロールを表すオブジェクト

● タッチベースイベントおよびモーションベースイベントの処理

● iCloud統合その他の文書モデル(『Document-Based App Programming Guide for iOS』を参照)

● 外付けディスプレイを含む、グラフィックス処理およびウインドウ管理(『View ProgrammingGuide 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 FrameworkReference』を参照してください。

Cocoa TouchレイヤCocoa Touchフレームワーク

2014-09-17 | Copyright © 2014 Apple Inc. All Rights Reserved.

22

Mediaレイヤには、マルチメディア体験を演出することを目的とする、グラフィックス、オーディオ、およびビデオの各テクノロジーが含まれています。このレイヤのテクノロジーは見た目もサウンドもすばらしいアプリケーションを簡単に開発できるように設計されています。

グラフィックステクノロジー高品質なグラフィックスは、すべてのアプリケーションにとって重要な要素です。iOSは、独自のアートやグラフィックスを画面に表示するための、さまざまな技術を提供しています。iOSのグラフィックステクノロジーは、広範なサポートと、UIKitのビューアーキテクチャとのシームレスな連携により、コンテンツを容易に提供できるようにしています。標準ビューを使って高速かつ高品質のインターフェイスを提供するほか、独自のビューを作り、表 2-1に示すさまざまな技術を組み込むことも可能です。

表 2-1 iOSのグラフィックステクノロジー

Descriptionテクノロジー

UIKitには、画像やベジエ曲線の描画、ビューの内容のアニメーション化を行う、高レベルの支援機能が組み込まれています。描画機能を実装したクラスに加え、画像やテキストベースのコンテンツを描画(レンダリング)する、高速で効率のよい手段が揃っています。ビューはアニメーション化が可能(明示的にコードを記述する方法、UIKit Dynamicsを介する方法の2通り)で、ユーザにフィードバックを返し、入力を促すために利用できます。

UIKitフレームワークのクラスについて詳しくは、『UIKit Framework Reference』を参照してください。

UIKitグラフィックス

CoreGraphics(別名Quartz)は、iOSアプリケーション用のネイティブな描画エンジンで、独自の2次元ベクトルレンダリング、画像ベースのレンダリングが可能です。OpenGL ESほど高速ではありませんが、2次元の図形や画像を動的にレンダリングしたい場合に適しています。

詳しくは“Core Graphicsフレームワーク” (31 ページ)を参照してください。

CoreGraphicsフレームワーク

2014-09-17 | Copyright © 2014 Apple Inc. All Rights Reserved.

23

Mediaレイヤ

Descriptionテクノロジー

Core Animation(Quartz Coreフレームワークの一部)は、アプリケーションにアニメーションの要素を組み込むための基盤技術です。UIKitのビューはCoreAnimationを使って、ビューレベルのアニメーションを実現しています。アニメーションの動作をよりきめ細かく制御したい場合に、Core Animationを直接使うとよいでしょう。

詳しくは“Quartz Coreフレームワーク” (35 ページ)を参照してください。

CoreAnimation

Core Imageは、ビデオ画像や静止画像を操作するための高度なサポートを、非破壊的な方法で提供します。

詳しくは“Core Imageフレームワーク” (31 ページ)を参照してください。

Core Image

OpenGL ESは、ハードウェアによって加速化されたインターフェイスを使用して、高度な2Dおよび3Dのレンダリングを支援します。従来はゲームなど没入型のアプリケーションを実装するために使われていました。レンダリング処理を細かく制御するほか、高いフレームレートを活かして、滑らかな動きを実現することが可能です。詳しくは“OpenGL ESフレームワーク” (35 ページ)を参照してください。

GLKitはObjective-Cのクラス群で、OpenGL ESの機能を、オブジェクト指向のインターフェイスで利用できます。詳しくは“GLKitフレームワーク” (32 ページ)を参照してください。

OpenGL ESおよびGLKit

Metalを利用すれば、ほとんどオーバーヘッドなくA7 GPUにアクセスできるので、洗練されたグラフィックスの描画や演算タスクを高速に実行可能です。従来のグラフィックAPIに見られる、状態の検証処理など性能上のさまざまなボトルネックが解消されています。詳しくは“Metalフレームワーク” (34 ページ)を参照してください。

Metal

TextKitは、高品位印刷やテキスト管理に用いるUIKitのクラス群です。高度なテキスト操作を伴うアプリケーションの場合、TextKitを導入すれば、必要な機能がビューに統合されます。詳しくは“TextKit” (14 ページ)を参照してください。

Core Textは、高品位印刷やレイアウトを処理する、Cで記述された低レベルのフレームワークです。詳しくは“Core Textフレームワーク” (31 ページ)を参照してください。

TextKitとCore Text

Image I/Oには、ほとんどの画像形式の読み取り、書き込みを行うためのインターフェイスが用意されています。詳しくは“Image I/Oフレームワーク” (33 ページ)を参照してください。

Image I/O

Mediaレイヤグラフィックステクノロジー

2014-09-17 | Copyright © 2014 Apple Inc. All Rights Reserved.

24

Descriptionテクノロジー

PhotosおよびPhotosUIフレームワークは、ユーザの写真やビデオ、メディアにアクセスする手段を提供します。ユーザの写真その他を、アプリケーションに取り込みたい場合に利用します。詳しくは、“Photosフレームワーク” (35 ページ)および“Photos UIフレームワーク” (35 ページ)を参照してください。

Photosライブラリ

iOSには、Retinaと標準解像度のどちらのディスプレイであっても、アプリケーションが動作するようにするための機能が組み込まれています。ベクトルベースの描画の場合、Retinaディスプレイ用には、システムフレームワークが自動的にピクセルを追加してコンテンツの鮮明度を上げます。アプリケーション内で画像を使用する場合、UIKitが既存の画像の高解像度のバリエーションを自動的に読み込む機能を提供します。高解像度画面への対応に必要な要件の詳細については、『iOS App ProgrammingGuide』の「App-Related Resources」を参照してください。

オーディオテクノロジーiOSのオーディオテクノロジーは、基盤となるハードウェアと連携して、ユーザに豊かなオーディオ体験を提供することを意図して設計されています。この体験には、高品質オーディオの再生や録音の機能、MIDIコンテンツの処理、デバイス組み込みのサウンドを扱う機能が含まれています。

音声を扱うアプリケーションで利用できるテクノロジーがいくつかあります。表 2-2に、該当するフレームワークとその用途を示します。

表 2-2 iOSのオーディオテクノロジー

Descriptionテクノロジー

ユーザのiTunesライブラリへの簡単なアクセス、および曲やプレイリストの再生を支援する、高レベルのフレームワークです。オーディオ機能を容易にアプリケーションに統合でき、再生時の動作を細かく制御する必要がない場合に向いています。詳しくは“Media Playerフレームワーク” (33 ページ)を参照してください。

Media Playerフレームワーク

AV Foundationは、オーディオ/ビデオの録音/録画や再生を管理する、Objective-Cのインターフェイスを提供します。音声を録音するとき、あるいは再生方法を細かく制御したい場合に向いています。詳しくは“AV Foundationフレームワーク” (29 ページ)を参照してください。

AV Foundation

OpenALは定位オーディオを提供する業界標準のテクノロジーです。多くのゲーム開発者がこのテクノロジーを基盤とし、クロスプラットフォームのインターフェイス群を使って、高品位オーディオの再生機能を実装します。詳しくは“OpenALフレームワーク” (34 ページ)を参照してください。

OpenAL

Mediaレイヤオーディオテクノロジー

2014-09-17 | Copyright © 2014 Apple Inc. All Rights Reserved.

25

Descriptionテクノロジー

Core Audioは、オーディオやMIDIの録音/再生を行う、シンプルかつ洗練されたインターフェイスを提供するフレームワーク群です。オーディオをきめ細かく制御したい開発者に向いています。詳しくは“Core Audio” (30 ページ)を参照してください。

Core Audio

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クラスはUIKitのビューコントローラで、メディアファイルの選択に使います。ユーザに、既存の静止画像やビデオを選択させる、あるいは新規コンテンツを取り込ませるために使います。詳細については、『Camera Programming Topics for iOS』を参照してください。

UIImagePicker-Controller

Mediaレイヤビデオテクノロジー

2014-09-17 | Copyright © 2014 Apple Inc. All Rights Reserved.

26

Descriptionテクノロジー

AVKitフレームワークは、ビデオを再生するための、簡単に使える一連のインターフェイスを提供します。全画面表示と一部領域への表示が可能で、ユーザが操作する再生コントロールも付属しています。詳しくは“AVKitフレームワーク” (29 ページ)を参照してください。

AVKit

高度なビデオ再生/録画機能を提供します。再生/録画の方法をきめ細かく制御したい場合に向いています。たとえば複合現実感アプリケーションの場合、ライブビデオとアプリケーションが生成したコンテンツを重ねて再生する、という使い方ができるかも知れません。詳しくは“AV Foundationフレームワーク” (29 ページ)を参照してください。

AV Foundation

Core Mediaフレームワークは、メディアを操作するために用いる、低レベルのデータ型やインターフェイスを定義しています。通常、このフレームワークを直接使う必要はありませんが、ビデオコンテンツの非常に細かな部分を制御したい場合には役に立つでしょう。詳しくは“Core Mediaフレームワーク” (46 ページ)を参照してください。

Core Media

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 ページ)で示したフォーマットを含む)

AirPlayAirPlayを導入すれば、オーディオ/ビデオをApple TVに、オーディオを他社のAirPlay対応スピーカー/レシーバーに、それぞれストリーミング配信できます。AirPlayは、UIKit、Media Player、AV Foundationなどのフレームワークや、Core Audioフレームワーク群に組み込まれているので、多くの場合、特別

MediaレイヤAirPlay

2014-09-17 | Copyright © 2014 Apple Inc. All Rights Reserved.

27

な作業は必要ありません。これらのフレームワークを使用して再生するコンテンツは、自動的に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』を参照してください。

MediaレイヤMediaレイヤのフレームワーク

2014-09-17 | Copyright © 2014 Apple Inc. All Rights Reserved.

28

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の既存のオブジェクトを強化し、デバイス上にビデオを表示できるようにする働きがあります。ビデオの表示に従来使われていた、MediaPlayerフレームワークに代わるものです。

このフレームワークについて詳しくは、ヘッダファイルを参照してください。

MediaレイヤMediaレイヤのフレームワーク

2014-09-17 | Copyright © 2014 Apple Inc. All Rights Reserved.

29

Core AudioCore Audioは、ネイティブなオーディオ処理機能を提供するフレームワーク群です(個々のフレームワークは表 2-4を参照)。オーディオの生成、録音、ミキシング、再生が可能です。MIDIコンテンツの操作も可能で、オーディオ/MIDIコンテンツを他のアプリケーションにストリーミング配信できます。

表 2-4 Core Audioフレームワーク

サービスフレームワーク

Core Audio全体で使われるオーディオデータ型を定義します。詳細については、『Core Audio Framework Reference』を参照してください。

CoreAudio.framework

オーディオファイルおよびストリームに対して再生および録音サービスを提供します。このフレームワークは、オーディオファイルの管理、システムの警告音の再生、および対応デバイスにおけるバイブレーション機能のトリガを可能にします。詳細については、『Audio Toolbox Framework Reference』を参照してください。

Audio-Toolbox.framework

オーディオ処理モジュールである内蔵Audio Unitを使用するためのサービスを提供します。アプリケーションのオーディオコンテンツを、他のアプリケーションからも使えるオーディオコンポーネントとして販売することも可能です。詳細については、『Audio UnitFramework Reference』を参照してください。

AudioUnit.framework

ハードウェアキーボードやシンセサイザなどのMIDIデバイスと通信する標準的な手段を提供します。このフレームワークを使用して、MIDIメッセージの送受信を行ったり、Dockコネクタやネットワークを使用してiOSベースのデバイスに接続されたMIDI機器とやり取りを行ったりします。詳細については、『Core MIDI FrameworkReference』を参照してください。

CoreMIDI.framework

オーディオタップインターフェイスへのアクセス機能を提供します。

Media-Toolbox.framework

Core Audioの詳細については、『Core Audio Overview』を参照してください。Audio Toolboxフレームワークでサウンドを再生する方法については、『AudioQueueServicesProgrammingGuide』を参照してください。

MediaレイヤMediaレイヤのフレームワーク

2014-09-17 | Copyright © 2014 Apple Inc. All Rights Reserved.

30

CoreAudioKitフレームワークCoreAudioKitフレームワーク(CoreAudioKit.framework)は、オーディオ連携機能を組み込んだアプリケーション間の接続を管理する、標準的なビューを提供します。接続された他のアプリケーションのアイコンを表示する「スイッチャ」ビューと、ホストアプリケーションが供給するオーディオの「操作パネル」ビューから成ります。

このフレームワークのインターフェイスについて詳しくは、ヘッダファイルを参照してください。

Core GraphicsフレームワークCore Graphicsフレームワーク(CoreGraphics.framework)には、Quartz 2D描画API用のインターフェイスが含まれています。Quartzは、OS Xで使われているものと同じ、高度なベクトルベースの描画エンジンです。パスベースの描画、アンチエイリアス化されたレンダリング、グラデーション、画像、色、座標空間の変換、およびPDFドキュメントの作成、表示、解析をサポートします。APIはC言語ベースですが、オブジェクトベースの抽象化を使用して基礎的な描画オブジェクトを表します。これにより、グラフィックスコンテンツの保存と再利用が簡単に行えます。

Quartzを使って図形を描画する方法については、『Quartz2DProgrammingGuide』および『CoreGraphicsFramework Reference』を参照してください。

Core ImageフレームワークCore Imageフレームワーク(CoreImage.framework)には、ビデオや静止画像を操作する、強力なフィルタ群が組み込まれています。この組み込みフィルタを使えば、写真のレタッチや修正から、顔面認識、特徴認識、QRコード検出まで、さまざまなことが可能です。このフィルタは、もとの画像を直接変更せず、非破壊的に加工するようになっています。さらに、フィルタはハードウェアで処理されるので、高速で滑らかです。

Core Imageフレームワークのクラスやフィルタについては、『Core Image Reference Collection』を参照してください。

Core TextフレームワークCore Textフレームワーク(CoreText.framework)には、テキストのレイアウトとフォントの処理を行う、シンプルで高性能なCベースの一連のインターフェイスが含まれています。TextKitは使わないけれども、ワードプロセッサに見られるような、高度なテキスト処理機能を要するアプリケーションに向いています。このフレームワークは、テキストの回り込みその他、洗練されたテキスト配置エンジンを提供します。また、複数のフォントやレンダリング属性を駆使した、高度なスタイル処理にも対応しています。

MediaレイヤMediaレイヤのフレームワーク

2014-09-17 | Copyright © 2014 Apple Inc. All Rights Reserved.

31

Core Textインターフェイスについて詳しくは、『Core Text Programming Guide』および『Core TextReference 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と同等の機能です。

MediaレイヤMediaレイヤのフレームワーク

2014-09-17 | Copyright © 2014 Apple Inc. All Rights Reserved.

32

● 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経由でビデオが配信された旨の検出。

MediaレイヤMediaレイヤのフレームワーク

2014-09-17 | Copyright © 2014 Apple Inc. All Rights Reserved.

33

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を参照してください。

MediaレイヤMediaレイヤのフレームワーク

2014-09-17 | Copyright © 2014 Apple Inc. All Rights Reserved.

34

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の使い方について詳しくは、『OpenGLESProgrammingGuide for iOS』を参照してください。参考情報については、『OpenGL ES Framework Reference』を参照してください。

PhotosフレームワークPhotosフレームワーク(Photos.framework)では、iCloud の写真アセットを含め、「写真(Photos)」アプリケーションで管理されている写真/ビデオアセットと連動する新しいAPIを利用できます。AssetsLibraryフレームワークよりも機能が充実しています。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は高度な画像合成テクノロジーであり、高速で効率よく動作する、ビューベースのアニメーションを容易に作成できます。合成エンジンはハードウェアの能力を駆使し

MediaレイヤMediaレイヤのフレームワーク

2014-09-17 | Copyright © 2014 Apple Inc. All Rights Reserved.

35

て、ビューの内容を、実時間で効率よく操作します。アプリケーション側はアニメーションの開始点と終了点を指定するだけです。さらに、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はこういったオブジェクトを使い、画面にレンダリング

MediaレイヤMediaレイヤのフレームワーク

2014-09-17 | Copyright © 2014 Apple Inc. All Rights Reserved.

36

する最も効率よい方法を判断します。シーンの内容をアニメーション表示する場合、SpriteKitを使ってアクションを明示的に指定するか、物理シミュレーションエンジンを使ってオブジェクトの物理的な振る舞い(重力、引力、反発力など)を規定することになります。

SpriteKitフレーム以外にも、粒子放出効果やテクスチャアトラス(多数の画像を1枚に集約した画像)を生成する、各種のXcodeツールがあります。このようなツールでアプリケーション資産を管理し、SpriteKitのシーンを迅速に更新できるのです。

SpriteKitの使い方について詳しくは、『SpriteKitProgrammingGuide』を参照してください。SpriteKitを使って実際に動作するアプリケーションを開発した例が、『code:Explained Adventure』に載っています。

MediaレイヤMediaレイヤのフレームワーク

2014-09-17 | Copyright © 2014 Apple Inc. All Rights Reserved.

37

Core Servicesレイヤには、アプリケーション向けの基本的なサービスが含まれています。中でも重要なのは、あらゆるアプリケーションに必要となる基本的な型を定義している、Core FoundationとFoundationフレームワークでしょう。このレイヤには、地理的位置の検出、iCloud、ソーシャルメディア、ネットワークなどを活用するために必要な、個別の技術も組み込まれています。

上位レベルの機能以下のセクションでは、Core Servicesレイヤで利用できる上位レベルの機能の一部を説明します。

ピアツーピアサービスMultipeer Connectivityフレームワークは、Bluetooth経由でピアツーピア接続を提供します。ピアツーピア接続を使用することで、近くにあるデバイスとの間で通信セッションを開始できます。主にゲームで使用されますが、その他のタイプのアプリケーションで使用することもできます。

アプリケーションでピアツーピア接続機能を使用する方法の詳細については、『MultipeerConnectivityFramework 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の操作機能をアプリケーションに組み込む方法の概要については、『iCloudDesignGuide』を参照してください。

ブロックオブジェクトブロックオブジェクトは、CおよびObjective-Cのコードに組み込むことのできる、Cレベル言語の構成体です。ブロックオブジェクトは、基本的には匿名関数およびその関数に伴うデータであり、ほかの言語ではクロージャやラムダと呼ばれているものです。ブロックは特に、コールバックとして使用したり、または実行するコードと関連するデータを簡単に組み合わせる手段が必要な場合に使用できます。

iOSでは、ブロックは一般的に以下のシナリオで使用されます。

● デリゲートおよびデリゲートメソッドの代替として

● コールバック関数の代替として

● 1回限りの操作の終了ハンドラを実装するため

● コレクション内のすべての要素に対するタスクの実行を容易にするため

● ディスパッチキューとともに非同期タスクを実行するため

ブロックオブジェクトの概要および使い方については、『AShort PracticalGuide toBlocks』を参照してください。ブロックについては、『Blocks Programming Topics』を参照してください。

データ保護データ保護機能により、機密性の高いユーザデータを扱うアプリケーションは、一部のデバイスで利用可能な内蔵の暗号化機能を利用できるようになりました。特定のファイルを保護対象として指定すると、システムはそのファイルを暗号化された形式でディスク上に格納します。デバイスがロックされている間、アプリケーションからも侵入者からもファイルの内容にはアクセスできません。一方、ユーザがデバイスをロック解除すると、暗号鍵が作成されてアプリケーションからファイルにアクセスできるようになります。これ以外のレベルのデータ保護機能も利用可能です。

Core Servicesレイヤ上位レベルの機能

2014-09-17 | Copyright © 2014 Apple Inc. All Rights Reserved.

39

データ保護を実装するには、保護対象のデータの作成方法と管理方法を理解しておく必要があります。アプリケーションは、データの作成時にデータのセキュリティを確保し、ユーザがデバイスをロックまたはロック解除したときのアクセスの変更に備えるよう設計されなければなりません。

アプリケーションのファイルにデータ保護を追加する方法の詳細については、『iOSAppProgrammingGuide』を参照してください。

ファイル共有のサポートファイル共有によりアプリケーションは、iTunes 9.1以上を通じてユーザのデータファイルを利用できます。ファイル共有のサポートを宣言したアプリケーションでは、ユーザは/Documentsディレクトリの内容を利用できます。ユーザは必要に応じて、iTunesからこのディレクトリとの間でファイルを移動することができます。この機能では、アプリケーションは、同一デバイス上のほかのアプリケーションとの間でファイルを共有することはできません。この動作には、ペーストボードまたはDocumentInteraction Controllerオブジェクトが必要です。

アプリケーションにファイル共有機能を持たせるには、次の手順を実行します。

1. アプリケーションのInfo.plistファイルにUIFileSharingEnabledキーを追加し、値をYESとします。

2. 共有するファイルはすべて、アプリケーションのDocumentsディレクトリに置きます。

3. デバイスがユーザのコンピュータに接続されていると、iTunesは選択されたデバイスの「Apps」タブに「File Sharing」セクションを表示します。

4. ユーザはこのディレクトリにファイルを追加したり、デスクトップにファイルを移動したりできます。

ファイル共有に対応したアプリケーションは、Documentsディレクトリにファイルが追加されたことを認識し、適切に対応できなければなりません。たとえば、アプリケーションはそのインターフェイスを通じて、新しいファイルの内容を利用できるようにすることが考えられます。このディレクトリのファイルの一覧をユーザに表示して、それらのファイルに対する操作を決めるようにユーザに求めたりしてはなりません。

UIFileSharingEnabledキーの詳細については、『Information Property List Key Reference』を参照してください。

Core Servicesレイヤ上位レベルの機能

2014-09-17 | Copyright © 2014 Apple Inc. All Rights Reserved.

40

Grand Central DispatchGrand Central Dispatch(GCD)はBSDレベルのテクノロジーで、アプリケーション内のタスクの実行管理に使用します。GCDは非同期プログラミングモデルと高度に最適化されたコアを一体化させることで、スレッドに代わる簡便で効率的な手段を提供します。また、ファイル記述子の読み取りと書き込み、タイマーの実装、シグナルイベントおよびプロセスイベントの監視など、さまざまな下位レベルタスクに対する便利な代替手段も提供します。

アプリケーションでGCDを使う方法については、『Concurrency Programming Guide』を参照してください。個々のGCD関数の詳細については、『GrandCentralDispatch (GCD)Reference』を参照してください。

In-App PurchaseIn-App Purchaseにより、アプリケーション内部から、当該アプリケーションに特有のコンテンツやサービス、iTunesコンテンツを購入することができます。In-App Purchaseは、ユーザのiTunesアカウントを使用した会計処理に必要なインフラストラクチャを提供するStoreKitフレームワークを使用して実装されています。アプリケーションは、全体的なユーザ体験、および購入可能なコンテンツやサービスの表示を処理します。ダウンロード可能なコンテンツは、自分で配送するほか、Appleのサーバに委ねることも可能です。

In-App Purchaseのサポートについて詳しくは、『In-App Purchase Programming Guide』を参照してください。StoreKitフレームワークについて詳しくは、“StoreKitフレームワーク” (51 ページ)を参照してください。

SQLiteSQLiteライブラリにより、軽量なSQLデータベースをアプリケーションに組み込むことができます。これにより、リモートで別にデータベースサーバプロセスを実行する必要がありません。アプリケーションからローカルデータベースファイルを作成し、ファイル内のテーブルやレコードを管理できます。ライブラリは汎用の目的のために設計されていますが、データベースのレコードにすばやくアクセスできるようにさらに最適化されています。

SQLiteライブラリのアクセス用ヘッダファイルは<iOS_SDK>/usr/include/sqlite3.hにあります。<iOS_SDK>は、Xcodeのインストールディレクトリ内のターゲットSDKへのパスです。SQLiteの使い方については『SQLite Software Library』を参照してください。

Core Servicesレイヤ上位レベルの機能

2014-09-17 | Copyright © 2014 Apple Inc. All Rights Reserved.

41

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)は、ユーザの連絡先データベースにプログラムからアクセスするための手段を提供します。アプリケーションが連絡先情報を使用する場合は、このフレームワークを使用して情報にアクセスしたり修正したりできます。たとえば、チャットプログラムでこのフレームワークを使用して、チャットセッションを開始可能な連絡先リストを取得したりその連絡先をカスタムビューに表示したりすることができます。

Core ServicesレイヤCore Servicesフレームワーク

2014-09-17 | Copyright © 2014 Apple Inc. All Rights Reserved.

42

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』を参照してください。

Core ServicesレイヤCore Servicesフレームワーク

2014-09-17 | Copyright © 2014 Apple Inc. All Rights Reserved.

43

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』を参照してください。

Core ServicesレイヤCore Servicesフレームワーク

2014-09-17 | Copyright © 2014 Apple Inc. All Rights Reserved.

44

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の無線を使用して、ユーザの現在の経度と緯度を把握します。このテクノロジーをアプリケーションに組み込んで、ユーザに位置情報を提供することができます。たとえば、近隣のレストラン、店舗、または施設を検索するようなサービスでは、ユーザの現在位置に基づいて検索ができます。CoreLocationは以下の機能も提供します。

● 磁力センサーが搭載されたiOSベースのデバイスにおける、コンパスベースの方角情報へのアクセス

Core ServicesレイヤCore Servicesフレームワーク

2014-09-17 | Copyright © 2014 Apple Inc. All Rights Reserved.

45

● 地理的位置やBluetoothビーコンに基づく地域監視

● 携帯電話基地局を用いた低電力の位置監視

● MapKitとの連携による位置データの精度向上(自動車運転中など特殊な状況で)

位置情報および方角情報の収集にCore Locationを使用する方法の詳細については、『LocationandMapsProgramming Guide』および『Core Location Framework Reference』を参照してください。

Core MediaフレームワークCore Mediaフレームワーク(CoreMedia.framework)は、AV Foundationフレームワークが使用する下位レベルのメディアタイプを提供します。ほとんどのアプリケーションはこのフレームワークを使用する必要はありませんが、オーディオコンテンツとビデオコンテンツの作成と表示において、より正確な制御を必要とするデベロッパのためにこのフレームワークが提供されています。

このフレームワークの関数やデータ型については、『Core Media Framework Reference』を参照してください。

Core MotionフレームワークCore Motionフレームワーク(CoreMotion.framework)には、デバイスの動き(モーション)に関するあらゆるデータにアクセスできる、一連のインターフェイス群が揃っています。加速度センサーの生データおよび加工済みデータに、新たに追加されたブロックベースのインターフェイスを介してアクセスできます。ジャイロスコープが組み込まれたデバイスであれば、その姿勢や回転率を反映する生データおよび加工済みデータを取得できます。ゲームその他のアプリケーションは、加速度センサーやジャイロスコープのデータを使って、デバイスの動きを入力として扱うなど、さまざまな方法で使い勝手を高めることができます。ステップカウンタ搭載デバイスであれば、そのデータを参照して運動の実施状況を追跡できます。

このフレームワークのクラスとメソッドについては、『CoreMotion Framework Reference』を参照してください。

Core TelephonyフレームワークCore Telephonyフレームワーク(CoreTelephony.framework)は、携帯電話用無線機能が備わったデバイス上の電話ベースの情報をやり取りするためのインターフェイスを提供します。アプリケーションは、このフレームワークを使用して、ユーザの携帯電話サービスプロバイダに関する情報を取得することができます。携帯電話の呼び出しイベント(VoIPアプリケーションなど)が関係するアプリケーションは、呼び出しイベントの発生時に通知を受けることもできます。

Core ServicesレイヤCore Servicesフレームワーク

2014-09-17 | Copyright © 2014 Apple Inc. All Rights Reserved.

46

このフレームワークのクラスやメソッドの使い方については、『CoreTelephonyFrameworkReference』を参照してください。

EventKitフレームワークEventKitフレームワーク(EventKit.framework)は、ユーザデバイス上のカレンダーイベントにアクセスするためのインターフェイスを提供します。このフレームワークで次のようなことが可能です。

● ユーザのカレンダーから、既存のイベントや備忘データを取得

● イベント(予定)をカレンダーに追加

● 備忘データを生成(「リマインダー(Reminders)」アプリケーションに表示)

● カレンダーイベントに対するアラームの設定(アラームをいつ起動するか、など)

Important: カレンダーやリマインダーのデータにアクセスするためには、ユーザの明示的な許可が必要になりました。したがってアプリケーションには、ユーザがアクセスを拒否できるようにする仕組みが必要です。さらに、アクセスが必要な理由を、Info.plistの所定のキーに記述するよう推奨します。

このフレームワークのクラスとメソッドについては、『Event Kit Framework Reference』を参照してください。さらには、“EventKit UIフレームワーク” (19 ページ)も参照してください。

FoundationフレームワークFoundationフレームワーク(Foundation.framework)は、Core Foundationフレームワーク(“CoreFoundationフレームワーク” (45 ページ)を参照)の機能の多くにObjective-Cラッパーを提供します。Foundationフレームワークは、以下の機能をサポートします。

● コレクションデータ型(配列、集合など)

● バンドル

● 文字列管理

● 日付と時刻の管理

● 未加工データブロック管理

● 環境設定管理

● URLおよびストリーム操作

● スレッドおよび実行ループ

● Bonjour

● 通信ポート管理

Core ServicesレイヤCore Servicesフレームワーク

2014-09-17 | Copyright © 2014 Apple Inc. All Rights Reserved.

47

● 国際化

● 正規表現の一致

● キャッシュのサポート

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アプリケーションとデバイスとの通信をテストできます。

Core ServicesレイヤCore Servicesフレームワーク

2014-09-17 | Copyright © 2014 Apple Inc. All Rights Reserved.

48

このフレームワークのインターフェイスについては、『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クラスを利用して、ピアデバイスを検出、管理するプログラムを実装することも可能です。

このフレームワークのインターフェイスについては、『MultipeerConnectivityFrameworkReference』を参照してください。

Core ServicesレイヤCore Servicesフレームワーク

2014-09-17 | Copyright © 2014 Apple Inc. All Rights Reserved.

49

NewsstandKitフレームワークNewsstandは雑誌や新聞を購読する「窓口」としての場を提供します。Newsstandを介して雑誌や新聞を配布しようとする出版者は、独自のiOSアプリケーションを、NewsstandKitフレームワーク(NewsstandKit.framework)を使って開発できます。最新号の雑誌や新聞を、バックグラウンドでダウンロードする機能があります。ダウンロードを始めると、その後の処理はシステムが行い、最新号が読めるようになるとアプリケーションに通知します。

Newsstandによるダウンロード処理に用いるクラスについては、『NewsstandKitFrameworkReference』を参照してください。アプリケーションに通知を送る手順については、『Local and Push NotificationProgramming Guide』を参照してください。

PassKitフレームワークPassbookアプリケーションを使うと、「パス」を発行して業務に活用できます。クーポン、搭乗券、催しの入場券、割引券などに相当するものです。ユーザは、iOSデバイスにパスを格納し、物理的な紙などを使う従来の方法と同じように利用できます。PassKitフレームワーク(PassKit.framework)にはObjective-Cのインターフェイスがあり、パスを操作する機能をアプリケーションに組み込むことができます。ウェブインターフェイスやファイル形式情報と組み合わせて使い、企業独自のパスを作成、管理できます。

パスは企業のウェブサービスを使って作成し、電子メール、Safari、独自のアプリケーションを介して配布することになります。パス自身は特別な形式のファイルで、暗号技術を用いたデジタル署名を施した上で配布するようになっています。ファイル形式は、提供するサービス内容を記述できるようになっているので、ユーザはこれが何のために配布されたサービスなのか識別できます。また、バーコードその他の情報を入れておけば、これを検証して、未使用(払い戻し可能)か使用済みかを判断できます。

PassKitの詳細、およびこの機能をアプリケーションに組み込む方法については、『PassbookProgrammingGuide』を参照してください。

Quick LookフレームワークQuick Lookフレームワーク(QuickLook.framework)は、アプリケーションが直接サポートしていないファイルの内容をプレビューするための直接的なインターフェイスを提供します。このフレームワークは主に、ネットワークからファイルをダウンロードするアプリケーション、または未知のソースから取得したファイルを扱うアプリケーションを対象にしています。ファイルを取得した後、このフレームワークが提供するView Controllerを使用してユーザインターフェイス内に直接そのファイルの内容を表示します。

このフレームワークのクラスとメソッドについては、『Quick Look Framework Reference for iOS』を参照してください。

Core ServicesレイヤCore Servicesフレームワーク

2014-09-17 | Copyright © 2014 Apple Inc. All Rights Reserved.

50

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 KitFramework Reference』を参照してください。

System ConfigurationフレームワークSystem Configurationフレームワーク(SystemConfiguration.framework)は、デバイスのネットワーク構成を特定するために使用できる、到達性のためのインターフェイスを提供します。このフレームワークは、Wi-Fi接続または携帯電話接続が使用中かどうか、そして特定のホストサーバがアクセス可能かどうかを特定するために使用できます。

Core ServicesレイヤCore Servicesフレームワーク

2014-09-17 | Copyright © 2014 Apple Inc. All Rights Reserved.

51

このフレームワークのインターフェイスについては、『System Configuration Framework Reference』を参照してください。このフレームワークを使用してネットワーク情報を取得する方法の例については、『Reachability』サンプルコードプロジェクトを参照してください。

WebKitフレームワークWebKitフレームワーク(WebKit.framework)を利用して、HTMLコンテンツをアプリケーション内に表示できます。これに加え、基本的な編集機能をアプリケーションに組み込んで、テキストを書き換え、属性(CSSプロパティなど)を操作できるようにすることも可能です。さらに、HTMLドキュメントのDOMレベルでコンテンツを作成、編集する機能もあります。たとえば、ページ内にあるリンクのリストを抽出し、所定の規則に従って置換してからウェブビューに表示する、といったことが考えられます。

このフレームワークのインターフェイスについては、『WebKit Framework Reference』を参照してください。

Core ServicesレイヤCore Servicesフレームワーク

2014-09-17 | Copyright © 2014 Apple Inc. All Rights Reserved.

52

Core OSレイヤには、ほかのほとんどのテクノロジーの土台となる下位レベルの機能が含まれています。これらのテクノロジーは、アプリケーションで直接使用されていない場合でも、たいていは他のフレームワークによって使用されています。セキュリティや外部のハードウェアアクセサリとの通信を明示的に扱う必要のある状況では、このレイヤのフレームワークを使用する必要が生じます。

AccelerateフレームワークAccelerateフレームワーク(Accelerate.framework)には、DSP(デジタル信号処理)、線形代数、画像処理の計算を実行するためのインターフェイスが含まれています。これらのインターフェイスは、独自に作成することもできますが、このフレームワークを使用したほうがiOSデバイスのあらゆるハードウェア構成に対して最適化されているという利点がります。そのため、一度コードを記述すれば、すべてのデバイス上で効率良くコードを実行できます。

Accelerateフレームワークの機能については、『AccelerateFrameworkReference』を参照してください。

Core BluetoothフレームワークCore Bluetoothフレームワーク(CoreBluetooth.framework)を導入すれば、開発者は特に、BluetoothLow-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フレームワーク(ExternalAccessory.framework)は、iOSベースのデバイスに接続されているハードウェアアクセサリとの通信のためのサポートを提供します。アクセサリは、デバイスの30ピンDockコネクタを使用して接続するか、Bluetoothを使用してワイヤレスに接続できます。External Accessoryフレームワークは、利用可能な個々のアクセサリについての情報を取得し、通信セッションを初期化する方法を提供します。その後、サポートされているコマンドのいずれかを使用して、アクセサリを直接自由に操作できます。

このフレームワークの使用方法の詳細については、『ExternalAccessoryProgrammingTopics』を参照してください。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』を参照してください。

Core OSレイヤExternal Accessoryフレームワーク

2014-09-17 | Copyright © 2014 Apple Inc. All Rights Reserved.

54

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 ProgrammingGuide』を参照してください。Xcodeプロジェクトでのエンタイトルメントの設定の詳細については、『App Distribution Guide』の「Adding Capabilities」を参照してください。設定できるエンタイトルメントの詳細については、『Keychain Services Reference』のSecItemAdd関数の説明を参照してください。

Core OSレイヤNetwork Extensionフレームワーク

2014-09-17 | Copyright © 2014 Apple Inc. All Rights Reserved.

55

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ビットモード向けのプロセッサ資源を活用できるため、従来よりも高速になります。

Core OSレイヤSystem

2014-09-17 | Copyright © 2014 Apple Inc. All Rights Reserved.

56

iOSはOS Xその他のUNIXシステムで使われているLP64モデルを採用しているので、移植の手間も最小限で済みます。iOSの64ビット用実行時ルーチンや、64ビットアプリケーションの開発方法については、『64-bit Transition Guide for Cocoa Touch』を参照してください。

Core OSレイヤ64ビット対応

2014-09-17 | Copyright © 2014 Apple Inc. All Rights Reserved.

57

この付録では、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 デバイスのフレームワーク

解説プレフィックス

最初のリリース

変数名

高速化された数学関数およびDSP関数が含まれています(“Accelerateフレームワーク” (53 ページ)を参照)。

cblas、vDSP

4.0Accelerate.framework

ユーザのシステムアカウントへのアクセスを管理するためのインターフェイスが含まれています(“Accountsフレームワーク” (42 ページ)を参照)。

AC5.0Accounts.framework

ユーザの連絡先データベースに直接アクセスするための関数が含まれています(“Address Bookフレームワーク” (42 ページ)を参照)。

AB2.0AddressBook.framework

2014-09-17 | Copyright © 2014 Apple Inc. All Rights Reserved.

58

iOSのフレームワーク

解説プレフィックス

最初のリリース

変数名

システム定義のPeopleピッカーと編集インターフェイスを表示するためのクラスが含まれています(“Address BookUIフレームワーク” (19 ページ)を参照)。

AB2.0AddressBookUI.framework

広告目的で、有用な情報を収集分析するためのクラスがあります(“AdSupportフレームワーク” (43 ページ)を参照)。

AS6.0AdSupport.framework

ユーザの写真やビデオにアクセスするためのクラスが含まれています(“Assets Libraryフレームワーク” (28 ページ)を参照)。

AL4.0AssetsLibrary.framework

オーディオストリームデータを扱ったり、オーディオの再生と録音のためのインターフェイスが含まれています(“Core Audio” (30 ページ)を参照)。

AU、Audio

2.0AudioToolbox.framework

オーディオユニットのロードと使用のためのインターフェイスが含まれています(“Core Audio” (30 ページ)を参照)。

AU、Audio

2.0AudioUnit.framework

オーディオとビデオの再生と録音のためのObjective-Cインターフェイスが含まれています(“AV Foundationフレームワーク” (29 ページ)を参照)。

AV2.2AVFoundation.framework

オーディオとビデオの再生と録音のためのObjective-Cインターフェイスが含まれています“AVKitフレームワーク” (29 ページ)を参照。

AV8.0AVKit.framework

Wi-Fi無線と携帯電話無線によってネットワークにアクセスするためのインターフェイスが含まれています(“CFNetworkフレームワーク” (43 ページ)を参照)。

CF2.0CFNetwork.framework

iOSのフレームワークデバイスのフレームワーク

2014-09-17 | Copyright © 2014 Apple Inc. All Rights Reserved.

59

解説プレフィックス

最初のリリース

変数名

iCloudデータを取得、保存する、Objective-Cのインターフェイスが含まれています(“CloudKitフレームワーク” (44 ページ)を参照)。

CK8.0CloudKit.framework

Core Audio全体で使われるオーディオデータタイプを提供します(“CoreAudio” (30 ページ)を参照)。

Audio2.0CoreAudio.framework

Core Audio全体で使われるオーディオデータタイプを提供します(“CoreAudioKitフレームワーク” (31 ページ)を参照)。

CA8.0CoreAudioKit.framework

省電力Bluetoothハードウェアへのアクセスを提供します。(“Core Bluetoothフレームワーク” (53 ページ)を参照)。

CB5.0CoreBluetooth.framework

アプリケーションのデータモデルを管理するためのインターフェイスが含まれています(“Core Dataフレームワーク” (44 ページ)を参照)。

NS3.0CoreData.framework

基本ソフトウェアサービスを提供します(一般的なデータ型の抽象化、文字列ユーティリティ、コレクションユーティリティ、リソース管理、環境設定など)(“Core Foundationフレームワーク” (45 ページ)を参照)。

CF2.0CoreFoundation.framework

Quartz 2D用のインターフェイスが含まれています(“Core Graphicsフレームワーク” (31 ページ)を参照)。

CG2.0CoreGraphics.framework

ビデオ画像、静止画像を操作するためのインターフェイスが含まれています。(“Core Imageフレームワーク” (31 ページ)を参照)。

CI5.0CoreImage.framework

iOSのフレームワークデバイスのフレームワーク

2014-09-17 | Copyright © 2014 Apple Inc. All Rights Reserved.

60

解説プレフィックス

最初のリリース

変数名

ユーザの位置を決定するためのインターフェイスが含まれています。(“Core Locationフレームワーク” (45 ページ)を参照)。

CL2.0CoreLocation.framework

オーディオおよびビデオを操作する下位レベルのルーチンが含まれています。(“Core Mediaフレームワーク” (46 ページ)を参照)。

CM4.0CoreMedia.framework

MIDIデータを処理する下位レベルのルーチンが含まれています(“CoreAudio” (30 ページ)を参照)。

MIDI4.2CoreMIDI.framework

加速度計およびジャイロデータにアクセスするためのインターフェイスを含まれています(“Core Motionフレームワーク” (46 ページ)を参照)。

CM4.0CoreMotion.framework

電話関連の情報にアクセスするためのルーチンが含まれています(“CoreTelephonyフレームワーク” (46 ページ)を参照)。

CT4.0CoreTelephony.framework

テキストのレイアウトとレンダリングのエンジンが含まれています(“CoreTextフレームワーク” (31 ページ)を参照)。

CT3.2CoreText.framework

オーディオおよびビデオを操作する下位レベルのルーチンが含まれています。このフレームワークを直接使用しないでください。

CV4.0CoreVideo.framework

ユーザのカレンダーイベントデータにアクセスするためのインターフェイスが含まれています(“EventKitフレームワーク” (47 ページ)を参照)。

EK4.0EventKit.framework

標準のシステムカレンダーインターフェイスを表示するクラスが含まれています(“EventKit UIフレームワーク” (19 ページ)を参照)。

EK4.0EventKitUI.framework

iOSのフレームワークデバイスのフレームワーク

2014-09-17 | Copyright © 2014 Apple Inc. All Rights Reserved.

61

解説プレフィックス

最初のリリース

変数名

接続されているハードウェアアクセサリと通信するためのインターフェイスが含まれています(“External Accessoryフレームワーク” (54 ページ)を参照)。

EA3.0External-Accessory.framework

文字列、コレクション、およびその他の下位レベルデータ型を管理するためのインターフェイスが含まれています(“Foundationフレームワーク” (47 ページ)を参照)。

NS2.0Foundation.framework

ゲーム関係のハードウェアと通信するためのインターフェイスが含まれています(“Game Controllerフレームワーク” (32 ページ)を参照)。

GC7.0GameController.framework

ピアツーピア接続を管理するためのインターフェイスが含まれています(“GameKitフレームワーク” (19 ページ)を参照)。

GK3.0GameKit.framework

複雑なOpenGL ESアプリケーションの構築に用いる、Objective-Cのユーティリティクラスが含まれています。(“GLKitフレームワーク” (32 ページ)を参照)。

GLK5.0GLKit.framework

セキュリティ関係の標準的なサービス群を提供します。

gss5.0GSS.framework

健康管理に関する情報の保存手段を提供します(“HealthKitフレームワーク” (48 ページ)を参照)。

HK8.0HealthKit.framework

自宅にあるデバイスの通信サービスを提供します(“HomeKitフレームワーク” (48 ページ)を参照)。

HM8.0HomeKit.framework

iOSのフレームワークデバイスのフレームワーク

2014-09-17 | Copyright © 2014 Apple Inc. All Rights Reserved.

62

解説プレフィックス

最初のリリース

変数名

アプリケーション内に広告を表示するためのクラスが含まれています(“iAdフレームワーク” (20 ページ)を参照)。

AD4.0iAd.framework

画像データの読み取りおよび作成のためのクラスが含まれています(“ImageI/Oフレームワーク” (33 ページ)を参照)。

CG4.0ImageIO.framework

デバイスによって使用されるインターフェイスが含まれています。このフレームワークを直接使用しないでください。

特になし

2.0IOKit.framework

JavaScriptのコードを評価し、JSONデータをパースするために使う、Objective-Cのラッパークラスがあります(“JavaScript Coreフレームワーク” (49 ページ)を参照)。

JS7.0JavaScriptCore.framework

Touch IDによるユーザ認証機能を提供します(“Local Authenticationフレームワーク” (54 ページ)を参照)。

LA8.0Local-Authentication.framework

アプリケーションへのマップインターフェイスの埋め込みと、逆ジオコーダ座標のためのクラスが含まれています(“MapKitフレームワーク” (20 ページ)を参照)。

MK3.0MapKit.framework

メディアファイルに埋め込まれたクローズドキャプションを表示します(“Media Accessibilityフレームワーク” (33 ページ)を参照)。

MA7.0Media-Accessibility.framework

フルスクリーンビデオを再生するためのインターフェイスが含まれています(“Media Playerフレームワーク” (33 ページ)を参照)。

MP2.0MediaPlayer.framework

iOSのフレームワークデバイスのフレームワーク

2014-09-17 | Copyright © 2014 Apple Inc. All Rights Reserved.

63

解説プレフィックス

最初のリリース

変数名

オーディオコンテンツを再生するためのインターフェイスが含まれています。

MT6.0MediaToolbox.framework

電子メールメッセージの作成とキューイングのためのインターフェイスが含まれています(“Message UIフレームワーク” (21 ページ)を参照)。

MF3.0MessageUI.framework

オーバーヘッドが小さいグラフィックス描画エンジンを提供します(“Metalフレームワーク” (34 ページ)を参照)。

MTL8.0Metal.framework

システムによってサポートされるUTI(Uniform Type Identifier)を定義します(“Mobile Core Servicesフレームワーク” (49 ページ)を参照)。

UT3.0MobileCore-Services.framework

デバイス間のピアツーピアネットワークを実装するためのインターフェイスを提供します(“Multipeer Connectivityフレームワーク” (49 ページ)を参照)。

MC7.0Multipeer-Connectivity.framework

VPN機能の設定や制御に用いるインターフェイスを提供します(“NetworkExtensionフレームワーク” (55 ページ)を参照)。

NE8.0Network-Extension.framework

雑誌や新聞をバックグラウンドでダウンロードするためのインターフェイスを提供します。(“NewsstandKitフレームワーク” (50 ページ)を参照)。

NK5.0NewsstandKit.framework

通知センターウィジェットを実装するためのインターフェイスを提供します(“Notification Centerフレームワーク” (21 ページ)を参照)。

NK8.0Notification-Center.framework

iOSのフレームワークデバイスのフレームワーク

2014-09-17 | Copyright © 2014 Apple Inc. All Rights Reserved.

64

解説プレフィックス

最初のリリース

変数名

OpenAL(クロスプラットフォームの定位オーディオライブラリ)用のインターフェイスが含まれています。(“OpenALフレームワーク” (34 ページ)を参照)。

AL2.0OpenAL.framework

OpenGL ES(クロスプラットフォームのOpenGL 2Dおよび3Dグラフィックスレンダリングライブラリの組み込み版)用のインターフェイスが含まれています(“OpenGL ESフレームワーク” (35 ページ)を参照)。

EAGL、GL

2.0OpenGLES.framework

入場券、搭乗券、会員カードなどをデジタル技術により再現した、「パス」を作成するためのインターフェイスが含まれています(“PassKitフレームワーク” (50 ページ)を参照)。

PK6.0PassKit.framework

写真やビデオにアクセスし、操作するためのインターフェイスを提供します(“Photosフレームワーク” (35 ページ)を参照)。

PH8.0Photos.framework

写真やビデオを操作する、アプリケーション拡張機能を開発するためのインターフェイスを備えています(“PhotosUIフレームワーク” (35 ページ)を参照)。

PH8.0PhotosUI.framework

VoIPアプリケーションをデバイスに登録する手段を提供します(“PushKitフレームワーク” (21 ページ)を参照)。

PK8.0PushKit.framework

Core Animationインターフェイスが含まれています(“Quartz Coreフレームワーク” (35 ページ)を参照)。

CA2.0QuartzCore.framework

iOSのフレームワークデバイスのフレームワーク

2014-09-17 | Copyright © 2014 Apple Inc. All Rights Reserved.

65

解説プレフィックス

最初のリリース

変数名

ファイルをプレビューするためのインターフェイスが含まれています(“Quick Lookフレームワーク” (50 ページ)を参照)。

QL4.0QuickLook.framework

Safariの履歴リスト項目を作成できます(“Safari Servicesフレームワーク” (51 ページ)を参照)。

SS7.0SafariServices.framework

3Dグラフィックスを生成するためのインターフェイスを提供します(“SceneKitフレームワーク” (36 ページ)を参照)。

SCN8.0SceneKit.framework

証明書、公開鍵と非公開鍵、および信用ポリシーを管理するインターフェイスが含まれています(“Securityフレームワーク” (55 ページ)を参照)。

CSSM、Sec

2.0Security.framework

ソーシャルメディアアカウントと相互にやり取りするためのインターフェイスが含まれています(“Socialフレームワーク” (51 ページ)を参照)。

SL6.0Social.framework

スプライトベースのアニメーションを作成し、レンダリングするための機能です(“SpriteKitフレームワーク” (36 ページ)を参照)。

SK7.0SpriteKit.framework

In-App Purchaseに関連付けられた会計処理を扱うためのインターフェイスが含まれています(“StoreKitフレームワーク” (51 ページ)を参照)。

SK3.0StoreKit.framework

デバイスのネットワーク設定を判別するインターフェイスが含まれています(“System Configurationフレームワーク” (51 ページ)を参照)。

SC2.0System-Configuration.framework

iOSのフレームワークデバイスのフレームワーク

2014-09-17 | Copyright © 2014 Apple Inc. All Rights Reserved.

66

解説プレフィックス

最初のリリース

変数名

Twitterサービスを介してツイートを送るためのインターフェイスが含まれています。(“Twitterフレームワーク” (21 ページ)を参照)。

TW5.0Twitter.framework

iOSアプリケーションユーザインターフェイスレイヤ用のクラスとメソッドが含まれています(“UIKitフレームワーク” (21 ページ)を参照)。

UI2.0UIKit.framework

デバイスによって使用されるインターフェイスが含まれています。このフレームワークを直接インクルードしないでください。

特になし

6.0VideoToolbox.framework

ウェブコンテンツをアプリケーションに取り込むための機能を提供します(“WebKitフレームワーク” (52 ページ)を参照)。

WK8.0WebKit.framework

シミュレータのフレームワークコードを記述しているときは、常にデバイスのフレームワークをターゲットにする必要がありますが、テスト中は特別にシミュレータ用にコードをコンパイルする必要があります。デバイスとシミュレータで利用可能なフレームワークはほとんど同じですが、少しだけ違いがあります。たとえば、シミュレータは、自身の実装の一部に OS Xのフレームワークをいくつか使用しています。さらに、デバイスのフレームワークとシミュレータのフレームワークで利用可能な同じインターフェイスでも、システムの制約によって多少異なる場合があります。

デバイスとiOSシミュレータの動作の違いについては、『iOS Simulator User Guide』に一覧が載っています。

iOSのフレームワークシミュレータのフレームワーク

2014-09-17 | Copyright © 2014 Apple Inc. All Rights Reserved.

67

システムライブラリ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の今後のバージョンで変更される可能性があります。したがって、ソフトウェアを特定のバージョンにリンクした場合、そのバージョンがユーザのシステム上で常に利用できるとは限りません。

iOSのフレームワークシステムライブラリ

2014-09-17 | Copyright © 2014 Apple Inc. All Rights Reserved.

68

この表は「iOSテクノロジーの概要」の改訂履歴です。

メモ日付

iOS 8.0で導入された機能についての情報を追加しました。2014-09-17

iOS 7で導入されたテクノロジーを追加しました。2013-09-18

iOS 6に導入された、新しいフレームワークや技術に関する情報を追加しました。

2012-09-19

iOS 5で導入されたテクノロジーを追加しました。2011-10-12

iOS 4.1およびiOS 4.2の新しい機能を反映するようにドキュメント全体を更新しました。

2010-11-15

『iPhone OSテクノロジーの概要』からドキュメント名を変更しました。

2010-07-08

iOS 4.0の機能を反映するように更新しました。2010-06-04

付録にリファレンスドキュメントへのリンクを追加しました。2009-10-19

iOS 3.0用に更新しました。2009-05-27

iOSとそのテクノロジーについて紹介した新規ドキュメント。2008-10-15

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 LoopCupertino, CA 95014U.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. の販売店、代理店、または従業員には、この保証に関する規定に何らかの変更、拡張、または追加を加える権限は与えられていません。一部の国や地域では、黙示あるいは偶発的または結果的損害に対する賠償の免責または制限が認められていないため、上記の制限や免責がお客様に適用されない場合があります。 この保証はお客様に特定

の法的権利を与え、地域によってはその他の権利がお客様に与えられる場合もあります。