Software Design plusシリーズレベルアップObjective-C

書籍の概要

この本の概要

本書は,初心者から中級者へとレベルアップすることを目標としています。Objective-Cを学んでいく上でMac OS XやiOSでの実用的なコード例を示しながらXcode 5を効果的に利用するための技術解説を行います。Xcode 5ではユニットテストやGitなど,現代的な開発環境として必須とされる機能がサポートされています。本書では,Xcode 5でのデバッグ,リファクタリング,バージョン管理をはじめ,最新のObjective-Cを利用したデータ処理,Core Data,iCloud,メモリ管理,マルチスレッドなどを解説しています。

こんな方におすすめ

  • 本書の想定する読者は,Xcodeを使ってiOSまたはOS X用の簡単なアプリケーションをいくつか書いたことのある,Objective-Cプログラミング中級者以上の方々を対象としております。 すでにXcodeにかなり慣れ親しんでおられる方にも,最新のXcodeに搭載された魅力的な機能を余すところなくご紹介します。Objective-Cの詳しい文法などについては本書では解説しておりませんので,必要な場合には文法に詳しい本などを併読してください。

この書籍に関連する記事があります!

iOS 7時代のアプリ開発事情
2013年9月18日にiOS 7がリリースされました。iOS 7ではUI(ユーザインターフェース)が変わり,それに従って開発環境も変化してきています。

目次

第1章 Xcodeの基本をマスターしよう

1.1 Xcodeについて

1.2 Xcodeの入手方法

1.3 Xcodeの基本の使い方

  • 1.3.1 Xcodeの各部名称
  • 1.3.2 Xcodeを使う基本の流れ9

1.4 Xcodeのナビゲータを使いこなそう

  • 1.4.1 プロジェクト・ナビゲータ
  • 1.4.2 シンボル・ナビゲータ
  • 1.4.3 検索ナビゲータ
  • 1.4.4 その他のナビゲータ

1.5 Xcodeのテキストエディタを使いこなそう

  • 1.5.1 行番号を表示しよう
  • 1.5.2 コード補完を活用しよう
  • 1.5.3 フォールド機能を活用しよう
  • 1.5.4 アシスタントエディタを活用しよう
  • 1.5.5 16進数エディタを活用しよう

1.6 Xcodeプロジェクトの設定

  • 1.6.1 Xcodeで扱う各種ファイル
  • 1.6.2 フレームワークとライブラリの追加方法
  • 1.6.3 既存のファイルの追加方法

第2章 Xcodeを徹底的に活用しよう

2.1 デバッグ徹底マスター

  • 2.1.1 問題が起きたときの対処方法をマスターしよう
  • 2.1.2 デバッグの基本はNSLog()?
  • 2.1.3 ブレークポイントを活用しよう
  • 2.1.4 静的解析

2.2 リファクタリング

  • 2.2.1 リファクタリングって何?
  • 2.2.2 オブジェクト指向開発では名前が命
  • 2.2.3 リファクタリングの基本は名前の修正
  • 2.2.4 コメントについて

2.3 ユニットテスト・ベースの開発

  • 2.3.1 ユニットテストとは?
  • 2.3.2 ユニットテストの利用
  • 2.3.3 XCTestのさまざまなテスト用の関数
  • 2.3.4 継続的インテグレーションのサポートについて

2.4 これで使えるGitのバージョン管理

  • 2.4.1 Gitって何? バージョン管理って何?
  • 2.4.2 Gitを使い始めよう
  • 2.4.3 作業の区切りごとにコミットする
  • 2.4.4 複数個所に変更を加えてみる
  • 2.4.5 以前のバージョンに戻す
  • 2.4.6 GitHubの外部リポジトリを使おう

第3章 データ処理をマスターしよう

3.1 6つの基本のデータ型

  • 3.1.1 数値
  • 3.1.2 NSString(文字列)
  • 3.1.3 NSDate(日付)
  • 3.1.4 NSData(バイナリデータ)
  • 3.1.5 NSArray(配列)
  • 3.1.6 NSDictionary(辞書)

3.2 データ型を組み合わせた表現と検索

  • 3.2.1 レストラン情報の表現
  • 3.2.2 レストラン情報の検索
  • 3.2.3 NSPredicateについて

3.3 コレクションクラスのデータを保存しよう

  • 3.3.1 コレクションクラスのデータの保存
  • 3.3.2 コレクションクラスのデータの読み込み

3.4 コレクションクラス番外編NSOrderedSetで重複を取り除こう

3.5 ファイルはどこに保存する?

  • 3.5.1 Mac OS Xのサンドボックス機能
  • 3.5.2 ファイルの保存場所
  • 3.5.3 ファイルはURLで参照しよう
  • 3.5.4 パスとURLの相互変換
  • 3.5.5 NSURLのファイル関係の操作
  • 3.5.6 URLを保持する場合はファイル参照URLにしておこう(Mac OS Xのみ)

3.6 文字列処理を極めよう

  • 3.6.1 文字列と数値の相互変換
  • 3.6.2 先頭と語尾の文字列チェック
  • 3.6.3 文字列の比較
  • 3.6.4 文字列の読み書き

第4章 データ操作のフレームワークをマスターしよう

4.1 Core Dataによるデータ管理の基礎

  • 4.1.1 Core Dataって何?
  • 4.1.2 Core Dataの用語

