ひょんなことからiPhoneアプリ作ることにしたので勉強の過程をメモしていきます

手始めに積ん読にしていた「はじめてのiPhoneプログラミング( http://www.amazon.co.jp/dp/4797354011/ )」を読んでいこうかなとおもってパラパラ読んでいると、まずは公式ドキュメント読もうと書いてあったので従うことにしてみました。

まずは「iOSテクノロジーの概要」から

読んだ感想としては、iOSでどんなことができて、それぞれどのドキュメントを読めば解決できるという道しるべを提供してくれるドキュメントという感じでした。
以下、後で見直せるように気になったところをまとめておきます。

iOSテクノロジーの基礎

  • マルチタスクの裏で何が起こっているか
    • アプリAを立ち上げつつ、アプリBを立ち上げると、アプリAはメモリ内に保持され、一時停止状態になる
      → バックグラウンドでも動きつづけていると思っていました... ただし、以下のことはアプリ側でハンドリングできるようです。
      • 一時停止までの時間をアプリ側で制御できる
      • 定期的にバックグラウンドで何かしらの処理をする必要があれば、アプリ側で制御して実行できる
      • 一時停止中でもユーザーへの通知(Local Notification)を行うことができる

また、マルチタスクに対応するには、開発者側でコードを書く必要があるようです。
→ 「iOS Application Programming Guide」 参照

印刷機能(ワイヤレス対応のプリンタと通信してiPhoneのコンテンツを送信できる)
iOS4.2から
→「Drawing and Printing Guide for iOS」 参照


データ暗号化
iOS4.0から
→「iOS Application Programming Guide」 の「Implementing Standard Application Behaviors」参照


Apple Push Notification
→ iOS3.0から
いわゆるPush通知。文字での通知、アイコンバッジ、音声による警告の3種類がある。
→「LocalandPushNotification Programming Guide」参照


Local Notification
iOS4.0から

  • Apple Push Notificationの違いは、ネットワーク的に離れたサーバにプロセスを常駐させるか、ローカル(アプリ内)だけで完結できるか。


Gesture Recognizer
→ iOS3.2から
ジェスチャーのサポートを提供
「Event Handling Guide for iOS」参照


ファイル共有サポート
→ iOS3.2から
「Information Property List Key Reference」参照


ピアツーピアサービス
→ iOS3.2から
Bluetoothを使って、他のデバイスと通信を行う
「GameKitProgrammingGuide」参照 → GameKitについては、「Game Kit Framework」参照


外部ディスプレイのサポート
→ iOS3.2から

Cocoa Touchフレームワーク

Address Book UI
連絡先系
→『Address Book Programming Guide for iOS』および『Address Book UI Framework Reference for iOS』を参照


Event Kit UIフレームワーク
カレンダ関連イベント
→『Event Kit UI Framework Reference』参照


Game Kitフレームワーク
→ iOS3.0から
アプリ間通信


Game Center( Game Kitの拡張 )
iOS4.1から
『Game Kit Programming Guide』および『Game Kit Framework Reference』を参照


iAdフレームワーク
iOS4.0から
アプリからバナー広告配信
『iAd Programming Guide』参照


Map Kitフレームワーク
→ iOS3.0から
スクロール可能な地図
iOS4.0から
ドラッグとオーバーレイ(地図にルート等の情報を重ねる)が可能に
『Location Awareness Programming Guide』参照


Message UIフレームワーク
→ iOS3.0から
Email作成
iOS4.0から
SMSメッセージ作成ができるようになった。


UIKitフレームワーク
イベント管理用
『UIKit Framework Reference』参照

Mediaレイヤ

  • グラフィックス
    • CoreGraphics(Quartz) → 2D画像のレンダリング。『Quartz 2D Programming Guide』、『Core Graphics Framework Reference』参照
    • Core Animation → ビューをアニメーション
    • OpenGL ES → 2D, 3Dのレンダリング補助
    • Core Text → テキストレイアウト、レンダリング
    • Image I/O → 画像の読み書き。『Image I/O Reference Collection』参照
    • Assets Library → フォトライブラリの写真・ビデオにアクセス。iOS 4.0から。 『Assets Library Framework Reference』 参照
  • オーディオ
    • Media Player → iTunesライブラリにアクセス
    • AV Foundation → オーディオの再生、録音を管理。iOS 2.2から。iOS3.0からは録音機能、iOS 4.0からはムービーの再生、ムービーのキャプチャ等が追加。 『AV Foundation Framework Reference』 参照
    • OpenAL → 定位オーディオ(??)を扱う
    • Core Audio → 上3つのフレームワークよりオーディオの細かい制御を行う。『Core Audio Overview』参照
  • ビデオ
    • UIKitのUIImagePickerController → カメラでビデオを録画
    • Media Player → ムービーを表示。『Media Player Framework Reference』参照
    • AV Fundation → ムービーのキャプチャと再生
    • Core Media → 上3つのフレームワークよりビデオの細かい制御を行う

AirPlay

  • アプリからApple TV、AirPlayスピーカーに音楽をストリーミング配信

→ AV Fundation, Core Audioフレームワークで扱う
『Multimedia Programming Guide』を参照

Core Service

  • 上位レベルの機能
    • ブロック ≒ クロージャ
    • Grand Central Dispatch → アプリ内のタスク管理。非同期処理など。『Concurrency Programming Guide』参照
    • In-App Purchase → アプリ内課金。iOS3.0から。『In App Purchase Programming Guide』参照
    • SQLite
    • XML → NSXMLParseクラス
  • Core Services
    • Address Book → 連絡先情報にアクセス
    • CFNetwork → ネットワーク関連(ソケット、SSL通信、HTTP等)
    • Core Data →MVCのMの部分。『Core Data Tutorial for iOS』参照
    • Core Fundation → 配列、文字列、日付、URL等の基本的なデータまわり。『Core Foundation Framework Reference』参照

読み終わっての疑問

  • iOSのバージョンによって、割と使える機能、そうでない機能があるけど、iOSのアップデートはどれくらいのユーザーが行ってくれるものなのか?
  • AV FoundationとCore Audioは何が違う? AV Fundationの方が上位レベルのフレームワークなので、扱いやすい? Core Audioの方が下位なので細かいところまで制御できる?