軽量・高速モバイルデータベース Realm入門
技術評論社
著者:菅原祐
監修:Realm 岸川克己
はじめに
本書について
Part1 入門編
第1章 モバイルデータベース入門
1.1 データベースとは
1.2 データベースの具体的な使用例
1.3 iOSで用意されている保存方法
1.4 なぜRealmが作られたのか
第2章 Realmの特徴と利点
2.1 テーブル定義(モデル定義)
2.2 API
2.3 速度
2.4 複数のプラットフォームに対応
2.5 ユーザサポート
2.6 オープンソースソフトウェア(OSS)
Part2 基礎編
第3章 Realmのインストール
3.1 Dynamic Framework
3.2 CocoaPods
3.3 Carthage
第4章 Realmクラス
4.1 デフォルトRealmの取得
4.2 Realmインスタンス取得時のエラー処理
第5章 モデル定義
5.1 モデル定義とは
5.2 プロパティ
5.3 プライマリキー(主キー)
5.4 インデックス(索引)
5.5 保存しないプロパティ
5.6 モデルクラスの継承するときの注意点
第6章 モデルオブジェクトの生成と初期化
6.1 使用するモデル定義
6.2 生成と初期化する方法
6.3 ネストしたモデルオブジェクトの生成と初期化
第7章 モデルオブジェクトの追加/更新/削除
7.1 使用するモデル定義
7.2 書き込みトランザクション
7.3 モデルオブジェクトの追加
7.4 アンマネージドオブジェクト/マネージドオブジェクト
7.5 モデルオブジェクトの更新
7.6 モデルオブジェクトの削除
7.7 書き込みトランザクションのキャンセル
7.8 書き込みトランザクションのエラー処理
第8章 モデルオブジェクトの取得
8.1 使用するモデル定義
8.2 検索結果(Resultsクラス)
8.3 クエリ(検索条件)
8.4 クエリの構文
8.5 クエリの遅延
第9章 自動更新(ライブアップデート)
9.1 使用するモデル定義
9.2 モデルオブジェクトの自動更新
9.3 関連(1対1,1対多,逆方向)の自動更新
9.4 検索結果(Results)の自動更新
9.5 自動更新の例外
第10章 マルチスレッド
10.1 データの整合性(一貫性)
10.2 異なるスレッド間でのオブジェクトの制約
10.3 異なるスレッド間で同じRealmファイルを扱う
10.4 異なるスレッドで更新したデータの反映
10.5 Realmインスタンスの内部キャッシュ
10.6 Realmファイルのサイズ肥大化について
第11章 通知
11.1 通知とは
11.2 通知の追加
11.3 通知ハンドラの特徴と定義
11.4 通知の停止
11.5 通知のスキップ
11.6 キー値監視(KVO)
11.7 プロパティオブザーバ
第12章 Realmの設定
12.1 Realmの設定方法(Realm.Configuration構造体)
12.2 Realmの各種設定
12.3 デフォルトRealmの設定変更
第13章 マイグレーション
13.1 マイグレーションとは
13.2 マイグレーションを設定する
13.3 マイグレーションクラス(Migrationクラス)
13.4 マイグレーション処理
13.5 何もしないマイグレーション処理
13.6 複数世代のマイグレーション
13.7 マイグレーション処理を行わずに古いRealmファイルを削除
第14章 その他のクラス/プロトコル
14.1 コレクションプロトコル(RealmCollection)
14.2 型消去されたラッパークラス(AnyRealmCollection)
第15章 デバッグ
15.1 Xcodeでデバッグする方法
第16章 制限事項
16.1 一般的な制限事項
16.2 Realm Object Server
Part3 活用編
第17章 [逆引き]Realmの取り扱い
17.1 Realmファイルを削除する
17.2 Realmを別ファイルに保存する
17.3 肥大化したRealmファイルのサイズを最適化する
17.4 初期データの入ったRealmファイルをアプリに組む込む
17.5 異なるRealmにモデルオブジェクトを追加する
17.6 JSONからモデルオブジェクトを生成する
17.7 異なるスレッド間でオブジェクトを受け渡す
第18章 [逆引き]Realmの注意事項
18.1 アプリのバックグラウンドでRealmを使用する場合の注意点
18.2 暗号化したRealmとクラッシュレポートツール併用時の注意点
18.3 ユニットテスト
18.4 暗号化キーの生成と安全な管理方法
18.5 暗号化を利用した場合のAppStoreへの審査について
Part4 実装編~Twitterクライアントを作る
第19章 基本動作の開発
19.1 Twitterクライアントを作る
19.2 ツイートを表示する
19.3 ツイートにエンティティを追加する
19.4 タイムラインを表示する
19.5 通知を使いツイートを動的に更新する
19.6 ツイートをバックグラウンドスレッドで追加する
19.7 ツイートを削除する
19.8 タイムラインをフィルタリングする
第20章 応用的な開発
20.1 関連付いていないモデルの削除
20.2 仕様変更のマイグレーションに対応する
20.3 複数ユーザのログインに対応する
20.4 その後の開発
Appendix A APIリファレンス
A.0 目次
A.1 クラス
A.1.1 Object
A.1.2 Realm
A.1.3 Results
A.1.4 List
A.1.5 LinkingObjects
A.1.6 Migration
A.1.7 Schema
A.1.8 ObjectSchema
A.1.9 Property
A.1.10 RealmOptional
A.1.11 AnyRealmCollection
A.1.12 RLMIterator
A.1.13 ThreadSafeReference
A.2 構造体
A.2.1 Realm.Configuration
A.2.2 Realm.Error
A.2.3 PropertyChange
A.2.4 SortDescriptor
A.3 列挙型
A.3.1 Realm.Notification
A.3.2 RealmCollectionChange
A.3.3 ObjectChange
A.4 プロトコル
A.4.1 RealmCollection
A.4.2 RealmOptionalType
A.4.3 MinMaxType
A.4.4 AddableType
A.4.5 ThreadConfined
A.5 関数/タイプエイリアス
A.5.1 関数
A.5.2 タイプエイリアス
Appendix B 付録/ツール
B.1 モデル定義のチートシート
B.2 モデルクラスのテンプレート
B.3 Realmブラウザ