「ImageBrowserで選択した画像をどのように対称表示させるか?」を実現するために、今回からCore Graphics APIの解説に移ろうと思ったのですが、 iPhone SDKのNDAも解除されたことですし、旬な時期を逃さないためにも、連載を180度(それほどでもないか...)方向転換したいと思います。ラッキーな事に、Core Graphics APIはiPhoneアプリケーションの開発(iPhone SDK)においてもそのまま利用できます。そこで、連載タイトルは「 Carbon視点でiPhone探求」としてみました(笑)。
ご存じの通り、iPhone用アプリケーションの開発にもCocoaを使います。Mac OS X環境ではCocoaネイティブの2D描画クラスなども利用可能なのですが、iPhone OS環境では、Core Graphicis(Quartz 2D)のみがネイティブの2D描画APIとなります。このままCore Graphics APIを解説していくと、話が完全にCocoaから離れますので、今まで実装してきた部分をiPhoneアプリケーションへ実装し直してから、2D画像描画へと話を進めることにします。「対称表示」機能を実装するためのソースコードは、そのままMac OS X用アプリケーションでも活用出来ますので(多分)、これにより二度手間を避けることができそうです(と思う)。
作業の流れとしては、今までの連載で記述してきたImageBrowserを活用したソースコードを、iPhone OSのCocoa(UIKit Framework用)に書き替えることから始めます。ただし、iPhone SDKにはあの便利な「Image Kit」はありませんので、その部分については別の方法を考えなくてはいけません。また、 iPhoneではファイルから画像を読み込むような環境は構築できませんので、その部分についても別アプローチが必要となります。とりあえず、今まで本連載で作成したソースコードは、雛形プロジェクトとしてMOSA Exchangeにアップロードしておきました。名称は「ShinbunShi3_08_11_14」です。今までの本連載の解説と共にご参照ください。
Mac OS X環境のCocoaは「AppKit(Application Kit)」と「Foundation」という2つのFrameworkから構成されていました。そのうちFoundationの方は、iPhone OSでも使用できる共通仕様です(サブセットですが)。そして、もう片方のAppKitを「UIKit」に置き換えるとiPhone用Cocoaの構成となります。ちなみに、iPhone OSでは「UIKit」と「Foundation」を合わせて「Cocoa Touch」と呼ぶようです。それ以外に利用できるFrameworkとしては、Core Animation、Core Graphics、OpenGL ES(OpenGLのサブセット)、Core Audio、CFNetworkを含むCore Foundationなどがあります。残念ながらQuickTimeやCore Imageなどは利用できません。
iPhoneでGUI(グラフィカルユーザインターフェース)を構築するにはUIKitを最大限活用します。UIKitで採用されているGUIは、ビューやコントロールを基盤にするなど、Mac OS Xのそれと多くの共通点があります。しかしメニューが存在しないなど、異なる点も多々見受けられます。また、iPhone OSにはMac OS Xではその仕組みが無い特殊なGUIも存在していることから、Mac OS XのGUIに固執する必要は無いようです。逆にUIKit独自のGUIをうまく活用してこそ、iPhoneらしいアプリケーションを開発することが可能となるでしょう。
CocoaでMac OS X用アプリケーションを開発してきたデベロッパーであれば、AppKit Frameworkに含まれるクラスやメソッド名の先頭2文字を、NSからUIに変更することで、Mac OS X側で習得した技術スキルの多くを再利用できそうです。しかし、GUIの種類やその制御方法についてはiPhone独自の仕組みも多数あるので、今までの知識を鵜呑みにして対処すると痛い目に遭うかもしれません。謙虚に構えましょう(笑)。
さて、iPhone用アプリケーションを実機にインストールして開発できるようになるまでの手順ですが、ざっとみて以下の様な過程となります。開発対象マシンは最新のMac OS X 10.5.xをインストールしたインテル版Maintoshとなります(PPC版では開発できませんので御注意を!)。
(1)開発用マシン(Macintosh)を用意する
(2)iPhoneかiPod touchを購入する(当然ですね)
(3)Apple IDをの作成する(ADCメンバーになる)
(4)http://developer.apple.com/iphone/へアクセス
(5)Apple IDとパスワードでログインする
(6)iPhone SDKをダウンロードして開発用マシンへインストール
(7)ドキュメントやサンプルもこのサイトからダウンロード可能
(8)さらなる作業のため「Program Portal」サイトへ入る
(9)実機インストールを可能にする各種認証用の手続きを行う
チュートリアルビデオや技術ドキュメント、サンプルソースコードなどの開発用リソースはApple IDでログインした「iPhone Dev Center」からダウンロードすることが可能です。ここにあるドキュメントの内容はすべて英語ですが、このうちの幾つかの重要な物に関しては日本語訳されており、以下のサイトからダウンロードすることが可能です(こちらもApple IDでのログインが必要)。
http://developer.apple.com/jp/iphone/library/japanese.html
「Getting Started Documents」(iPhoneアプリケーション開発の概要)
「Coding How-To’s 」(コーディングに関するFAQをまとめてある)
「iPhone OS プログラミングガイド」(iPhoneプログラミング全般)
「iPhone ヒューマンイン ターフェイス ガイドライン」(GUIの使い方ガイドライン)
「Objective-C 2.0 プログラミング言語」( Objective-C 2.0の解説書)
「iPhone OS View Controller プログラミングガイド」(UIViewController使用方法)
「iPhone OS Table View プログラミングガイド」(UITableView使用方法)
「iPhone OS Address Book プログラミングガイド」(AddressBook使用方法)
「iPhone Simulator プログラミングガイド」(iPhone Simulator簡易マニュアル)
「iPhone アプリケーション チュートリアル」(iPhoneアプリ開発行程の概要)
「iPhone OS Xcode クイックツアー」(Xcodeの簡易マニュアル)
まず最初に読むべきドキュメントは「Getting Started Documents」です。これを読めば、iPhoneアプリケーション開発において、どのような種類の技術の習得が必要なのかを理解できます。そして、Objective-Cの未経験者は「Objective-C 2.0 プログラミング言語」を適度にカバーし、続いて「iPhone ヒューマンイン ターフェイス ガイドライン」と「iPhone OS プログラミングガイド」を読破します。最後の2つのドキュメントはiPhoneアプリケーション開発者にとっては必読書ですので、絶対に避けて通ることはできません。覚悟しましょう(笑)。
実機を用いた(iPhoneやiPod touchへインストール)開発へ入る前には「iPhone アプリケーション チュートリアル」を読みます。開発ツールについて詳細を確認したい場合には「iPhone OS Xcode クイックツアー」と「iPhone Simulator プログラミングガイド」を調べます。アプリケーションに実装したい機能について何かしらの疑問が湧いた時には「Coding How-To’s 」が大変参考になります。UIKitに属する主要クラスを解説したドキュメントとしては「iPhone OS View Controller プログラミングガイド」「iPhone OS Table View プログラミングガイド」「iPhone OS Address Book プログラミングガイド」の3つが用意されています。
Mac OS X環境でCoocaアプリケーションを開発していた方は、「iPhone OS Xcode クイックツアー」や「Objective-C 2.0 プログラミング言語」を読む必要はないでしょう。ただし、UIKitではObjective-C 2.0のプロパティ機能を頻繁に使うので、その箇所だけは復習しておくべきかもしれません。それにしても、Interface Builderの使い方に関しての日本語ドキュメントが用意されていないのは残念ですね。どちらかと言うと、iPhoneアプリケーション開発には、XcodeよりInterface Builderに関する知識の方が重要になるからです...。ちなみに英語ドキュメントは「Inter face Builder User Guide」です。
技術ドキュメントを一通り読破したら、次にすべき事はサンプルソースコードを参照することでiPhoneアプリケーションで実現可能なことを正しく認識することだと思います。次回は「iPhone Dev Center」からダウンロードできるサンプルソースコードの内容を詳しく紹介したいと思います。