Submit Search
Upload
Core Data バッドプラクティス
•
34 likes
•
7,210 views
Kaname Noto
Follow
2013年11月札幌iPhone開発懇談会勉強会プレゼンテーション資料。 iOS CoreData徹底入門 販売記念。CoreData のバッドプラクティスを紹介します。
Read less
Read more
Technology
Report
Share
Report
Share
1 of 49
Download now
Download to read offline
Recommended
CoreDataをバックグラウンドで扱うためのTips
CoreDataをバックグラウンドで扱うためのTips
Yohei Yamaguchi
やはりお前らのCore Dataの使い方も間違っている
やはりお前らのCore Dataの使い方も間違っている
今城 善矩
やはりお前らのiOS7対応は間違っている
やはりお前らのiOS7対応は間違っている
今城 善矩
ある工場の情シスの生存戦略
ある工場の情シスの生存戦略
Kohei Nakamura
ある工場の情シス
ある工場の情シス
Kohei Nakamura
モノづくりを楽しもう! ~ このデバイスとクラウドでできること
モノづくりを楽しもう! ~ このデバイスとクラウドでできること
Kazumi IWANAGA
障害発生時に抑えておきたい基礎知識
障害発生時に抑えておきたい基礎知識
Kei IWASAKI
ノーコーディングでAIサービスを使ってみた話
ノーコーディングでAIサービスを使ってみた話
典子 松本
Recommended
CoreDataをバックグラウンドで扱うためのTips
CoreDataをバックグラウンドで扱うためのTips
Yohei Yamaguchi
やはりお前らのCore Dataの使い方も間違っている
やはりお前らのCore Dataの使い方も間違っている
今城 善矩
やはりお前らのiOS7対応は間違っている
やはりお前らのiOS7対応は間違っている
今城 善矩
ある工場の情シスの生存戦略
ある工場の情シスの生存戦略
Kohei Nakamura
ある工場の情シス
ある工場の情シス
Kohei Nakamura
モノづくりを楽しもう! ~ このデバイスとクラウドでできること
モノづくりを楽しもう! ~ このデバイスとクラウドでできること
Kazumi IWANAGA
障害発生時に抑えておきたい基礎知識
障害発生時に抑えておきたい基礎知識
Kei IWASAKI
ノーコーディングでAIサービスを使ってみた話
ノーコーディングでAIサービスを使ってみた話
典子 松本
20180217 hackertackle geode
20180217 hackertackle geode
Masaki Yamakawa
Microsoft の深層学習への取り組み
Microsoft の深層学習への取り組み
Hirono Jumpei
.NET 6の期待の新機能とアップデート
.NET 6の期待の新機能とアップデート
TomomitsuKusaba
The seminar of asp.net at 201908 sakurug
The seminar of asp.net at 201908 sakurug
SAKURUG co.
データをどこに溜めよう?ローカル?クラウド?どのデータベース?
データをどこに溜めよう?ローカル?クラウド?どのデータベース?
- Core Concept Technologies
コンテナ環境でJavaイメージを小さくする方法!
コンテナ環境でJavaイメージを小さくする方法!
オラクルエンジニア通信
【解説】データ指向アプリケーションデザイン 12章 データシステムの未来
【解説】データ指向アプリケーションデザイン 12章 データシステムの未来
Shinya Mori (@mosuke5)
(続) Effective SQLite for Android
(続) Effective SQLite for Android
Shinobu Okano
[D33] そのデータベース 5年後大丈夫ですか by Hiromu Goto
[D33] そのデータベース 5年後大丈夫ですか by Hiromu Goto
Insight Technology, Inc.
Microsoft AI Platform
Microsoft AI Platform
Daiyu Hatakeyama
db tech showcase2019 オープニングセッション @ 石川 雅也
db tech showcase2019 オープニングセッション @ 石川 雅也
Insight Technology, Inc.
MapReduceを置き換えるSpark 〜HadoopとSparkの統合〜 #cwt2015
MapReduceを置き換えるSpark 〜HadoopとSparkの統合〜 #cwt2015
Cloudera Japan
Oracle設計
Oracle設計
Kouta Shiobara
地方企業がソーシャルゲーム開発を成功させるための10のポイント
地方企業がソーシャルゲーム開発を成功させるための10のポイント
Kentaro Matsui
ビッグデータ処理データベースの全体像と使い分け - 2017年 Version -
ビッグデータ処理データベースの全体像と使い分け - 2017年 Version -
Tetsutaro Watanabe
G-Tech2015 Hadoop/Sparkを中核としたビッグデータ基盤_20151006
G-Tech2015 Hadoop/Sparkを中核としたビッグデータ基盤_20151006
Cloudera Japan
Microsoft AI Solution Update / DLL community Update
Microsoft AI Solution Update / DLL community Update
Hirono Jumpei
IoT World Conference 2017 - Microsoft AI Platform
IoT World Conference 2017 - Microsoft AI Platform
Daiyu Hatakeyama
20140713 ハッカソン基調講演
20140713 ハッカソン基調講演
Code_for_Sakai
WebDB Forum 2012 基調講演資料
WebDB Forum 2012 基調講演資料
Recruit Technologies
SwiftUIのライブコーディングするとxcodeが◯回落ちる
SwiftUIのライブコーディングするとxcodeが◯回落ちる
Kaname Noto
iOS13 SDK による 全機能置き換え Part1
iOS13 SDK による 全機能置き換え Part1
Kaname Noto
More Related Content
Similar to Core Data バッドプラクティス
20180217 hackertackle geode
20180217 hackertackle geode
Masaki Yamakawa
Microsoft の深層学習への取り組み
Microsoft の深層学習への取り組み
Hirono Jumpei
.NET 6の期待の新機能とアップデート
.NET 6の期待の新機能とアップデート
TomomitsuKusaba
The seminar of asp.net at 201908 sakurug
The seminar of asp.net at 201908 sakurug
SAKURUG co.
データをどこに溜めよう?ローカル?クラウド?どのデータベース?
データをどこに溜めよう?ローカル?クラウド?どのデータベース?
- Core Concept Technologies
コンテナ環境でJavaイメージを小さくする方法!
コンテナ環境でJavaイメージを小さくする方法!
オラクルエンジニア通信
【解説】データ指向アプリケーションデザイン 12章 データシステムの未来
【解説】データ指向アプリケーションデザイン 12章 データシステムの未来
Shinya Mori (@mosuke5)
(続) Effective SQLite for Android
(続) Effective SQLite for Android
Shinobu Okano
[D33] そのデータベース 5年後大丈夫ですか by Hiromu Goto
[D33] そのデータベース 5年後大丈夫ですか by Hiromu Goto
Insight Technology, Inc.
Microsoft AI Platform
Microsoft AI Platform
Daiyu Hatakeyama
db tech showcase2019 オープニングセッション @ 石川 雅也
db tech showcase2019 オープニングセッション @ 石川 雅也
Insight Technology, Inc.
MapReduceを置き換えるSpark 〜HadoopとSparkの統合〜 #cwt2015
MapReduceを置き換えるSpark 〜HadoopとSparkの統合〜 #cwt2015
Cloudera Japan
Oracle設計
Oracle設計
Kouta Shiobara
地方企業がソーシャルゲーム開発を成功させるための10のポイント
地方企業がソーシャルゲーム開発を成功させるための10のポイント
Kentaro Matsui
ビッグデータ処理データベースの全体像と使い分け - 2017年 Version -
ビッグデータ処理データベースの全体像と使い分け - 2017年 Version -
Tetsutaro Watanabe
G-Tech2015 Hadoop/Sparkを中核としたビッグデータ基盤_20151006
G-Tech2015 Hadoop/Sparkを中核としたビッグデータ基盤_20151006
Cloudera Japan
Microsoft AI Solution Update / DLL community Update
Microsoft AI Solution Update / DLL community Update
Hirono Jumpei
IoT World Conference 2017 - Microsoft AI Platform
IoT World Conference 2017 - Microsoft AI Platform
Daiyu Hatakeyama
20140713 ハッカソン基調講演
20140713 ハッカソン基調講演
Code_for_Sakai
WebDB Forum 2012 基調講演資料
WebDB Forum 2012 基調講演資料
Recruit Technologies
Similar to Core Data バッドプラクティス
(20)
20180217 hackertackle geode
20180217 hackertackle geode
Microsoft の深層学習への取り組み
Microsoft の深層学習への取り組み
.NET 6の期待の新機能とアップデート
.NET 6の期待の新機能とアップデート
The seminar of asp.net at 201908 sakurug
The seminar of asp.net at 201908 sakurug
データをどこに溜めよう?ローカル?クラウド?どのデータベース?
データをどこに溜めよう?ローカル?クラウド?どのデータベース?
コンテナ環境でJavaイメージを小さくする方法!
コンテナ環境でJavaイメージを小さくする方法!
【解説】データ指向アプリケーションデザイン 12章 データシステムの未来
【解説】データ指向アプリケーションデザイン 12章 データシステムの未来
(続) Effective SQLite for Android
(続) Effective SQLite for Android
[D33] そのデータベース 5年後大丈夫ですか by Hiromu Goto
[D33] そのデータベース 5年後大丈夫ですか by Hiromu Goto
Microsoft AI Platform
Microsoft AI Platform
db tech showcase2019 オープニングセッション @ 石川 雅也
db tech showcase2019 オープニングセッション @ 石川 雅也
MapReduceを置き換えるSpark 〜HadoopとSparkの統合〜 #cwt2015
MapReduceを置き換えるSpark 〜HadoopとSparkの統合〜 #cwt2015
Oracle設計
Oracle設計
地方企業がソーシャルゲーム開発を成功させるための10のポイント
地方企業がソーシャルゲーム開発を成功させるための10のポイント
ビッグデータ処理データベースの全体像と使い分け - 2017年 Version -
ビッグデータ処理データベースの全体像と使い分け - 2017年 Version -
G-Tech2015 Hadoop/Sparkを中核としたビッグデータ基盤_20151006
G-Tech2015 Hadoop/Sparkを中核としたビッグデータ基盤_20151006
Microsoft AI Solution Update / DLL community Update
Microsoft AI Solution Update / DLL community Update
IoT World Conference 2017 - Microsoft AI Platform
IoT World Conference 2017 - Microsoft AI Platform
20140713 ハッカソン基調講演
20140713 ハッカソン基調講演
WebDB Forum 2012 基調講演資料
WebDB Forum 2012 基調講演資料
More from Kaname Noto
SwiftUIのライブコーディングするとxcodeが◯回落ちる
SwiftUIのライブコーディングするとxcodeが◯回落ちる
Kaname Noto
iOS13 SDK による 全機能置き換え Part1
iOS13 SDK による 全機能置き換え Part1
Kaname Noto
Photos vs Assets Library - いまさら始めるPhotos.framework
Photos vs Assets Library - いまさら始めるPhotos.framework
Kaname Noto
Firebase 概要
Firebase 概要
Kaname Noto
明日のためのBaaS - BaaS for tomorrow
明日のためのBaaS - BaaS for tomorrow
Kaname Noto
iOS グラフィックス Tips
iOS グラフィックス Tips
Kaname Noto
More from Kaname Noto
(6)
SwiftUIのライブコーディングするとxcodeが◯回落ちる
SwiftUIのライブコーディングするとxcodeが◯回落ちる
iOS13 SDK による 全機能置き換え Part1
iOS13 SDK による 全機能置き換え Part1
Photos vs Assets Library - いまさら始めるPhotos.framework
Photos vs Assets Library - いまさら始めるPhotos.framework
Firebase 概要
Firebase 概要
明日のためのBaaS - BaaS for tomorrow
明日のためのBaaS - BaaS for tomorrow
iOS グラフィックス Tips
iOS グラフィックス Tips
Recently uploaded
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
iPride Co., Ltd.
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Hiroshi Tomioka
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
Toru Tamaki
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
Hiroshi Tomioka
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NTT DATA Technology & Innovation
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
iPride Co., Ltd.
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
atsushi061452
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
CRI Japan, Inc.
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
CRI Japan, Inc.
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
Toru Tamaki
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
iPride Co., Ltd.
Recently uploaded
(11)
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
Core Data バッドプラクティス
1.
CoreData バッドプラクティス
2.
お題目 • 簡単な自己紹介 • CoreData
書籍 • バッドプラクティスCoreData • バッドプラクティスからのリカバリ
3.
簡単な自己紹介 • iPhoneのアプリ開発者 • 頭わるいアプリ開発 •
アプリの企画提案(サービス/フレームワークの提案) • 喫茶作業者
4.
開発アプリ Wifiルーター用アプリ 印刷サービス用アプリ
5.
CoreData の書籍
6.
iOS CoreData徹底入門 • 前半sqlite、後半CoreDataの 構成 •
利用ケースに基づいたサンプ ルコード • マルチスレッドについて言及 なし • バイナリを格納する方法につ いて詳しい
7.
CoreData を使う ユーザが増えるのは うれしいかぎり。
8.
ただしCoreDataで 思わぬ罠に陥る事も…
9.
そもそも使う 必要がある?
10.
SQLライクにデータを永続化&問い合わせ機 能を実現するのであれば(既にsqliteに関する 知識があれば)sqlite も選択肢かも。
11.
規模がそれ程大きくない場合は、 NSArray、NSDictionary で永続化、 NSPredicate を使って絞り込みが可 能。
12.
規模がそれ程大きくない場合は、 NSArray、NSDictionary で永続化、 NSPredicate を使って絞り込みが可能。
13.
NSPredicte による データの問い合わせ • NSPredicate
によるデータの問い合わせが可能 • 指定方法がNSString のフォーマット分に近い ものが使える(同じではない) • plist で絞り込めるのは(500-1000要素ぐらいが 限界)
14.
NSPredicateについては サンプルコード参照 https://github.com/ notoroid/SimpleSearch
15.
16.
CoreDataの特徴 • NSPredicte によるデータの問い合わせ •
データモデルのアップグレードがそこそこ整備(マイ グレーション) • データの永続化とオブジェクト管理が分離されてい る(取り消しやマルチスレッドにも応用可) • オブジェクトっぽく扱える
17.
データの永続化 • オブジェクトの形でデータを永続化できる オブジェクトの形で なければ他の選択肢 で良くないのでは?
18.
データモデルの アップグレード機能がそこそこ整備 • 複数のデータモデルを定義して、データモデ ル間のデータモデルのアップグレードが可能 • データモデル間のアップグレード方法を指定 することができる(自動、手動) •
sqlite でもできないことはない
19.
オブジェクトっぽく扱える • NSManagedObject がCoreDataのオブジェク ト。NSManagedObject
から値を取得 • NSManagedObject をカスタマイズして、オ ブジェクトのプロパティのように扱うことも 可能
20.
CoreData の立ち位置は? • sqlite
や、plist で実現可能な事が重複してい る。 • オブジェクトを永続化することに関して網羅 的だがCoreDataを使う上で抑えておくことが 多い。 • iOS SDKでもミドルウェア的扱い。
21.
CoreData を採用するに あたって • データモデルの継続的アップグレードが必要? •
バックグラウンドとフォアグランドでデータ の更新が必要? • 他のアプリ開発でもステレオタイプにデータ を扱いたい?
22.
もしそうでなければ 他の手段を探してみて は?
23.
バッドプラクティス CoreData
24.
CoreData を使う上で 悪い例を紹介
25.
バッドプラクティス① CoreData の ミドルウェアを使う
26.
MagicalRecord • パッケージ管理(CocoaPods) で見つかる •
データモデルに基づいてカスタムクラスを自 動生成&マイグレーション機能を提供 • CreDataを使う上で便利な機能を提供
27.
MagicalRecord • カスタムクラス • 無駄に巨大(全文検索の邪魔) •
検索できる有益な情報がCoreDataそのものよ り少ない。 • デフォルトのストレージ位置が BundleDisplayName(アプリの表示名)
28.
デフォルトのストレージ位置が BundleDisplayName(アプリの表示名) • アプリの表示を変えると、以前の保存用デー タのパスを忘れてしまう。 • アプリの表示名を変更するだけで、データベー スが消去されたように錯覚してしまう。
29.
何が言いたいかと いうと
30.
初期の開発スピードは稼げる が、メンテナンスに伴う作業 は悲惨なものになる
31.
MagicalRecord へのフォロー • おそらくは、Twitter
やFacebookページをなど もオフラインデータの利用を想定したもの • ユーザの貴重なデータを取り扱うことはあま り想定されていないかもしれない。
32.
技術査定の問題 • 検索経由で探し出したミドルウェアは技術の 査定ができてないかも? • パッケージ管理に対応しているミドルウェア は最良の解決方法?
33.
バッドプラクティス② データの中に画像
34.
データの中に画像 • CoreDataのデータモデルに定義にバイナリ データを指定可能 • イメージもバイナリデータの形で保存可能 •
ファイルで保存するよりも管理が楽。
35.
• 本来サムネイルだけだったのがいつの間にか 多用 • 格納する画像解像度を高くすると、永続化デー タのサイズが巨大化。メモリオーバーで落ち る •
シミュレータや、最新機種だけでテストする と問題を発見できない
36.
まとめ • ミドルウェア相当のCoreDataに対して、ミドル ウェアは蛇足かも? • パッケージ管理で取り入れるミドルウェアは用途 に応じて査定しましょう。査定しないミドルウェ アを納品するとあなたの信用が目減りします。 •
データモデルへの画像を含める事は可能であって も、それが妥当か検討しましょう。
37.
バッドプラクティス からのリカバリ
38.
バッドプラクティス 満載のアプリを リリースしてしまった。
39.
もうお手上げ?
40.
CoreData 様は バッドプラクティス満載の アプリにも救いの手を 差し伸べてくれます。
41.
バッドプラクティス からの脱却 • データモデルをアップグレードして大きなバ イナリデータを外に追い出す。 • データモデルのアップグレードには、データ モデルマッピングを使う。 •
バイナリデータを外に書き出すには手動アッ プグレードを用意する。
42.
新しい属性を追加するだけであれば、データマッ ピングファイルは必要ない。
43.
データモデル内の属性名を変 更程度であればモデルマッピ ングソフトの作成だけで済む。
44.
45.
デモコード
46.
https://github.com/ notoroid/ CoreDataImageMigrati onSample
47.
注意点 • データモデルの名前にアンダーバー(_) を使う とデータマッピングを読み込まなくなる •
誤ったデータモデルを追加した場合は、手動 でプロジェクトファイルを編集する必要が出 てくる
48.
まとめ • iOS CoreData
徹底入門 が出たことCoreData が身近になりました。 • ステレオタイプにiOSアプリのデータを扱いた いのであれば、この機会に学んでみてはいか がでしょう?
49.
http://irimasu.com Twitter: @notoroid 公式: @irimasu
Download now