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

関連記事

no image

Mac OS アプリプログラミング本を探してみた

CoreMIDI 対応iPadアプリを開発中に、Macアプリを作る必要が出てきたので、Macアプリ開

記事を読む

ついにうちにもジェットブラックが来た。

予約から1ヶ月、ようやくうちにもiPhone 7 Plus ジェットブラックがきた。(2016/10

記事を読む

no image

[iOS SDK] iOS5 の Twitter 機能を利用してみる

iOS5でシンプルツイッター機能をあなたのアプリにも。 | mipoiApp-iPhoneアプリ

記事を読む

Wi-Fi体重計Withings WS-50 を買ったのでSDKを試してみる

奥さんからの要望でスマホと連携する体重計を検討していたが、いつの間にかWithingsのWS-50が

記事を読む

no image

[iPad開発本] Beginning iPad Development

まだ数が少ないiPad開発本がApressから出たみたい。(Beginning of iPad De

記事を読む

no image

App Store の Kids Category にアプリを公開する その2

Kids Category でアプリを公開してもらうために Submit したところ、見事に Rej

記事を読む

no image

自作iPhoneアプリ いろいろレビュー依頼

アプリ制作日誌 #app_24: iPhoneアプリのレビューを、寄稿・依頼できるサイトまとめ。 と

記事を読む

no image

List切替が便利なTweetList を買ってみた。

フォローする人が増えてくると、なかなかメインのTLを追うのは難しくなる。 このため、複数のListを

記事を読む

[洋書] Showstopper! G. Pascal Zachary

Showstopper!: The Breakneck Race to Create Windows

記事を読む

[洋書] Zero to One : Peter Thiel

Zero to One: Notes on Startups, or How to Build th

記事を読む

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 を使っています。コメントデータの処理方法の詳細はこちらをご覧ください

昭和書体の鬼セットと鬼セット2購入

鬼滅の刃で使われているかっこいい書体を知っているだろうか。 こ

2020年大晦日

毎年年末は家族で旅行に出かけていたが、今年はコロナウィルスの

M1 MacBook Air に Apple LED Display をつないでみる

先日 M1 MacBook Air を購入 した。 今

DisplayPort to HDMI変換ケーブル QGEEM QG-HD02

以前会社で使っていた HP Elitebook 820 G3は Di

M1 MacBook Air にリストラグを貼ってみた

M1 MacBook Air の筐体が冷たくて作業時につらいのでパー

→もっと見る

PAGE TOP ↑