連載
» 2010年06月08日 00時00分 公開

SDKで始めるiPad/iPhoneアプリ開発の勘所(1):いまさら聞けないiPhone/iPadアプリの作り方の基礎 (3/4)

[竹内彰吾,株式会社ビーブレイクシステムズ]

iPhone/iPadアプリは、どうやって動いているの?

4つのレイヤに分かれている

 iPhone/iPod touch/iPad上のアプリはすべて「iPhone OS」(※2010年6月8日から「iOS」)という組み込みプラットフォームの上で動作しています。iPhone OSは、Cocoa TouchMediaCore ServiceCore OSの4つのレイヤ(層)で構成されており、これらのレイヤが提供する機能を使って、アプリは動作しています。

 Cocoa Touch〜Core OSの順に上位〜下位レイヤとなります。下位レイヤは、よりデバイスに近い複雑な機能を持ちます。上位レイヤは、下位レイヤを抽象化したものです。

 iPhone/iPadアプリの実装では、最上位にあるCocoa Touchの機能を主に使用して開発を進めていくので、こちらを説明していきましょう。

 なお、そのほかレイヤの詳細については下記のアップル公式サイトにて具体的に記載されていますので、そちらも参照してください。

Cocoa Touchレイヤ

 Cocoa Touchレイヤは、iPhone/iPadアプリ開発において最も主要となる下記のフレームワークを提供します。

  • UIKitフレームワーク
    • アプリケーション全体の管理
    • アプリケーションの画面の仕組みを提供
    • 画面のタッチイベントの取得や処理
    • センサなどのデバイス制御を提供
    • ……など
  • Foundationフレームワーク
    • 文字列などのデータ構造を提供
    • 配列などのデータ管理
    • 例外処理やメモリ管理の仕組みを提供
    • 設定ファイルなどのリソース管理
    • ……など

 アプリ実装時は常に、これらフレームワークが提供する機能を使用し、必要となった場合のみCocoa Touchよりも下位レイヤのフレームワークを使用するようになっています。

 これらCocoa Touchフレームワークはすべて「Objective-C」というプログラミング言語によって作られた機能の集まりとなっています。開発者もObjective-Cを用いて実装し、フレームワークの提供する機能を使用しながらiPhone/iPadアプリを開発します。

Objective-C

 プログラミング言語の1つで、iPhone/iPadアプリの開発では、この言語を用いて実装します。C言語に対してオブジェクト指向の機能を持たせたものとなっており、非常に柔軟な実装が可能です。

 本連載では、Objective-Cの言語仕様については触れませんが、別連載で分かりやすい解説があるので、そちらを参照してください。

 次に、下記のような簡単なメニュー表示を行うソースコードの一部を記載します。

 ここでは、Cocoa Touchフレームワークを使ったObjective-Cでの実装イメージをつかむため、「こんな感じか」という程度にざっくりと眺めてみてください。

 なお、見やすいようにソースコード中に「サンプルメニュー」など日本語を直接書いていますが、実際には設定ファイルから呼び出すように記述します。この点については、本連載で後ほど説明します。

- (void)viewDidLoad {
    [super viewDidLoad];
    self.menuList = [NSMutableArray array];
    
    // タイトルの設定
    self.navigationItem.title = @"サンプルメニュー";
    
    // メニュー項目:サンプル画面1
    UIViewController *sample1= [[Sample1ViewController alloc] initWithStyle:UITableViewStylePlain];
    [self.menuList addObject:[NSDictionary dictionaryWithObjectsAndKeys:
        @"サンプル1", kTitleKey,
        sample1, kViewControllerKey,
        nil]];
    [sample1 release];
    
    // メニュー項目:サンプル画面2
    UIViewController *sample2 = [[Sample2ViewController alloc] initWithStyle:UITableViewStylePlain];
    [self.menuList addObject:[NSDictionary dictionaryWithObjectsAndKeys:
        @"サンプル2", kTitleKey,
        sample2, kViewControllerKey,
        nil]];
    [sample2 release];
}

 クラス名の接頭語が「NS〜」「UI〜」となっているものが前項で述べたCocoaTouchフレームワークが提供するクラスを表します。

 「NS〜」から始まるクラス(NSMutableArrayNSDictionaryなど)は、Foundationフレームワークが提供するクラスであり、「UI〜」から始まるクラス(UIViewControllerなど)は、UIKitフレームワークが提供するクラスです。

 どちらのフレームワークも約100個ほどのクラスを提供しており、これらを使用しながら目的の機能を実装していく形となります。

 またSample1ViewControllerはUIViewControllerを継承した独自のクラスであり、図の「サンプル1」をタップした後に遷移する画面を表しています。

 実装については、この時点で分からないことが多くても問題ありません。「実際にアプリを作りながら分からない記述があれば、その都度調べる」ということを繰り返し行うと、自然と身に付いてくるでしょう。

 次ページからは、Xcodeを使ったiPhone/iPadアプリの実装方法について説明していきます。なお、iPhone SDKはインストール済みであることを前提としているので、まだの方は、前ページを参照しておいてください。

Copyright © ITmedia, Inc. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。