iPhone開発本 iPhone Cool Projects

公開日: : 最終更新日:2009/10/18 iPhone, ,

iPhone Games Projectsに続いて、iPhone Cool Projects も買ってみた。
この本はApress的にはBeginning iPhone 3 Development (邦訳 はじめてのiPhoneプログラミング)の次に読むべき本で、説明も図を使って丁寧になされている。7人の分筆により作られた本。

人により得意な分野、不得意な分野があるだろうし、ひとに説明できるようになるまで習熟するまでには時間がかかるので、このように自分の詳しい部分だけを責任持って書くというのは今後も流行っていくのかもしれない。

先月発売されたばかりのサンプルプログラムでマスターするiPhone SDK プログラミング実践ガイドも、複数の人により書かれていて、この本のスタンスに似ていると感じた。

iPhone Games Projects はObjective-Cを使わずに書かれていたりしてちょっと特殊な世界だったが、この本は一般Cocoaプログラマでも普通に使いそうな内容が紹介されている。

Apressのページはこちら

以下、簡単に内容紹介。

1. Designing a Simple, Frenzic-Style Puzzle Game

パズルゲーム Frenzic の作者、ARTIS SoftwareのWolfgang Ante 氏の章。
Frenzicのようなゲームを、Objective-Cで普通にUIViewやNSTimerを使って書く方法について記載。
作者も、通常はゲームはOpenGL ESなどを使って書くものだと書いているが、Frenzicのようなあまり動きが激しくないパズルゲームであればUIKitを使う手もある。その場合に使える実用的な技などを紹介している。

例として、Frenzicを簡略化したサンプルアプリケーション、Formicを使用している。FormicのソースコードはApressのダウンロードサイトからダウンロードすることができるので、動かしてみるとどんなものか理解することができる。

内容紹介

  • MVC原則の紹介と、今回一部それを破っている理由について
  • application delegateを使って、MVC間でデータをやりとりする
  • ユーザデフォルトを使ってゲームを再開する
  • iPhoneではオーディオ再生は重い処理なので、最初から考慮に入れておく

個人的には、Frenzicで点数を獲得したときにスコアが拡大して徐々に消えていくアニメーションを、UIViewを2枚用意して、1枚は通常表示、もう一枚は拡大アニメーション用に使用するという小技を初めて知ったので早速今作っているアプリに活用してみた。

2. Mike Ash’s Deep Dive Into Peer-to-Peer Networking

Rogue Amoeba SoftwareのMike Ashの章。Commondore 64からのプログラマで、NetAwakeやNanogolfの作者らしい。

POSIXソケットを使ったLANゲームのサンプルアプリケーションを使って、iPhoneでのネットワーク関係のコーディングを学ぶ。サンプルはSphereNetで、LAN内の複数のiPhoneアプリ間で、画面上で動き回る円の位置を共有するもの。
円のアニメーションにはCore Animationを使っているが、主眼はUDPを使ったデータのやりとりのコーディング。
UDPを使ったのは、リソースが少なく高速であるため。SphereNetのようなアプリであれば、多少のデータの欠損は無視することができる。

内容の紹介

  • ソケットプログラミング 例) socket(AF_INET, SOCK_DGRAM, 0)など
  • ネットワークを使ってデータをやりとりする際に注意しべき、Endian問題 (htons(), ntohs(), CFSwapInt32HostToBig())
  • #pragma pack(1)
  • Bonjour を使って、LAN内で同じプロトコルを使えるデバイスを探す

3. Doing Several Things at Once: Performance Enhancements with Threading

xcelMe.com の Gary Bennett がマルチスレッドプログラミングに関して説明する章。Gary Bennettは昔米国海軍で nuclear power engineer だったという異色(?)の経歴の持ち主らしい。

thread, critical section, mutex, race condition, deadlock の話。あまりiPhoneに特化した話ではなく一般的な話で、教材にも使えそうだ。
サンプルアプリケーションは Thread the needle で、スレッドを走らせて各スレッドでタイマーでカウンターを更新するもの。
performSelectorInBackground を使用。

スレッド中では、メモリプール管理は NSAutoReleasePool で時前で行う必要がある。また、メインスレッドで行わせたいことは、performSelectorOnMainThread を呼び出して行う。

Critical Section はNSLockで実現されていた。

4. All Fingers and Thumbs: Multitouch Interface Design

好きな言語はPythonとObjective-C、のUKのWooji JuiceのMatthew “Canis” Rosenfieldがmultitouch APIの使い方を紹介した章。

代表作は Stage Hand(Keynoteコントロールアプリ)、Hexterix らしい。Stage Handを開発した際に発見したことをいろいろ紹介している。

実は tap region は見た目よりかなり広い。Down と Up のregionも広さが違う。これは使い勝手を考慮したもの。
ジェスチャーは、touchesBegan, touchesMoved, touchesEnded, touchesCancelled の4つで認識する。gesture の認識は 難しく、言ってみればmind reading のようなもの、と表現されている。

新居さんのiPhoneアプリケーションプログラミング P166 にも書かれているが、ジェスチャーの判断は特にガイドラインもなく、自分で最初の位置や時間差を求めて判断する必要がある。なのでmind reading と表現されているのだろう。

(すぐにマルチタッチAPIを使う予定がないので、この章はあまりちゃんと読んでいない…)

