2013-07-25

iOSアプリ開発事始05:そうだ、iOSアプリの動作メカニズムについて知っておこう!

iPhone、iPod touch、そしてiPadなどのiOSプラットフォーム上で動いているアプリケーションはどのような仕組みで動いているのだろう? よくある素朴な疑問ですね。でも、ハードと画面に表示されるアプリのやり取りが具体的にどのようになっているかを知ることは、アプリケーション設計や実装の際にもきっと何らかの啓示を与えてくれるもの(ちょっと大袈裟?)だと思います。ハードと画面上で動作するアプリの間を取り持つiOSプラットフォームがどのような構造でどのようにアプリを制御しているのか? 簡単にその辺りを理解しておくための覚書として、今回のブログでは記しておこうと思います。


iOSの構造は4つの階層でできている


iOSプラットフォームは、ハードウェアと画面上で動作するアプリの仲を取り持つ仲介役としての役割を果たしているわけです。つまり、ハードウェアと開発したアプリが直接やり取りすることはほぼ無いということを意味します。その役割をシステムインターフェースとしてのiOSが果たしてくれるわけです。このおかげで、ハードウェアの能力が異なるデバイス上でも開発アプリが容易に動くことができたりするわけですね。
これを容易にしてくれるiOSプラットフォームの構造は階層化されており、Cocoa TouchMediaCore ServiceCore OSの4つのレイヤから構成されています。


上図のApplicationの下、レイヤ(層)の最上位にある「Cocoa Touch」の機能を主に使用してアプリの開発は行なわれます。「Cocoa Touch」より下位のレイヤ群は階層の段階で下になればなるほどよりハードに近い複雑な機能を持っています。上位になればなるほど下位レベルの構造をオブジェクト化してより分かりやすくしています。ということで、下位構造のMedia、Core Service、Core OSも、高度な機能が必要な場合には必要になるでしょうが、多くは最上位のCocoa Touchにおいてアプリ開発は行なわれるということですね。


各レイヤの概要

  • Cocoa Touch
  • iOSアプリケーションを作成するための主要なフレームワークが含まれています。最上位レイヤーで、ビューやiPhoneアプリを開発する上で必須の機能を実装。iPhone/iPadの特徴、マルチタッチや、その他アプリケーションの基盤技術もこのレイヤーで実装。
    マルチタッチ機能の制御、加速度センサ、View hierarchy、言語サポート、カメラ、iAd、Game Kit、Address Book UI、Map Kitなどの各コンポーネントを実装している。

  • Media
  • グラフィック、ビデオなど、Audio・Visualの機能に対応するレイヤです。
    OpenAL、オーディオと録音、ビデオフォーマットおよびイメージフォーマットのサポート、Quartz、 Image I/O、Core Animation、Core Audio、Core Text、Core MIDI、OpenGL ES、AirPlayなどの各コンポーネントを実装している。

  • Core Service
  • アプリケーションから使用可能なサービスが実装されいる。「Media」、「Cocoa Touch」といった上位レイヤーに実装されている機能も、「Core Service」の機能を利用し実装されている。
    ネットワークサポート、アドレスブック、SQLite データベース、Core Foundation、Core Location、Grand Central Dispatch、In-App Purchaseの各コンポーネントを実装している。

  • Core OS
  • スレッド、ネットワーク、ファイルシステム、メモリ処理等のOSが持つ基本的な機能を持つ。ドックコネクタに接続した外部デバイスのサポート、セキュリティ関連の機能もこの下位層で実装することができる。
    TCP/IP、ソケット、パワーマネージメント、アクセサリの制御、スレッド、セキュリティ、ファイルシステムの各コンポーネントを実装している。
4つのレイヤ(Cocoa Touch、Media、Core Service、Core OS)の中で実際にアプリの開発を進めていく際は、最上位にあるCocoa Touchの機能を主に使用して開発を進めていくことになるようですね。次回以降のブログでは実際の開発を踏まえた各機能の詳細を記して行きたいと思います。


関連記事 -iOSアプリ開発事始


0 件のコメント :

コメントを投稿

Related Posts Plugin for WordPress, Blogger...