iOSのアーキテクチャ

a)       iOSのアーキテクチャは階層化されている
最上位レベルでは、iOSはそれが稼働しているハードウェアとアプリケーションの間の仲介役を果たします。アプリケーションがハードウェアと直接やり取りすることはめったにありません。代わりにアプリケーションは、明確に定義された一連のシステムインターフェイスを介してハードウェアとやり取りします。このようなインターフェイスによって、ハードウェアの能力が異なるデバイス上でも一貫性を保って動作するアプリケーションを容易に作成できます。
iOSテクノロジーの実装は、図1-1に示すように、1つのレイヤセットで表現できます。システムの下位の各レイヤには、すべてのアプリケーションが依存する基本的なサービスとテクノロジーがあります。一方、上位レベルの各レイヤには、より高度なサービスとテクノロジーが含まれます。

iOSシステム構成の纏め-LMLPHP

    図 1-1 iOSのレイヤ

主要階層構造 :

Cocoa Touch

レイヤ

Address Book UI Framework、Event Kit UI Framework、Game Kit Framework、iAd Framework、Map Kit Framework、Message UI Framework、UIKit Framework

Cocoa Touchはいくつかの重要なフレームワークで構成され、大きく「Foundationフレームワーク」と「UIKitフレームワーク」の2つに分けることができる。前者は主に基本的なデータの処理を、後者は主にGUI(グラフィカル・ユーザー・インタフェース)の構築をつかさどる。

Media

レイヤ

Core Graphics、Core Animation、OpenGL ES、Core Text、Image I/O、Assets Library Framework、Media Player Framework、AV Foundation、OpenAL、Core Audio Frameworks、Core Media

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

Core Service

レイヤ

Address Book Framework、CFNetwork Framework、Core Data Framework、Core Foundation Framework、Core Location Framework、Core Media Framework、Core Telephony Framework、Event Kit Framework、Foundation Framework、Mobile Core Services Framework、Quick Look Framework、Store Kit Framework、System Configuration Framework、Block Objects、Grand Central Dispatch  、In App Purchase、Location Services、SQLite、XML Support

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

Core OS

レイヤ

Accelerate Framework、External Accessory Framework、Security Framework、System

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

b)       iOSの技術はフレームワークというパッケージとして提供される
Appleでは、フレームワークと呼ばれる特殊なパッケージとしてほとんどのシステムインターフェイスを提供しています。フレームワークは、共有ダイナミックライブラリとそのライブラリをサポートするために必要なリソース(ヘッダファイル、画像、ヘルパアプリケーションなど)を含む1つのディレクトリです。フレームワークはXcode上でアプリケーションプロジェクトに組み込んで使います。

c)       Developer Libraryを自由に活用して開発できる
iOS Developer Libraryはアプリケーション開発における重要なリソースです。また、APIリファレンス、プログラミングガイド、リリースノート、技術ノート、サンプルコードその他、アプリケーション開発に役立つさまざまなヒントやガイダンスが揃っています。
iOS Developer Libraryには、Apple Developer Webサイトから、またはXcodeからアクセスできます。
Xcode上で「Help」>「Documentation and API Reference」を実行すると、Xcodeの資料を扱うウインドウが開きます。ここにはiOSアプリケーションの開発に関する情報が集約されています。資料を閲覧、検索するほか、「しおり」をつけておくことも可能です。

アプリケーションの構成

a)       iOSアプリケーションの主要オブジェクト

iOSシステム構成の纏め-LMLPHP

    図 2-1 iOSアプリケーションの主要オブジェクト

UIApplicationMain関数は、動作に不可欠なオブジェクトをいくつか用意した後、アプリケーショ ンの実行を開始します。iOSアプリケーションの心臓部に当たるのがUIApplicationオブジェクトで す。システムと、アプリケーションに属する他のオブジェクトとの間で、やり取りを仲介する役割を 果たします。多くのアプリケーションで使われる主なオブジェクトを図 2-1に示し、表 2-1で各オブ ジェクトの役割を説明します。まず注意しておきたいのは、iOSアプリケーションが「モデル-ビュー-コントローラ」アーキテクチャにもとづいて動作する、という事実です。この設計パターンには、アプリケーションのデータやビジネスロジックを、その視覚的表現と分けて管理する、という働きがあります。画面の大きさが異なるさまざまなデバイスで動かすためには、このアーキテクチャが不可欠です。

b)      メイン実行ループ

アプリケーションのメイン実行ループは、ユーザが関与するイベントをすべて処理します。 UIApplicationオブジェクトは起動時にメイン実行ループをセットアップし、これを使ってイベント を処理したり、ビューベースのインターフェイスを更新したりします。名前からも分かるように、ア プリケーションのメインスレッド上で動作します。したがって、ユーザが関与するイベントは、受け 取った順で直列に処理されます。 図 2-2に、メイン実行ループのアーキテクチャと、イベントに応じてアクションが実行される様子を 示します。ユーザはデバイスを介してアプリケーションとやり取りするので、これに関係するイベン トをシステムが収集し、UIKitがセットアップする特別なポートを通してアプリケーションに配信する ようになっています。イベントは内部のキューに入り、メイン実行ループでひとつずつ取り出して、実行コードにディスパッチします。UIApplicationオブジェクトがまずイベントを受け取り、どのように処理するか判断します。タッチイベントは通常、主ウインドウオブジェクトにディスパッチされ、これが次に、タッチイベントが発生したビューにディスパッチします。ほかのイベントも、経路は若干異なるものの、最終的に適切なオブジェクトに渡ります。

iOSシステム構成の纏め-LMLPHP

    図 2-2 メイン実行ループでのイベント処理

参照:

「iPhoneAppProgrammingGuide 」

「iOSTechOverview」

04-23 01:16