4.2 Core Dataの使い方(OS X)

  • 4.2.1 新規プロジェクトの作成
  • 4.2.2 エンティティの追加
  • 4.2.3 エンティティの編集
  • 4.2.4 コントローラの追加
  • 4.2.5 インターフェース部品の追加
  • 4.2.6 アプリケーションの完成
  • 4.2.7 アプリケーション再起動時のデータ読み込み
  • 4.2.8 作り込みのためのヒント
  • 4.2.9 OS Xで利用可能なコントローラ

4.3 Core Dataの使い方(iOS)

  • 4.3.1 新規プロジェクトの作成
  • 4.3.2 最初に実行してみる
  • 4.3.3 エンティティの編集
  • 4.3.4 いったん実行してみる
  • 4.3.5 インターフェース部品の追加
  • 4.3.6 アプリケーションの完成

4.4 iCloudによるデバイス間ファイル共有の基礎

  • 4.4.1 開発者が利用可能な2種類のストレージ
  • 4.4.2 App IDとプロビジョニングプロファイルの用意
  • 4.4.3 iCloud用プロジェクトの設定
  • 4.4.4 iCloud対応アプリのテスト環境について
  • 4.4.5 Key-Valueストレージの利用
  • 4.4.6 ドキュメントストレージの利用

4.5 iCloudによるデバイス間ファイル共有(OS X)

  • 4.5.1 OS XではNSDocumentを使うのが一番簡単
  • 4.5.2 Quick Look のサムネールとプレビューについて

4.6 iCloudによるデバイス間ファイル共有(iOS)

  • 4.6.1 新規プロジェクトの作成
  • 4.6.2 App IDの登録とプロビジョニングプロファイルの作成
  • 4.6.3 Capabilitiesの設定
  • 4.6.4 起動時のセットアップ
  • 4.6.5 UIDocumentのサブクラス作成
  • 4.6.6 ドキュメント追加部のコード
  • 4.6.7 ドキュメント名の表示方法の修正
  • 4.6.8 ドキュメント開閉処理の追加

第5章 メモリ管理をマスターしよう

5.1 最新のメモリ管理技術ARC

5.2 オブジェクトとメモリ

5.3 ARCによるオブジェクト管理

  • 5.3.1 コンパイラによる自動メモリ管理
  • 5.3.2 ARCの基本は変数による参照

5.4 ARCとdealloc

5.5 ARCにおけるオブジェクトの生存期間

5.6 ARCはObjective-Cオブジェクト以外のメモリ管理は行わない

5.7 Core Foundationとのブリッジ(1)

5.8 Core Foundationとのブリッジ(2)

5.9 見守り続けるだけの__weakな変数

5.10 プロパティの参照の強さ

5.11 メソッド引数でポインタのポインタを使う場合

5.12 手動のNSAutoreleasePoolの管理

5.13 ARCで問題が出るパターン

  • 5.13.1 ARCと循環参照
  • 5.13.2 メモリ解放から生存期間決定のメモリ管理へ

5.14 XcodeプロジェクトのARCの利用設定

第6章 マルチスレッド処理をマスターしよう

6.1 GUI時代のマルチスレッドの役割

  • 6.1.1 GUIとマルチスレッドの関係
  • 6.1.2 マルチコア時代のマルチスレッド処理

6.2 Objective-Cのマルチスレッド処理

  • 6.2.1 マルチスレッド処理の種類
  • 6.2.2 従来通りのスレッド
  • 6.2.3 GCD(Grand Central Dispatch)
  • 6.2.4 オペレーションオブジェクト
  • 6.2.5 できればいずれも使わない

6.3 従来通りのスレッド

6.4 Blocks記法(ブロック)

  • 6.4.1 ブロックとBlocks記法について
  • 6.4.2 ローカル変数も参照可能なブロック

6.5 GCDによるマルチスレッド処理

  • 6.5.1 GCDとブロックでマルチスレッド
  • 6.5.2 GCDと共有リソースの保護
  • 6.5.3 GCDと共有リソースの消費
  • 6.5.4 共有リソースの保護
  • 6.5.5 キューは組み合わせて使う
  • 6.5.6 処理終了の待ち合わせ
  • 6.5.7 キューの種類について

6.6 オペレーションキューによるマルチスレッド処理

  • 6.6.1 オペレーションオブジェクトについて
  • 6.6.2 基本の使い方
  • 6.6.3 GCDより優れている点
  • 6.6.4 GCDに劣る点
  • 6.6.5 NSOperationクラスは3種類
  • 6.6.6 キューは1種類
  • 6.6.7 @synchronizedブロックによる保護

6.7 タイマ

  • 6.7.1 タイマの使い方の基本
  • 6.7.2 遅延ありのメソッド呼び出し

著者プロフィール

沼田哲史(ぬまたさとし)

1978年1月生まれ。2005年大阪大学大学院 情報科学研究科より博士号(情報科学)取得。同年より大阪電気通信大学 総合情報学部 デジタルゲーム学科 講師。2009年より日本英語発音協会 監事。
中学2年生の時にN88-BASICでプログラミングを始め,その後さまざまなプログラミング環境を経験。2001年よりMac OS Xを主体としたプログラミングを行うようになり,2007年からはiPhoneのプログラミングにも取り組む。iOSプログラミングの著書多数。現在は大学において,iPhoneやiPadを用いたゲーム開発によるプログラミング教育を提案し,実践している。趣味は弓道とシンセサイザー演奏。