2009年10月アーカイブ

 Cocoaプログラミングにおいて,インターフェイス・ビルダー(Interface Builder: IBと略)の存在は大きいものです。昨今,たくさん出版されたiPhone向けのプログラミング本の多くも,まずはIBを使ってアプリの画面をデザインすることを紹介するところから始まります。

 IBは,その名前の通り,操作画面(インターフェイス)の構築(ビルダー)を行なう開発ツールです。まずは見た目をデザインして,あとから動作をプログラミングすることが出来るため,直感的とも言われます。

 しかもIBは,Cocoaプログラミングのパワーを利用しているので,コードを書くようなプログラミングをしなくても,IB上でインターフェイスを構築する操作の延長だけで,簡易なプログラムを完成できてしまう機能も持ちます。

 今日ではVisual BasicやFlashなどもポピュラーになり,この手の開発方法も目新しくはなくなりましたが,IBが登場した時代において革新的であったことに間違いはありません。

--

 しかし,IBが出来ることにも限りがあります。IBを起動してご覧いただければわかりますが,最初こそまっさらで分かりやすそうな顔をしています。ところが操作を始めて作業が進むと,次第に扱う要素や項目が増えて,全体を把握することが難しくなってくることに気がつきます。

 さらにIBで構築した画面を踏まえてコードによるプログラムを付け加えていく過程でエラーが発生すると,どこに問題があるのか追いかけることが難しくなるのです。IB上での作業の間違いなのか,コードの間違いなのか,あるいはその2つの接続部分なのか...,判別するだけでも大変です。

 そういう場合,ほとんどがIBでの設定忘れや接続間違いといった原因です。IBが用意する多彩な設定項目は柔軟性の象徴ではありますが,同時に,設定間違いを見落としがちな原因を作っているのです。

--

 もしCocoaプログラミングを本格的に挑戦したいということであれば,遅かれ早かれIBを使わない脱IBプログラミングにステップアップする必要が出てきます。

 「画面の部品を直感的に配置することが出来る」というIBの道具的なメリットを除けば,IBの操作で実現できることは,コードを直接書いて実現できます。

 特にiPhoneプログラミングは,Macと違って画面が320x480と比較的狭いため,自分で方眼紙に画面設計図を描いて,座標数値をコードで手入力しても労力はたかが知れています(その部分だけIBを利用して,座標をメモれば楽ですね)。

 このような脱IBプログラミングをすることによって,iPhoneのより高度なアプリ開発へステップアップすることも可能です。少なくとも,IBとの組み合わせで複雑化してしまうことを避けることが出来ます。

