magazine.gif プロの力を身につける iPhone/iPadアプリケーション開発の教科書

CHAPTER 0
序章

  • はじめに
  • 本書の読者
  • 本書の構成
  • とにかく動くアプリを作ってみたいという方へ
  • iOSアプリを公開して成功するために必要な知識
  • はじめる前に必要なもの
  • 本書で使用する図について
  • Appleの公式ドキュメントについて
  • 参考書籍について
  • サンプルプログラム
  • 謝辞

CHAPTER 1 Objective-Cとオブジェクト指向プログラミング

  • 1-1 Objective-C入門
    • 1-1-1 Objective-Cってどんな言語?
    • 1-1-2 ファイル構成
    • 1-1-3 基本構文
    • 1-1-4 クラスやライブラリのインポート
    • 1-1-5 クラスの宣言
    • 1-1-6 ルートクラス
    • 1-1-7 メソッド宣言
    • 1-1-8 プロパティ
    • 1-1-9 クラス宣言の例
    • 1-1-10 クラス型変数の定義
    • 1-1-11 文字列
    • 1-1-12 メソッドの呼び方
    • 1-1-13 プロパティへのアクセス
    • 1-1-14 self
    • 1-1-15 super
    • 1-1-16 オブジェクト(インスタンス)の生成
    • 1-1-17 クラスの実装
    • 1-1-18 メソッドの実装
    • 1-1-19 コンストラクタの実装
    • 1-1-20 デストラクタの実装
    • 1-1-21 インスタンス変数の宣言
    • 1-1-22 プロトコル
    • 1-1-23 例外
    • 1-1-24 カテゴリ
    • 1–1-25 セレクタ
    • 1-1-26 コレクション
    • 1-1-27 数値オブジェクト
    • 1-1-28 名前空間は存在しない
    • 1-1-29 プログラムのエントリーポイント
    • 1-1-30 参考書籍
    • COLUMN クラスとプロトコル(インターフェース)
  • 1-2 オブジェクト指向プログラミングのコツ
    • 1-2-1 コツは「クラス」と「オブジェクト」の違いを理解すること
    • 1-2-2 プログラム実行時のメモリの状態
    • 1-2-3 クラスとメモリの関係
    • 1-2-4 オブジェクトとメモリの関係
    • 1-2-5 オブジェクトが複数あるとき
    • 1-2-6 まとめ
    • 1-2-7 参考書籍
    • COLUMN クラス図とオブジェクト図
  • 1-3 メモリ管理とオブジェクト指向
    • 1-3-1 メモリ管理ってなに?
    • 1-3-2 iOS版Objective-Cでのメモリ管理方法
    • 1-3-3 オーナーシップポリシー
    • 1-3-4 メモリ管理の負担を減らしてくれるARC
    • 1-3-5 参考
    • 1-3-6 参考書籍
    • COLUMN Xcode入門
    • COLUMN サンプルプログラムのダウンロード方法

