Save data

18
データの保存 ~It is not aware of the everyday~ 1 2015/03 Rootage.inc

Transcript of Save data

データの保存~It is not aware of the everyday~

12015/03 Rootage.inc

• 藤原 航 / Wataru Fujiwara

• 所属:ルーテイジ株式会社

– iOSエンジニア

• iOS App : Color2Code

自己紹介

22015/03 Rootage.inc

Ajenda

• iOSアプリのデータの扱い(P.1~P.8)

– データ領域

– メモリの構造と管理データ

– FDの構造と管理データ

• O/Rマッピングフレームワーク(P.9~P.17)

– ObjectとRelational

– データ構造の違いからくる問題

– フレームワークを使った解決

32015/03 Rootage.inc

iOS端末の3つのデータ領域

iCloud

メモリ

FD

42015/03 Rootage.inc

3つのデータ領域の特徴

保持期間 アクセス時間 容量

メモリ起動してから終了するまで

CPUが直接アクセス出来るするので早い

少ない

FDインストールから

アンインストールまでメモリ読み込みが発生するので遅い

多い

iCloudユーザが明示的にデータを消すまで

サーバ通信が必要なためさらに遅い

より多い

52015/03 Rootage.inc

メモリの構造

共有領域

OS領域

アプリ領域

62015/03 Rootage.inc

メモリでデータを管理する

共有領域

OS領域

アプリ領域 フラッシュドライブやiCloud上のデータを一時的に保存する場合

サーバ通信するアプリで、サーバ側のデータを一時的に保存する場合

画面間でデータを受け渡しする場合

ペーストボード(クリップボード)

アプリからは利用できない

72015/03 Rootage.inc

フラッシュドライブの構造

共有領域

OS領域

アプリ領域

82015/03 Rootage.inc

FDでデータを管理する

共有領域

OS領域

アプリ領域マスタデータ

ユーザが変更できない

アプリデータユーザがたまに変更

ユーザデータユーザが頻繁に変更

メディアライブラリ

アプリからは利用できない

92015/03 Rootage.inc

Core Dataという

O/Rマッピングフレームワークを使う

SQLiteという

リレーショナル・データベースを使う

データの保存方法

102015/03 Rootage.inc

保存 保存

検索

O/RマッピングとはObject/Relational

オブジェクト レコードO/Rマッピング

検索

112015/03 Rootage.inc

技術的背景の違いObject/Relational

プログラミング言語から派生

データの永続化の技術から派生

122015/03 Rootage.inc

用語の違いObject/Relational

オブジェクト レコード

データの実体

データの定義

クラス テーブル

132015/03 Rootage.inc

データ構造の違いObject/Relational

オブジェクト技術 リレーショナル技術

型 独自データ型を指定できる 型の制限あり

サブタイプクラス継承で別クラス作成

できるテーブル定義の継承はで

きない

同一性 プログラマ責任 主キー

関連 クラス 外部キー

142015/03 Rootage.inc

構造の違いからくる問題Object/Relational

サブタイプに関する問題

同一性に関する問題

粒度に関する問題

関連の問題

152015/03 Rootage.inc

問題を解決するためにObject/Relational

マッピングファイル 自動生成

Javaコード

DBスキーマ

162015/03 Rootage.inc

O/Rマッピングの役割Object/Relational

オブジェクト指向設計に最適な形でテーブルを扱う

マッピング作業を自動化

データベースアクセスのための手続きコードを簡素化

個々のプログラムのデータアクセスの方法を統一

ソースコードやデータベーススキーマの一元管理

172015/03 Rootage.inc

ご清聴ありがとうございました

18

Color2Code

2015/03 Rootage.inc