--

 もちろん,IBを完全に捨てる必要はありません。実際,IBはパパッと画面を作るのには便利です。直感的であることのメリットが全くなくなったわけではないのです。

 そのようなIBの存在を前提にしながら脱IBプログラミングを目指すことによって,初級から中級へのステップアップが出来るというところに,Cocoaプログラミングの楽しさがあります。

 ちなみに,このようなコードベースのiPhoneプログラミングについて書いているのが鳥の絵表紙の『iPhone SDK アプリケーション開発ガイド』(オライリー)です。プログラミングに慣れた方々の評価も高い本です。ただし,内容はSDK2.0ベースのため,新しい機能については触れられていません。

 同様にSDK2.0ベースですが,脱IB(コートベースの)プログラミングへ誘ってくれるのは『iPhoneデベロッパーズクックブック』(ソフトバンククリエイティブ)です。日本で最初に翻訳出版されたiPhone開発本ですが,実はコードベースのプログラミングによる本だったという点は興味深いです。

 
 アップル社の公式ドキュメント(開発関連文書)は,大半が英語のままで,日本語の翻訳されたものも限られるため,かなり敷居が高く受け止められていますが,実は結構親切な説明をしてくれています。

 日本語にも翻訳されている『Coding How-To's』という文書は,よく使うコードの塊を整理して紹介してくれているので,IBでIBで実現していることをコードでどう書くのかを知るのを手伝ってくれます。

 またコードに慣れた頃に,全体を見渡すつもりで『iPhone OSプログラミングガイド』を読んでみると,コードの背景がハッキリしてくるのを手助けしてくれるかも知れません。少々手強いので,技術解説文書に慣れていない頃にはチンプンカンプンかも知れませんが,必読であることには変わりありません。

 さらにアップル社としては『iPhoneヒューマンインターフェイスガイドライン』という文書も必ず読んで理解して欲しいと望んでいます。オリジナリティ溢れる独創的なアプリを開発する人たちにとっては目の上のたんこぶみたいな文書ですが,ベースとなるiPhoneに込められた設計思想を知ることも大事でしょう。

 以上の公式ドキュメントは,バージョンはともかく日本語翻訳されていますので,開発を進めていく過程で目を通すことをおすすめしておきます。

  

 書籍もそうですが,サンプル(書籍付録やアップル公式のもの)をいろいろ見ていくことも重要ですね。

 Cocoaプログラミングの再入門のつもりで,iPhoneプログラミングを勉強中です。

 すでにご紹介してきたように,iPhoneプログラミング関連本がたくさん出版されました。こうしたiPhoneアプリ開発本の中で,どの本をよく参照しているのか,ぼちぼち定番が決まってきましたので,記録したいと思います。

 今回は再入門〜中級プログラミングの範疇です。具体的には,Interface Bulderから卒業してコードプログラミングしたい,マルチタッチやグラフィック等の活用は後回しで,ネットの情報を取ってきてテーブルビュー上で操作閲覧していくタイプのアプリ開発,とりあえず実機テストまで試みている,という内容です。

 必読ともいえる「iPhoneヒューマンインターフェイスガイドライン」というApple社の公式ドキュメントがありますが,そこに書かれている3つのアプリケーションスタイル(生産性型/ユーティリティ型/没入型)で言えば,生産性型アプリケーション,それを開発する場合といえます。
 
    
 
 上の4冊を軸として,適宜必要な場合に次のような本を参照します。

 
    

 
 あとはApple社公式ドキュメントのリファレンスものとサンプルコードを参照して進めています。


 再入門なので,CocoaやObjective-C,開発環境に関しては一通りの確認と必要なときの参照で済ませる形になります。ちゃんと復習するならば『基礎からのiPhone SDK』もしくはMac開発本ですが『たのしいCocoaプログラミング』を押さえておくのがよいと思います。

 あとは,分厚い『はじめてのiPhoneプログラミング』を根気よくなぞって,プログラムと動作結果の関係を確認していく作業を続けます。私の場合,第9章「ナビゲーションコントローラーとテーブルビュー」のところまで頑張り,そこからサンプルをアレンジしていく流れになりました。

 
 同じくテーブルビューを使うサンプルで,インターネットからのデータをダウンロードして表示するものを扱っていたのが『iPhoneアプリケーションプログラミング』でした。簡易なXMLデータをつかった事例なので,XMLデータをパースする方法もここで試行錯誤して学びました。
 また,他の本と比較して,この本はリファレンス性が高いので,自分のやりたい事柄に関係するメソッドを調べるときに便利だったりします。ただし,網羅されてはいないので,公式ドキュメントも手放せませんが...。

 
 iPhone OS 3.0など新しい情報が欲しい場合や,セカンドオピニオン的に参照したい場合に活躍するのが『iPhone SDK3 プログラミング大全』になります。それぞれの解説がパーツを紹介するように掲載されているので,リファレンス性を狙った書籍です。が,なんでしょう...私個人としてはメソッド一覧のデザインがしっくりこなくて,信頼できるし頼ってもいますが,他と比べると参照頻度が低くなりやすいです。
 それでもテーブルビューやネットワークに関する知識の確認,CoreDataに関する情報の整理などには,大変力を発揮してくれています。他のタイプのアプリを開発する場面で,まだまだ活躍してくれると思います。

 
 まとまりのあるサンプルを通して解説をして,理解を助けてくれる書籍として『サンプルプログラムでマスターする iPhone SDKプログラミング実践ガイド』は意外と重宝しています。
 頭の中は他の開発本のサンプルや解説,あるいは自分で勝手にアレンジしているコードの把握で混沌とした状態なので,逆にこの本のあっさりとした解説が有り難かったりします。amazonレビューに誰かが書かれているように,コードの詳細な解説がないため,コード読込みが慣れない人には取っつき難いかも知れませんが,コードを追いかけるのも慣れてきた人にはさっぱりした感じでよいのではないかと思います。

 
 あとはObjective-Cに関して『詳解Objective-C 2.0』は無くてはならない参考書ですし,少し違う方向からの情報を得るために『iPhoneデベロッパーズクックブック』をみたり,コード中心でプログラミングをしていくにあたって『iPhone SDK アプリケーション開発ガイド』の情報も助けになります。

--

 以上,再入門〜中級プログラミング(生産性型アプリケーション)を勉強中の私がよく参照している書籍を挙げてみました。書籍選びの参考になれば幸いです。

 なお,入門〜初級プログラミング(たとえば没入型アプリケーション)といった場合には,また異なるチョイスがあり得ます。マルチタッチ操作によってアニメーションするようなグラフィック中心のものは,また違ったノウハウが必要で,それを詳しく扱っているのは別の本の可能性もあります。

リンク

user-pic
   

レポート「FlashユーザーのためのiPhoneアプリ開発入門」
http://gihyo.jp/design/serial/01/67ws/0028

 イベントのレポート記事です。なかなか面白そう。

Flash for iPhoneの衝撃 これから何が起こる?」(ASCII.jp)
http://ascii.jp/elem/000/000/467/467705/

 これでWindowsプラットフォームユーザーも従来からのFlashコンテンツ開発者の皆様もiPhoneアプリ開発ができますね。先日,無料アプリによるアプリ内課金も可能になりましたから,今後も賑やかになりそうです。

The iPhone Developer's Cookbook 2nd Edition
http://www.amazon.com/iPhone-Developers-Cookbook-Building-Applications/dp/0321659570/ref=sr_1_2?ie=UTF8&s=books&qid=1254753525&sr=8-2

通称「エリカ本」も3.0対応版が控えています。

基礎からのiPhone SDK 改訂版
http://www.sbcr.jp/books/products/detail.asp?sku=4797357011

 内容は,3.0対応のための細かな見直しと,iPodライブラリへのアクセスが可能になったことによる,例題アプリの追加(差し替え)がされた程度です。

 ゼロからiPhoneアプリ開発の学習をする人には,有力な選択肢の一つです。個々の本との相性は,個人個人違うので,書店で手に取ってご判断くださいね。