SlideShare a Scribd company logo
1 of 18
データの保存
~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

More Related Content

Similar to Save data (6)

Hw meetup 20150304
Hw meetup 20150304Hw meetup 20150304
Hw meetup 20150304
 
Realmを使ってみた話
Realmを使ってみた話Realmを使ってみた話
Realmを使ってみた話
 
iOS App performance tuning with Instruments
iOS App performance tuning with InstrumentsiOS App performance tuning with Instruments
iOS App performance tuning with Instruments
 
CoreDataをバックグラウンドで扱うためのTips
CoreDataをバックグラウンドで扱うためのTipsCoreDataをバックグラウンドで扱うためのTips
CoreDataをバックグラウンドで扱うためのTips
 
オープンセミナー2013@広島
オープンセミナー2013@広島オープンセミナー2013@広島
オープンセミナー2013@広島
 
世界征服を目指す Jubatus だからこそ期待する 5 つのポイント
世界征服を目指す Jubatus だからこそ期待する 5 つのポイント世界征服を目指す Jubatus だからこそ期待する 5 つのポイント
世界征服を目指す Jubatus だからこそ期待する 5 つのポイント
 

Recently uploaded

Recently uploaded (8)

LoRaWAN無位置ロープ式水漏れセンサーWL03A 日本語マニュアル
LoRaWAN無位置ロープ式水漏れセンサーWL03A 日本語マニュアルLoRaWAN無位置ロープ式水漏れセンサーWL03A 日本語マニュアル
LoRaWAN無位置ロープ式水漏れセンサーWL03A 日本語マニュアル
 
MPAなWebフレームワーク、Astroの紹介 (その1) 2024/05/17の勉強会で発表されたものです。
MPAなWebフレームワーク、Astroの紹介 (その1) 2024/05/17の勉強会で発表されたものです。MPAなWebフレームワーク、Astroの紹介 (その1) 2024/05/17の勉強会で発表されたものです。
MPAなWebフレームワーク、Astroの紹介 (その1) 2024/05/17の勉強会で発表されたものです。
 
Hyperledger Fabricコミュニティ活動体験& Hyperledger Fabric最新状況ご紹介
Hyperledger Fabricコミュニティ活動体験& Hyperledger Fabric最新状況ご紹介Hyperledger Fabricコミュニティ活動体験& Hyperledger Fabric最新状況ご紹介
Hyperledger Fabricコミュニティ活動体験& Hyperledger Fabric最新状況ご紹介
 
LoRaWAN無位置ロープ型水漏れセンサー WL03A-LB/LSカタログ ファイル
LoRaWAN無位置ロープ型水漏れセンサー WL03A-LB/LSカタログ ファイルLoRaWAN無位置ロープ型水漏れセンサー WL03A-LB/LSカタログ ファイル
LoRaWAN無位置ロープ型水漏れセンサー WL03A-LB/LSカタログ ファイル
 
ネットワーク可視化 振る舞い検知(NDR)ご紹介_キンドリル202405.pdf
ネットワーク可視化 振る舞い検知(NDR)ご紹介_キンドリル202405.pdfネットワーク可視化 振る舞い検知(NDR)ご紹介_キンドリル202405.pdf
ネットワーク可視化 振る舞い検知(NDR)ご紹介_キンドリル202405.pdf
 
2024年5月17日 先駆的科学計算フォーラム2024 機械学習を用いた新たなゲーム体験の創出の応用
2024年5月17日 先駆的科学計算フォーラム2024 機械学習を用いた新たなゲーム体験の創出の応用2024年5月17日 先駆的科学計算フォーラム2024 機械学習を用いた新たなゲーム体験の創出の応用
2024年5月17日 先駆的科学計算フォーラム2024 機械学習を用いた新たなゲーム体験の創出の応用
 
Keywordmap overview material/CINC.co.ltd
Keywordmap overview material/CINC.co.ltdKeywordmap overview material/CINC.co.ltd
Keywordmap overview material/CINC.co.ltd
 
情報を表現するときのポイント
情報を表現するときのポイント情報を表現するときのポイント
情報を表現するときのポイント
 

Save data

Editor's Notes

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