CHAPTER 2 iOSアプリの画面開発の基礎を理解する

  • 2-1 画面開発基礎知識
    • 2-1-1 ユーザの要望がどのようにアプリに反映されるのか
    • 2-1-2 アプリ開発の3大要素
    • COLUMN MVC
    • 2-1-3 iOSでどんなアプリを開発できるのか?
    • 2-1-4 iOSアプリにおける画面とは
    • 2-1-5 iOSアプリにおける画面遷移とは
    • 2-1-6 iOSアプリの画面と画面遷移の作成方法
    • COLUMN IBOutletとIBAction
    • 2-1-7 UIViewクラス
    • 2-1-8 ビューの種類
    • COLUMN バー専用のUI部品クラス
    • 2-1-9 プログラムからビューを追加する方法
    • 2-1-10 UIViewControllerクラス
    • 2-1-11 ビューコントローラの種類
    • 2-1-12 画面を追加して遷移させる方法
    • 2-1-13 UIViewとUIViewControllerの組み合わせ例
    • 2-1-14 UIViewとUIViewControllerクラスの共通の機能
    • 2-1-15 サンプルプログラム
    • 2-1-16 参考
    • 2-1-17 参考書籍
  • 2-2 iOSのイベント駆動をライフサイクルイベントとユーザアクションイベントに分けて理解する
    • 2-2-1 イベント駆動ってなに?
    • 2-2-2 イベントはUIApplicationオブジェクトで制御されている
    • 2-2-3 イベントの種類
    • 2-2-4 ライフサイクルイベント
    • 2-2-5 ライフサイクルイベントの実装
    • 2-2-6 ユーザアクションイベント
    • 2-2-7 ユーザアクションイベントの実装
  • 2-3 テーブルビューとコレクションビューを使ったアプリの作り方
    • 2-3-1 テーブルビューとは
    • 2-3-2 テーブルビュー関連のクラス
    • 2-3-3 テーブルビューを使ったアプリの作り方
    • 2-3-4 コレクションビューとは
    • 2-3-5 コレクションビュー関連のクラス
    • 2-3-6 コレクションビューを使ったアプリの作り方
    • 2-3-7 ナビゲーションを使った画面遷移
    • 2-3-8 参考
    • 2-3-9 サンプルプログラム

CHAPTER 3 データを活用したアプリの作り方

  • 3-1 データ設計入門
    • 3-1-1 そもそもデータってなに?
    • 3-1-2 データと情報の違い
    • 3-1-3 アプリ開発の3大要素とデータ設計
    • 3-1-4 データをどこに記憶するのか
    • 3-1-5 メモリ、FD、iCloudの特徴を比較
  • 3-2 メモリ上にデータを保存する方法
    • 3-2-1 メモリの構造
    • 3-2-2 アプリ領域にデータを保存する方法
    • 3-2-3 共有領域にデータを保存する方法
    • 3-2-4 参考
    • COLUMN NSLogと文字列フォーマット
  • 3-3 iOSでデータを永続化する方法
    • 3-3-1 データの永続化ってなに?
    • 3-3-2 フラッシュドライブを構成する3つの領域
    • 3-3-3 アプリ固有領域にデータを永続化する方法
    • 3-3-4 iOSではデータを保存できる場所が決められている
    • 3-3-5 データ保存場所についてのガイドライン
    • 3-3-6 参考書籍
    • 3-3-7 iOSでオブジェクトをシリアライズしてファイルに保存する方法
    • 3-3-8 iOSでプロパティリストを使ったデータの保存方法
    • 3-3-9 NSUserDefaultsを使ったデータの保存方法
    • 3-3-10 Core Data入門
    • 3-3-11 Core Dataを使ったアプリの実装
    • COLUMN エンティティからクラスを作成する
  • 3-4 iCloudにデータを保存する方法 ~iCloudプログラミング入門~
    • 3-4-1 iCloudってなに?
    • 3-4-2 iCloudを使うとなにがうれしいのか?
    • 3-4-3 iCloudを使ってデータを共有する方法
    • 3-4-4 iCloudを使うための設定
    • 3-4-5 iCloud Key-value storageを使う方法
    • 3-4-6 iCloud Core Data storageを使う方法
    • 3-4-7 動作確認
    • 3-4-8 iCloudに保存されたデータを消去したいときは
    • 3-4-9 サンプルプログラム
    • 3-4-10 参考
    • 3-4-11 参考書籍

