Save data
- 2. • 藤原 航 / Wataru Fujiwara
• 所属:ルーテイジ株式会社
– iOSエンジニア
• iOS App : Color2Code
自己紹介
22015/03 Rootage.inc
Editor's Notes
- メインメモリ
主記憶装置
メモリは不足しやすく不足するとOSから強制終了される
いつ消されても良い一時データを扱う
フラッシュドライブ
PCで言うところのハードディスクやSSDに当たるところ
アプリごとに領域が割り当てられている
アプリが終了してもデータを持ち続ける
iCloud
Apple社が管理するサーバ
データはApple IDに紐付いていて、ユーザがApple IDを削除されない限りデータが保持される
アプリが消されても消えない
同一ユーザ(同じApple ID)であれば、別端末でもデータ共有可能
- メインメモリ
生存期間
アプリが起動してから、アプリが終了するまで保持
アクセス時間
CPUが直接アクセスするので早い
容量
最小128MB,iPhone6系、iPadAirで1GB
フラッシュドライブ
生存期間
アプリのインストールからアンインストールまで
アクセス時間
メモリ読み込みが発生するので遅い
容量
最小8GB,最大128GB
生存期間
ユーザが明示的にアカウントからデータを消すまで
アクセス時間
サーバー通信が必要なためFDよりさらに遅い
容量
無料で5GB、最大1TB
- アプリ領域
アプリごとに独立して管理される
OS領域
iOSを動作させるのに使用する領域。アプリからのアクセスは出来ない
共有領域
一時的にデータを保存出来る共有の領域。ペーストボード。クリップボード
- アプリ領域
フラッシュドライブやiCloud上のデータを一時的に保存する場合
サーバ通信するアプリで、サーバ側のデータを一時的に保存する場合
画面間でデータを受け渡しする場合
OS領域
アプリからのアクセスは出来ない
共有領域
PCと同じクリップボードと同じ使い方
アプリ間のデータの受け渡し
- アプリ領域
マスタデータ
都道府県一覧
エラーメッセージ
アプリアップデート時の案内など
アプリデータ
ユーザーIDや天気予報アプリの地域設定
ユーザデータ
アドレス帳の住所や名前 メモ帳アプリのメモ
メディアライブラリ
写真、音楽、ビデオ、イベント、連絡先など
アプリが書き込み出来るのは写真、動画、連絡先、イベントのみ。
OS領域
アプリからのアクセスは出来ない
-
CoreDataとは
オブジェクトとレコードの変換を行う
なぜ変換が必要なリレーショナル・データベースを使うのか
データベースには種類がいくつかあり、リレーショナルデータベース、オブジェクトデータベース、キーバリューストアがある。
最も理想的なのはオブジェクトデータベース
オブジェクトデータベースはオブジェクトをそのまま保存できるので、O/Rマッピングフレームワークは不要
まだまだ技術的に成熟しておらず、安定したプロダクトがないので、リレーショナル・データベースが採用されている
- オブジェクト技術はオブジェクト指向、リレーショナル技術はリレーショナル理論が技術のベース
◇リレーショナルデータベース設計
リレーショナルデータベースの検索や登録更新処理に最適なモデルを定義
◇オブジェクト指向設計
データモデルを現実世界のモデルに即したものとして定義
- データの実体をオブジェクト技術はオブジェクト、リレーショナル技術はレコードと呼ぶ
- 型
オブジェクト技術は独自データ型(クラス)を属性の方に指定できる
-
粒度
オブジェクトよりリレーショナルのほうがデータの粒度が大きくなる
データ定義が大まかということ
サブタイプ
テーブルはクラスのように継承できない
同一性
オブジェクト技術には主キーがないので、オブジェクト同士が同一であるという保証がない
関連
テーブルは外部キーでしか関連を持てない
データを扱う際に、クラスとテーブルはミスマッチが起きている
インピーダンスミスマッチ
無理な表結合が多く発生して結果的にパフォーマンスの悪化を引き起こす。
更新処理が多くのテーブルにまたがってしまう。
非オブジェクト指向手続きによる柔軟性の阻害
- 変換処理をするために
あらかじめ、クラスのフィールドとテーブルカラムの対応付け(Mapping)をXMLファイルなどの外部ファイルで定義しておく
O/Rマッピングフレームワークがクラスのフィールドとテーブルカラムのマッピングを処理する
プログラマはO/Rマッピングフレームワークによって生成されたクラスを用いて、フレームワークの提供するAPIを用いて「保存」や「検索」処理を行う
- インピーダンスミスマッチによって発生するマッピング作業を自動化する
オブジェクト指向設計に最適な形式でリレーショナルデータベースのテーブルを扱うことができる。
データベース接続や例外処理といった、データベースアクセスのための手続きコードを簡素化する
アプリケーション内の個々のプログラムにおけるデータアクセスの方法を統一する
(RDBMSごとに異なるSQLの方言を吸収し、柔軟性のあるデータアクセスを実現する)
(データベースとアプリケーションの結合度を弱める)
自動化ツールによる、ソースコードやデータベーススキーマの生成および一元管理が可能となる
O/Rマッピングにおける煩雑な処理はすべてO/Rマッピングフレームワークが引き受ける。
O/Rマッピングフレームワークを利用したデータベースの操作では、あたかもオブジェクトをそのまま扱っているかのように処理することができる。