5. Physics, Sprites, and Animation with the cocos2d iPhone Framework

Arcade Hockeyを作った、Brainjuice の Benjamin Jacksonの章。

cocos2d, Chipmunk, OpenGL ES の紹介ということになっているが、上記技術をある程度分かっている人向けに書かれており、使い方を知った上で読むときっと得るところもあるのだろうが、自分は知らないので理解が難しかった。自分はcocos2d に関しては以前ちょっと調べたことがあるくらいで、Chipmunkはこの本で初めて知った。
サンプルはAir HockeyもどきのGolfゲームが使われている。
cocos2dに関しては Mac Devなるところがよい情報を提供してくれているようだ。Chipmunk はFreeの物理エンジンのCライブラリで、ソースコードが提供されている。
alexandre game がチュートリアルを提供していた。これはわかりやすそう。

6. Serious Streaming Audio the Pandora Radio Way

Pandora の開発者 Neil Mixの章。Pandora Radioアプリを作った際の苦労を元に書かれており、含蓄深い。

Core Audioの返値は必ずチェックすべき、少なくともログはすぐにファイルに出力できるように、と主張している。
例としては、Core Audioを使って、HTTPでオーディオ再生をする。
要件にもよるが、なるべくシンプルに作った方がよい、が筆者の信条で、Pandoraアプリでも複数のスレッドは使っておらず、それで十分な使い勝手が実現できている。
ストリーミング再生には download と streaming があるが、Pandoraではダウンロードモデルを使っている。
サンプルプログラムは、NSURLConnectionを使ったもの。ADTS(Audio Data Transport Stream)も少しだけ説明がある。

7. Going the Routesy Way with Core Location, XML, and SQLite

Routesyの作者、Pixelcap の Steven Petersonの章。

筆者はRoutesyがはじめてのCocoaアプリだったらしく、iPhone開発のlearning curve は steepだ、と表現していた。
NSURLConnection, CLLocationManager, XPath query を使ったサンプルプログラムが説明されている。
説明は丁寧だし役に立ちそうだが、今となっては他の本にも書かれていそうな内容ではある。(先月発売された サンプルプログラムでマスターするiPhone SDK プログラミング実践ガイド でも似たようなアプリが紹介されていた)

全体的に、英語は平易だし、実用的な技が紹介されていると思う。確かにBeginning iPhone 3 Development (邦訳 はじめてのiPhoneプログラミング)の次に読むのがよさそうな本だった。

iPhone Cool Projects
iPhone Cool Projects
Apress 2009-08-13
売り上げランキング : 1306

Amazonで詳しく見る by G-Tools

関連記事

AutoLayout 問題で Xcode6 が起動しなくなった

iPhone6 Plus の巨大な画面に対応するために、はじめて Interface Builder

記事を読む

no image

Android2.1プログラミングバイブル (布留川 英一)

Android本2冊目。Android Hacks はやはりAndroid初心者には難しかったので、

記事を読む

no image

iPhone向け有償・無償フレームワーク

かごおた さんで、iPhone アプリ開発で使用できる有償・無償フレームワークが紹介されていた。 有

記事を読む

no image

世界に一枚だけのデジカメ年賀状2011

去年はせっかく買ったのでPhotoshopで年賀状を作成したが、今年は楽をして書店でデータをあさって

記事を読む

[Apple Watch] 2017年の冬休みの宿題はwatchOSアプリ開発

自分はPebble初代のころからスマートウォッチはPebble派だったが、2016年の年末は Peb

記事を読む

no image

おすすめ iPhone5用ケース iJacket

iPhone5購入時に同時に購入したケース(写真上)が1ヶ月程度でかなりみすぼらしい状態

記事を読む

no image

Corona SDK を試してみた

どうやら結構いまさらなようだが、Corona SDK を試してみた。 Corona SDK は同じソ

記事を読む

no image

unite スマートベース SmartBase for iPhone

しばらく前に買って愛用していて、今回もう1台買ったので紹介。iPhone 3G/3GS用と、

記事を読む

no image

Web+DB Vol.71 で Heroku 特集

Web+DB は Vol.71 はHerokuの特集があり、Rails、Java、PostgreSQ

記事を読む

no image

モンスターハンターポータブル3rd ルーキーズ・ガイド (エンターブレインムック)

やたらと売れているらしいのできっと面白いのだろうと思って購入したMHP3だが、すっかりはまっている。

記事を読む

Comment

  1. […] iPhone Cool Projects という本があったが、その続編になる。 Amazon.com でえらくほめられていたのと、Apressの本なのである程度内容が信頼できるということで買ってみた(Kindle 版があったらほしいと思ったが、まだ無いので紙版を購入した)。 […]

  2. journals より:

    Thought I would comment and say neat theme, did you code it on your own? Looks awesome!

Message

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください

ポモドーロテクニック用物理タイマーならTime Timer

会社ではなかなか自由に時間を使えないが、家で読書や作業をする

DELL 32インチディスプレイ U3223QE 購入

Dell U3223QE は解像度 3840x216

WWDC 2023 Vision Pro発表

2023/6/5 (日本時間 2023/06/06 2AM)のWWD

M1 MacBook Air を Venturaにアップデートする

M1 MacBook Air を macOS Montere

iOS16でaurioTouch の inBufferFramesが1になる

https://developer.apple.com/librar

→もっと見る

PAGE TOP ↑