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

関連記事

EverLearn 2.2.1 を公開しました

自作英単語学習アプリ EverLearn 2.2.1を公開しました。 ユーザの方から

記事を読む

no image

Corona SDK 調査2日目

昨日はとりあえずCorona SDKを使って付属のLuaのサンプルアプリをiPhone実機上で動かし

記事を読む

no image

基礎から学ぶ CoronaSDK

基礎から学ぶ CoronaSDK という本が2012/2/25にでるらしい。 昔 CoronaSDK

記事を読む

no image

Professional Android 2 Application Development (Reto Meier著)

Xperiaをオークションで入手して、Androidアプリの開発をはじめたので、書店やWebでAnd

記事を読む

no image

iOSアプリの Ad Hoc 配布の悪夢から解放される TestFlight

面倒だった Adhoc 版のやりとりを格段に楽にしてくれる TestFlight | つくる社LL

記事を読む

iPhone6, Xperia, Galaxy Note サイズ比較

  iPhone6 Plus は一体どれくらい大きいのか想像ができなかったの

記事を読む

iPhone/iPad にMIDIキーボードを接続する

iPhone や iPad に MIDI キーボードが接続できると、実際のキーボードをつかって操作が

記事を読む

no image

Apple、iPhoneアプリは今後3.0互換でなければ受付けないと通告

Apple、iPhoneアプリは今後3.0互換でなければ受付けないと通告 うちにはこのメールは届いて

記事を読む

no image

[iPhone SDK] ネットワーク接続の有無を確認する方法

iPhoneでネットワーク接続できないときには一応エラーダイアログを出す方がよいだろうと考えて方法を

記事を読む

no image

自作アプリを売り買いできる Apptopia

Apptopia というところからメールが来たので調べてみたところ、どうやらAndroid

記事を読む

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

Wi-Fi6Eルータ TP-Link AXE5400購入

Wi-Fi6E を試してみたくなり、TP-Link AXE5

児童手当 認定請求書申請 2024 「請求者が養育をする18歳に達する日以降の最初の3月31日までの子の数」とは?

2024年に受給していない人には手紙が届くらしい。 電子申請も

Vision Proアプリ開発本 8/24、8/26に発売

Vision Proアプリ開発入門 P400が 8/24 に発売、V

Developer Strap が日本でも購入可能に

USアカウントでしか購入できなかった Vision Pro 用 De

Vision Pro カバーケースを買ってみた

[itemlink post_id="11629"]

→もっと見る

PAGE TOP ↑