CHAPTER 4 応用編

  • 4-1 iOSアプリの構造がどのようになっているか紐解いてみる
    • 4-1-1 いちばん単純なアプリの構造
    • 4-1-2 iOSから提供されているクラスの説明
    • 4-1-3 開発者が作成するクラス
    • 4-1-4 実際に動いているアプリのオブジェクトはどうなっているのか
    • 4-1-5 シングルビューアプリケーションにラベルとボタンを追加してみる
    • 4-1-6 シングルビューアプリケーションに画面を1つ追加してみる
    • 4-1-7 ストーリーボードとアプリの関係
  • 4-2 マルチスレッドプログラミング入門
    • 4-2-1 マルチスレッドプログラミングの利点
    • 4-2-2 マルチスレッドプログラミングのための仕組み
    • 4-2-3 NSOperationQueueとNSOperation
    • 4-2-4 NSOperationに処理を実装する
    • 4-2-5 処理を並列で実行する
    • 4-2-6 処理をメインスレッドで逐次実行する
    • 4-2-7 処理の入れ子実行
    • 4-2-8 addOperationクラスの実装方法
    • 4-2-9 NSOperationクラスの実装方法
    • 4-2-10 NSOperationには2つの実行モードが存在する
    • 4-2-11 モードによる実装方法の違い
    • 4-2-12 非並列実行モードの実装例
    • 4-2-13 NSOperationとKey-Value Observing
    • 4-2-14 処理の改質通知と終了通知
    • 4-2-15 並列実行モードの実装例
    • 4-2-16 NSOperationオブジェクトの処理終了を監視する
    • 4-2-17 実装にアプリで使われている実例
    • 4-2-18 サンプルプログラム
  • 4-3 iOSユニットテスト入門
    • 4-3-1 ユニットテストってなに?
    • 4-3-2 プロジェクトにユニットテストを追加する
    • 4-3-3 テストクラスとテストメソッドの作成
    • 4-3-4 テストの事前処理と事後処理
    • 4-3-5 テストメソッドの実装方法
    • 4-3-6 テストメソッドの例
    • 4-3-7 ユニットテストの実行
    • 4-3-8 サンプルプログラム
    • 4-3-9 参考
  • 4-4 In-App Purchaseを使ったアイテム課金プログラミング
    • 4-4-1 販売できるアイテムの種類は5種類
    • 4-4-2 アイテム購入の流れ
    • 4-4-3 StoreKitフレームワークの概要
    • 4-4-4 アプリ内課金が使えるかチェック
    • 4-4-5 アイテム情報の取得と購入処理の開始
    • 4-4-6 アイテム購入中の処理から購入処理終了まで
    • 4-4-7 アイテムのリストア
    • 4-4-8 サンドボックス環境で課金のテストをする
    • 4-4-9 本番環境で課金のテストをする
    • 4-4-10 アプリ内課金(In-App Purchase)で失敗しないためのポイント
    • 4-4-11 UIViewControllerを使った実装例
    • 4-4-12 サンプルプログラム
    • 4-4-13 参考

APPENDIX 1 メモリ管理詳細

  • A1 メモリ管理で気をつけること
    • A1-1 allocまたはinitすると参照カウントが1になる
    • A1-2 retainされると参照カウントが+1される
    • A1-3 copyメソッドはオブジェクトの性質によって振る舞いが変わる
    • A1-4 releaseメソッドでメモリを解放する
    • A1-5 自分でalloc、copy、retainしたインスタンスは自分でreleaseすること
    • A1-6 複数のインスタンスを管理するとき
    • A1-7 releaseしてはいけない場合もあります
    • A1-8 イベント内でautoreleaseを使うときの注意点
    • A1-9 文字列定数はreleaseしなくてもよい
    • A1-10 NSTimerはメモリ管理方法が特殊なので気をつける
    • A1-11 UIWebViewまたはMKMapViewオブジェクトのreleaseには気をつける
    • A1-12 メモリ警告時は不要オブジェクトのメモリを解放すること
    • A1-13 NSAutoreleasePoolはスレッドごとに作成する
    • A1-14 NSOperationのmainメソッドでNSAutoreleasePoolの作成は不要
    • A1-15 Instrumentsを活用しましょう
    • A1-16 静的解析ツールを使ってメモリリークを防ぐ
    • A1-17 サンプルコード
    • A1-18 参考
    • A1-19 参考書籍

APPENDIX 2 アドレス帳アプリのソースコードから学ぶ

  • A2 理解度チェックコード
    • A2-1 アドレス帳アプリの概要
    • A2-2 ファイル構成
    • A2-3 AppDelegateクラス
    • A2-4 MasterViewControllerクラス
    • A2-5 DetailViewControllerクラス
    • A2-6 PersonクラスとAddressクラス

索引