この連載では、iOS SDKによるiPhone/iPad開発について解説します。現在iPhone/iPadアプリケーションを開発するには、Xcode/Interface Builderを用いた標準的な開発手法の他に、WEBアプリケーション+ネイティブアプリケーションのハイブリッド型開発手法、PhoneGapやTitanuim Mobile, Corona SDKといったサードパーティライブラリによるクロスプラットフォームアプリケーション開発手法などいくつか選択肢があります。
本連載ではObjective-Cによるネイティブアプリケーション開発に焦点をあてますが、初回はこれらの開発手法の特徴を確認しておきましょう。
XcodeとInterface Builderを使った開発
XcodeとInterface Builderを使った開発は、iPhone/iPad向けのアプリケーション開発手法としては最も標準的な手法です。Interface BuilderでGUIによりユーザインタフェース部分を開発し、XcodeでObjective-Cを用いて機能を実装していきます。iPhone/iPad向けに限っていえば最も融通が効く開発方法であり実行効率もよいですが、特にObjective-Cを用いた開発部分はメモリ管理が必要であったりと煩雑な部分も多く、若干ハードルの高い開発手法でもあります。
この開発手法の入門としては、別連載「目指せ!iPhoneアプリ開発エキスパート」を参考にしてみてください。
WebViewとの連携を使ったアプリケーション開発
現在スマートフォンの主流は、iOSを搭載するiPhoneとAndroid OSを搭載する端末が主流といえます。通常これらの端末向けにアプリケーションを開発するには、iOSアプリケーションならObjective-C、AndroidアプリケーションであればをJavaと、それぞれ異なる言語を学ぶ必要があります。
Objective-CとJavaは全く異なる言語ですが、これらの開発環境には大きな共通点もあります。それはiOS、Android OSともに、WEBブラウザエンジンにWebkitを採用している点です。WebkitはHTML5機能の実装に積極的であるため、PC向けWEBブラウザよりも新しい機能が使いやすい状況にあります。そのためブラウザの機能内でもかなりリッチな表現を実現することが可能です。
また、両OSともWEBブラウザコンポーネントとネイティブアプリケーション部分との連携機能が用意されており、WEBブラウザ内で実現できない端末固有の機能などはネイティブ機能を使って実現することも可能です。
WEBブラウザコンポーネントで実現する機能はサーバサイドのWEBアプリケーションとして実装しておけば、Appleの審査やユーザによるアップデート作業を経ずともアプリケーションをアップデートすることができるため、メンテナンス性においても非常に有利となります。
クロスプラットフォーム向けの開発環境
iPhone/iPadアプリケーションの開発に限らず、モバイルアプリケーション向けのクロスプラットフォーム開発環境がいくつか登場しています。ここではそのうち代表的なものを紹介します。
PhoneGap
PhoneGapは、HTML+CSS+JavaScriptといった技術を用いて作成したWEBアプリケーションをiOS/Androidなど用のネイティブアプリケーションに変換できる開発環境です。PhoneGapのAPIを使って、デバイス固有の機能を呼び出すことも可能です。
Titanium Mobile
現在「Titanium Mobileで作る! iPhone/Androidアプリ」という連載もされているTitanium Mobileは、JavaScriptを使ってアプリケーションを開発する環境です。PhoneGapではレイアウトにHTMLを使用しますが、Titanium Mobileでは基本的にJavaScriptのみを用いて記述するところが開発フロー上の違いとなります。
Corona SDK
Corona SDKは、Luaという言語を用いて開発を行うSDKです。汎用的なアプリケーション開発環境というよりはゲーム開発に重点をおいているようです。米国で14歳の少年が作成したBubble BallというゲームがApp Storeで無料ゲームのトップになったとして話題を呼びました。
なぜ、いまさらObjective-Cで開発なのか
冒頭で述べたとおり、本連載ではObjective-Cでの開発を取り上げます。上記のようなライブラリを使った開発は、上手く使えば非常に高い生産性をもたらしてくれる素晴らしいものであると思います。しかし、細部に拘りたい場合やパフォーマンスを優先したい場合など、まだまだObjective-Cでの開発が必要な場面は少なくありません。
また、iPhone/iPadアプリケーションの開発にあたってはObjective-Cでの開発を理解しておくと、これらの便利なライブラリを使った際にも内部の処理がある程度想像できるようになるでしょう。そのため、適切なライブラリを選択する際にも有益な知識となると期待しています。
本連載の予定
まずは、Interface Builderも使わない、ちょっと硬派な開発法について紹介します。Interface Builderは優れたツールですが、初学の際にはInterface Builderによってどういった処理が行われているかわかりにくい場合があるかと思います。コードでの開発を理解することでInterface Builderが何をやっているかを実感することができ、本格的なアプリケーションを書く上での理解の助けになると期待しています。
簡単なアプリケーション作成を通して、iPhone/iPadアプリケーション開発に必要な知識を学んでいきます。UIKitの使い方にとどまらず、iOS4から利用できるようになった新機能や、Blocks、Grand Central DispatchといったObjective-Cの新構文にも触れ、iPhone/iPadアプリケーション開発の原理を理解することを目指します。
次回は実際にコードを書きながら開発方法について学んでいきます。なお、連載「目指せ!iPhoneアプリ開発エキスパート」などを参考に開発環境は準備されていることを前提に進めていきす。