21
MagicalRecordCore Data をシンプルにする Cocoa 勉強会 関西 2014/4/19 @asakahara

Cocoa勉強会関西 #55 MagicalRecordでCore Dataをシンプルにする

Embed Size (px)

DESCRIPTION

Cocoa勉強会関西 #55 MagicalRecordでCore Dataをシンプルにする

Citation preview

Page 1: Cocoa勉強会関西 #55 MagicalRecordでCore Dataをシンプルにする

MagicalRecordでCore Dataをシンプルにする

Cocoa 勉強会 関西

2014/4/19 @asakahara

Page 2: Cocoa勉強会関西 #55 MagicalRecordでCore Dataをシンプルにする

まずは自己紹介

•今年2月からはてなスタッフとして滋賀に移住したばかり •それ以前は広島のECサイト運営会社とフリーランスで

3年ほどiOSアプリ開発に従事

•個人でもiOSアプリを5本ほどリリース

•最近は仕事以外でも夜な夜なアプリ作るのが日課

Page 3: Cocoa勉強会関西 #55 MagicalRecordでCore Dataをシンプルにする

少し宣伝を・・・是非お試しください!

Page 4: Cocoa勉強会関西 #55 MagicalRecordでCore Dataをシンプルにする

Core Data って使いやすいですか?

では本題です

Page 5: Cocoa勉強会関西 #55 MagicalRecordでCore Dataをシンプルにする

•使うための前準備だけでいろいろ書く必要がある

•マルチスレッドの場合、スレッド毎にContextを用意しな

いといけない等の準備が必要 •単純なクエリでもコード量増えがち

•NSUserDefaultsみたいに簡単に使いにくい

機能は充実しているけど・・・

など問題ありますよね・・・

Page 6: Cocoa勉強会関西 #55 MagicalRecordでCore Dataをシンプルにする

もっと気軽に使いたい!

Page 7: Cocoa勉強会関西 #55 MagicalRecordでCore Dataをシンプルにする

と思ってたら それらを解決してくれる ライブラリが既に

たくさん作られていました

Page 8: Cocoa勉強会関西 #55 MagicalRecordでCore Dataをシンプルにする

その中から今日は 以前から開発されていて

情報も多いMagicalRecordについて 簡単に紹介します

Page 9: Cocoa勉強会関西 #55 MagicalRecordでCore Dataをシンプルにする

MagicalRecordとは?• Active Recordパターンを採用したCore Data のラッパー

• Core Dataの機能もそのまま使える

• Core Data特有の処理を隠蔽してくれる

• Core Dataの知識があれば学習コストは低い

面倒なことを肩代わりしてくれます!

Page 10: Cocoa勉強会関西 #55 MagicalRecordでCore Dataをシンプルにする

mogeneratorについても紹介Xcodeで作成したモデルファイルから各エンティティ用の NSManagedObject派生クラスを自動生成してくれるユーティリティ

Xcodeでもできるけど・・・ •カスタマイズ専用のサブクラスも一緒に出力してくれる

•固有の処理はサブクラスに書いておけば再出力しても上書きされない等のメリットがある

補足: MagicalRecordとmogeneratorを一緒に使うとリジェクトされるケースがあるらしい

Ver 2.3.0(ベータ)では解決しているとのこと

Page 11: Cocoa勉強会関西 #55 MagicalRecordでCore Dataをシンプルにする

MagicalRecordの導入

platform :ios, '7.0'pod 'MagicalRecord'

・Podfileの作成

・インストール> pod install

> brew install mogenerator

・mogenerator はHomebrewでインストールするのが簡単

Page 12: Cocoa勉強会関西 #55 MagicalRecordでCore Dataをシンプルにする

monegeratorの使い方

> mogenerator --template-var arc=true \ -m ./project/Model/DataModel.xcdatamodeld \ -O ./project/Model/

・コマンド

Page 13: Cocoa勉強会関西 #55 MagicalRecordでCore Dataをシンプルにする

使い方

[MagicalRecord setupCoreDataStackWithStoreNamed:@“データモデル名.sqlite”];

application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions

•後処理(applicationWillTerminate:)

[MagicalRecord cleanUp];

•セットアップ

Page 14: Cocoa勉強会関西 #55 MagicalRecordでCore Dataをシンプルにする

CRUDNSArray *people = [Person MR_findAll];!NSArray *peopleSorted = [Person MR_findAllSortedByProperty: @"LastName" ascending:YES];!

•クエリ

•登録Person *myNewPersonInstance = [Person MR_createEntity];

Person *p = ...;[p MR_deleteEntity];

•削除

[[NSManagedObjectContext MR_defaultContext] MR_saveOnlySelfAndWait];

•保存

Page 15: Cocoa勉強会関西 #55 MagicalRecordでCore Dataをシンプルにする

詳細な使い方はドキュメントを見ていきましょう !

https://github.com/magicalpanda/MagicalRecord

Page 16: Cocoa勉強会関西 #55 MagicalRecordでCore Dataをシンプルにする

MagicalRecordを使ったサンプルを 公開してますので参考にしてください

https://github.com/asakahara/ASHatenaBlogReader

Page 17: Cocoa勉強会関西 #55 MagicalRecordでCore Dataをシンプルにする

今日のまとめ

• MagicalRecordを使うことで開発効率のアップ

•簡単に使える分、Core Dataが裏で何をやってるかを

常に意識しながら開発するのがベスト •気になるところは実際にソースコードを見てみるとよい

Page 18: Cocoa勉強会関西 #55 MagicalRecordでCore Dataをシンプルにする

面倒で決まりきった処理は ライブラリにまかせて

自分たちが本当に作るべき物を集中して開発できる環境にして

いきましょう!

Page 19: Cocoa勉強会関西 #55 MagicalRecordでCore Dataをシンプルにする

• iOS Core Data 徹底入門 !日本語のCore Dataに関する書籍は少ないので貴重な一冊です !マルチスレッドで使用する際の情報があればもっとよかった

Core Dataをよりよく 知るために

Page 20: Cocoa勉強会関西 #55 MagicalRecordでCore Dataをシンプルにする

活動中のSNS、ブログなど

•はてなブログ:http://sakahara.hatenablog.jp/

•個人サイト:http://www.mocology.com/ja/

• Twitter:@asakahara

• qiita:http://qiita.com/asakahara

Page 21: Cocoa勉強会関西 #55 MagicalRecordでCore Dataをシンプルにする

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