本書は、iPhone アプリを実際に作っている著者の方が、実体験やノウハウをもとに執筆されたものが集まっています。
iPhone とはなんなのか、iPhone アプリはどういうもので、どうあると面白いのか、自分たちはどう考えるのか、こういう機能をもったアプリを作るときはこうやって自分たちは作った。そういう話がたくさん載っています。
実際に iPhone アプリを始めて見たい人は、本書の姉妹本である『ユメみるiPhone ―クリエイターのためのiPhone SDKプログラミング』から読み始めると良いと思います。それから実際に自分で手を動かしてみて、「アレ?こういう機能ってどうやって実装したらいいのかな?」という疑問が湧いてきたら本書を読むと良いと思います。
章ごとに筆者が違うし、紹介している技術やライブラリも違うので、iPhone アプリ開発を体系的に学ぶのには適していませんが、こういうことがしたい!という目的がある人は、本書に解決の糸口を見出しすことができるかもしれません。
読みやすいですし、チュートリアル的に書かれているところもあり理解しやすいです。なかなかオススメの一冊です。
もくじ
- INTRODUCTION
  
- Why iPhone?
 - Designing iPhone Apps
 - Making of TiltShift Generator
 
 - Sample
  
- Web APIの使い方とMapKitを用いた地図の表示
 - Nビル.app-OpenCVを使ったリアルタイムの画像処理とAR
 - HTML+CSS+JavaScriptで作るWebアプリ
 - cocos2dでゲームを作ろう[基礎編]
 - cocos2dでゲームを作ろう[Box2D編]
 - カメラとCore Animationを使用した画像の描画とアニメーション
 - 目的に特化したテーブルビューの使い方
 - カメラを使った音のエフェクターの開発
 - ピアツーピア接続を使ったアプリケーションの開発
 - AudioVisual Mixer for INTO INFINITYのダウンロードのしくみ
 
 - RECIPE
  
- AudioIOクラス
 - MPMoviePlayerControllerを自由に扱う
 - CustomFontLabelクラス
 - テーブルビューレシピ1-もう1つの追加ボタンUI
 - テーブルビューレシピ2-データの保存
 - テーブルビューレシピ3-WebKitを使う
 - テーブルビューレシピ4-セルの再利用
 - テーブルビューレシピ5-グループテーブルビュー
 - テーブルビューレシピ6-セルのカスタマイズとパフォーマンス
 
 - APPENDIX
  
- iPhoneアプリを実機で動かす
 - iPad用に変換する
 
 
おぼえがき
iPhone の特徴
おもしろい iPhone アプリを開発するためには、きちんと iPhone の特徴をつかんでおくことが大事です。
| 特徴 | 説明 | 
|---|---|
| 3G回線による常時接続 | 第三世代通信方式(3G)による高速通信がいつでもどこでも行えます。ネットワークを意識した設計、ネットワークにつながらないときにどう振舞うかを考える必要があります。 | 
| 加速度センサー | iPhone が今どのくらい傾けられているか、どれくらい振られたか、そういった情報を入力にすることができます。 | 
| 電子コンパス | iPhone が今どの向きを向いているか、向きを入力にすることができます。 | 
| GPS | ユーザの現在位置を取得することができます。位置に合わせた情報やどこからどこに移動したか、どういう経路をたどったかなどの情報を利用した設計ができます。 | 
| オーディオ | スピーカーとマイクを利用することができます。音や声による入力出力を組み合わせてアプリを設計できます。 | 
| タッチスクリーン | マルチタッチ可能なタッチスクリーンは、iPhone への入力の大きなものです。この入力方式をどのように利用出来るか、利用の仕方次第でおもしろいことができそうです。 | 
| カメラ | オートフォーカス可能なカメラは、写真を取ってその場で加工したり、物を写すことでその対象を別の入力にしたり、現実と仮想を組み合わせたり(AR)、色々とおもしろい使い方ができます。 | 
おもしろい iPhone アプリをつくるコツは
- 機能のかけ算
 - ユーザの好奇心、想像力、創造力をつっつく
 - アプリケーションを立ち上げるたびに新しいことが起こる/なにが起こるかわからないを提供する
 - こだわりを持つ
 
このあたりに尽きると思います。
カメラ画像の取得
現実環境(カメラで写した世界)に情報や映像を付加提示する技術のことを拡張現実(Augmented Reality:AR)といいます。iPhone ではこの AR を簡単に実現できます。
カメラ画像をリアルタイムに解析する方法のひとつに、UIGetScreenImage() メソッドがあります。このメソッドは SDK のドキュメントに載っていないため Apple からいつ使用が制限されるかわかりませんが、カメラで表示している画面を画像として取得して処理することができるメソッドになっています。
ここで取得した画像を利用してリアルタイム処理を行うことが出来ます。
オープンソースの画像解析用のライブラリに OpenCV があり、このライブラリを使った画像処理のチュートリアルが、本書には載っています。
cocos2d
cocos2d は OpenGL を手軽に扱えるように設計されたライブラリで、画像の読み込み、描画、アニメーションなどを手軽に実装することができるようになります。
OpenGL を使うため、処理速度が必要なゲームなどで使用すると良いと思います。本当に簡単につかえるライブラリなので、iPhone でゲームを作りたいと考えている人は利用していると良いと思います。
また、Box2D という物理演算エンジンと cocos2d を使ったゲームを作るチュートリアルも本書に載っているので、このあたりの日本語の情報が欲しい人は参考になるかと思います。
テーブルビュー
ユーティリティアプリをつくろうと考えている人は、テーブルビューを使う機会が出てくると思います。本書では、テーブルビューを使った様々な機能の実現方法をサンプルを交えて解説しています。
- 行の追加・編集・削除
 - 大量のデータを効率よく表示する方法
 - グルーピングの方法
 - 行の表示をカスタマイズする方法
 
オーディオ処理
本書ではリアルタイムに音を処理するサンプルが載っています。iPhone にはオーディオをあつかう API がいくつかありますが、本書では Audio Unit を使用したサンプルが載っています。
iPhone で利用できるオーディオ API の一覧を本書から引用です。
| API(およびそれを含むフレームワーク) | 概要 | 
|---|---|
| AVAudioPlayer, AVAudioRecorder (AV Foundation Framework) | 音のファイルを再生・録音できる | 
| System Sound Services (Audio Toolbox Framework) | 短い音のファイルを再生できる | 
| Audio Queue Services (Audio Toolbox Framework) | 音をリアルタイムに再生・録音できる | 
| Audio Unit Framework | Remote IO Audio Unitを使って音をリアルタイムに再生・録音できる | 
| OpenAL | 3Dの空間の中で音を再生できる | 
Bluetooth を使った P2P の実現
本書では、Bluetooth を使った Peer to Peer アプリのサンプルが載っています。Game Kit フレームワークの GKPeerPickerController を使って基本的な通信を行うところから、Picker を使わずにピアツーピアを実現するところまで載っています。
