関連サイト
本書の関連ページが用意されています。
内容紹介
Core DataはiOSアプリ開発に使う、オブジェクトやデータ管理の仕組みを提供するフレームワークです。歴史の長いフレームワークですが、複雑なためにこれまで敬遠してきた開発者も多いのではないでしょうか。
本書では、Core Dataそのものの仕組みを解説するとともに、Core Dataとユーザインターフェイスとの連携方法を重点的に解説します。iOSアプリはオブジェクト(データ)だけでなく、ユーザインターフェイス(画面)が必要ですから、Core Dataは画面と連携してこそ意味を持つのです。
Core Dataという道具の性能が分かっても、使い方が分からなければ意味がありません。本書ではチュートリアル形式で解説を進めていきます。具体的なアプリを作成しながら、Core Dataの基礎と使い方の両方が習得できます。特につまづきやすい部分では、問題点を明確にするために、エラーの内容を確認しながらコードを修正していくなど、実践的な内容になっています。
また、ユーザインターフェイスの実装に不慣れな方でもスムーズに読み進めていただけるように、チュートリアルの中で取り扱うユーザインターフェイス実装の基本事項を、まとめて解説しています。
iOSアプリの開発言語が、Objective-CからSwiftに変わりつつある現状を踏まえ、本書はSwiftを用いて解説を行っています。Objective-CとSwiftとでは、言語の性質の違いにより実装時の注意点も異なるので、以前からCore Dataを用いている開発者の方にも、役立てていただける内容になっています。
ぜひ本書を通じて、Core Dataの仕組みと活用法をマスターし、iOSアプリ開発の幅を広げてください。
書誌情報
- 著者: 西方 夏子, 丸山 弘詩
- 発行日: 2016-03-14 (紙書籍版発行日: 2016-02-28)
- 最終更新日: 2016-03-14
- バージョン: 1.0.0
- ページ数: 412ページ(PDF版換算)
- 対応フォーマット: PDF
- 出版社: マイナビ出版
対象読者
iOSアプリ開発者
著者について
西方 夏子
ソフトウェアエンジニア。大手電機メーカーで組み込みソフトウェアの開発業務を経験したのち、個人でiOS向けアプリケーションの開発をはじめる。代表作であるローン計算アプリ「iLoan Calc」はiOS 3時代から継続サポート中であり、個人ユーザーのみならず、不動産や金融などの専門業界でも愛用されている。主な著書は『UIKit徹底解説』(インプレスジャパン刊)、『上を目指すプログラマーのためのiPhoneアプリ開発テクニック iOS 7編』(共著・インプレスジャパン刊)など。
丸山 弘詩
書籍編集者。早稲田大学政治経済学部経済学科、佐賀大学大学院博士後期課程(システム生産科学専攻)単位取得の上で満期退学。大手広告代理店勤務を経て、現在は書籍編集に加え、さまざまな分野のコンサルティング、プロダクトディレクション、開発マネージメントなどを手掛ける。著書『ヒットするiPhone アプリの作り方・売り方・育て方』『140 文字でわかるツイッター入門』『140 文字でわかるインスタグラム入門』(いずれも弊社刊)など多数。
目次
Chapter1 概論
- 1-1 iOS アプリとCore Data
- 1-2 Core Data の魅力
- 1-3 機能と役割・関連モジュール
- 1-3-1 データモデルの構築
- 1-3-2 オブジェクトの管理
- 1-3-3 永続化
Chapter2 UI開発の基礎
- 2-1 UIKit の機能と役割
- 2-1-1 UIKitとは
- 2-1-2 ビュー
- 2-1-3 ビューコントローラ
- 2-1-4 イベントハンドリング
- 2-2 Storyboard とAuto Layout
- 2-2-1 Storyboardエディタの使い方
- 2-2-2 シーン・セグエ・画面遷移
- 2-2-3 Auto Layout
- 2-2-4 固有サイズ
- 2-2-5 スタックビュー(UIStackView)
- 2-3 テーブルビュー
- 2-3-1 テーブルビューとテーブルビューコントローラ
- 2-3-2 ナビゲーションコントローラ
- 2-3-3 ダイナミックテーブルビュー
- 2-3-4 スタティックテーブルビュー
- 2-3-5 カスタムセル
- 2-3-6 行の高さとSelf-Sizingセル
Chapter3 全体構造と関連モジュール
- 3-1 Core Data の仕組み
- 3-1-1 データ管理のための要素
- 3-1-2 管理オブジェクトと管理オブジェクトコンテキスト
- 3-1-3 データ管理の流れ
- 3-2 管理オブジェクトモデル
- 3-2-1 エンティティ記述子
- 3-2-2 フェッチ要求テンプレート
- 3-2-3 コンフィグレーション
- 3-2-4 モデルエディタ
- 3-3 オブジェクト
- 3-3-1 管理オブジェクトとKVC
- 3-3-2 カスタム管理オブジェクトクラス
- 3-3-3 管理オブジェクトコンテキストの機能
- 3-4 ファイルの実体と各要素の関連付け
- 3-4-1 永続ストアと永続ストアコーディネータ
- 3-4-2 データモデルファイルとバージョニング
- 3-4-3 Core Dataの初期化
Chapter4 データモデルの準備
- 4-1 チュートリアルの概要
- 4-1-1 BookListの完成イメージ
- 4-1-2 チュートリアルの流れ
- 4-2 管理オブジェクトモデルと永続ストア
- 4-2-1 管理オブジェクトモデルの追加
- 4-2-2 Core Dataスタック
- 4-3 エンティティの編集
- 4-3-1 属性の追加
- 4-3-2 属性の型
- 4-3-3 属性の設定
- 4-4 管理オブジェクト
- 4-4-1 管理オブジェクトとキー値コーディング
- 4-4-2 カスタム管理オブジェクトクラス
- 4-4-3 動的な初期値の設定
Chapter5 データの管理
- 5-1 一覧画面のUI 実装
- 5-1-1 連携モジュール
- 5-1-2 インターフェイスの実装
- 5-1-3 データソースの実装
- 5-2 データの追加と削除
- 5-2-1 データの追加
- 5-2-2 データの削除
- 5-2-3 管理オブジェクトコンテキストの保存
- 5-3 データのフェッチ
- 5-3-1 フェッチ要求の基本
- 5-3-2 フェッチ要求の設定
- 5-3-3 フェッチ結果の型
Chapter6 データモデルの拡張
- 6-1 バージョン管理とマイグレーション
- 6-1-1 モデルバージョン
- 6-1-2 簡易マイグレーション
- 6-1-3 マッピングモデルの作成
- 6-2 関係とフェッチ済みプロパティ
- 6-2-1 関係の構築
- 6-2-2 削除ルール
- 6-2-3 カスタム管理オブジェクトクラスの更新
- 6-2-4 順序付き関係
- 6-2-5 フェッチ済みプロパティ
- 6-3 特殊な属性
- 6-3-1 変換可能型(Transformable)
- 6-3-2 カスタムトランスフォーマ
- 6-3-3 一時属性(Transient)
- 6-3-4 バイナリデータ
Chapter7 データの編集
- 7-1 編集画面のUI 実装
- 7-1-1 インターフェイスの実装
- 7-1-2 ビューコントローラの作成
- 7-2 属性の編集
- 7-2-1 値の更新
- 7-2-2 変更内容の保存と一覧表示への反映
- 7-2-3 変更内容の破棄
- 7-2-4 管理オブジェクトの挿入
- 7-3 検証とエラーハンドリング
- 7-3-1 検証の流れと標準エラー
- 7-3-2 モデルエディタによる条件の指定
- 7-3-3 カスタム検証メソッド
- 7-3-4 複数プロパティにまたがる検証
- 7-3-5 マルチエラー
Chapter8 高度なデータ編集
- 8-1 本棚一覧画面の準備
- 8-1-1 インターフェイスの実装
- 8-1-2 Shelf一覧ビューコントローラの作成
- 8-2 Shelf オブジェクトの編集
- 8-2-1 データの追加と削除
- 8-2-2 属性の編集
- 8-2-3 セルの並べ替え
- 8-3 複数コンテキストを利用した編集
- 8-3-1 複数コンテキストの必要性
- 8-3-2 オブジェクトの選択とオブジェクトID
- 8-3-3 関係の更新
- 8-3-4 管理オブジェクトコンテキストのマージ
Chapter9 Fetched Results Controller
- 9-1 Fetched Results Controller の準備
- 9-1-1 Fetched Results Controllerの特徴と利点
- 9-1-2 Fetched Results Controllerの初期化
- 9-1-3 データソースの置き換え
- 9-2 テーブルビューの表示と編集
- 9-2-1 Fetched Results Controllerの構造
- 9-2-2 セルの表示
- 9-2-3 セルの編集
- 9-2-4 Fetched Results Controllerデリゲート
- 9-3 セクション分け
- 9-3-1 セクション分けの概要
- 9-3-2 一時属性を利用したセクション分け
- 9-3-3 セクション情報とキャッシュ
Chapter10 Core Dataの効率化
- 10-1 管理オブジェクトのライフサイクル
- 10-1-1 フォールトと一意性
- 10-1-2 強参照と弱参照
- 10-1-3 変更の取り消し
- 10-2 フェッチ要求の詳細設定
- 10-2-1 NSPredicateテンプレート
- 10-2-2 特定オブジェクトのフェッチ
- 10-2-3 コレクション演算子
- 10-3 フェッチの応用
- 10-3-1 値の検索(NSExpressionDescription)
- 10-3-2 フェッチ要求テンプレート
- 10-3-3 非同期フェッチ
Chapter11 Core Dataの応用
- 11-1 並列処理
- 11-1-1 並列処理の必要性
- 11-1-2 並列処理のポリシー
- 11-1-3 管理オブジェクトコンテキストの親子関係
- 11-2 パフォーマンス
- 11-2-1 フェッチ
- 11-2-2 フォールトの発動頻度
- 11-2-3 フォールトの発動を抑制
- 11-2-4 メモリ管理
- 11-3 テストとデバッグ
- 11-3-1 メモリストアを利用したXCTest
- 11-3-2 XCTestのテストケース
- 11-3-3 デバッグツールとパフォーマンス解析
- 11-4 Playground とCore Data
- 11-4-1 管理オブジェクトモデルの作成
- 11-4-2 初期データの準備
- 11-4-3 フェッチと管理オブジェクトの編集
Chapter12 iCloud
- 12-1 iCloud の概要
- 12-1-1 iCloudの機能
- 12-1-2 iCloudストレージ
- 12-1-2 Core DataとiCloud
- 12-2 SQLite ストアのiCloud 共有
- 12-2-1 環境設定
- 12-2-2 永続ストアのiCloud対応
- 12-2-2 iCloudコンテナの初期化
- 12-2-2 iCloudコンテナの変更を取得
- 12-3 アカウントとデータの管理
- 12-2-1 永続ストアの変更
- 12-2-2 アカウント管理とトークン
- 12-2-2 衝突の回避