SlideShare a Scribd company logo
1 of 21
Download to read offline
MagicalRecordでCore Data
をシンプルにする
Cocoa 勉強会 関西
2014/4/19
@asakahara
まずは自己紹介
• 今年2月からはてなスタッフとして滋賀に移住したばかり
• それ以前は広島のECサイト運営会社とフリーランスで
3年ほどiOSアプリ開発に従事
• 個人でもiOSアプリを5本ほどリリース
• 最近は仕事以外でも夜な夜なアプリ作るのが日課
少し宣伝を・・・是非お試しください!
Core Data って使いやすい
ですか?
では本題です
•使うための前準備だけでいろいろ書く必要がある
•マルチスレッドの場合、スレッド毎にContextを用意しな
いといけない等の準備が必要
•単純なクエリでもコード量増えがち
•NSUserDefaultsみたいに簡単に使いにくい
機能は充実しているけど・・・
など問題ありますよね・・・
もっと気軽に使いたい!
と思ってたら
それらを解決してくれる
ライブラリが既に
たくさん作られていました
その中から今日は
以前から開発されていて
情報も多いMagicalRecordについて
簡単に紹介します
MagicalRecordとは?
• Active Recordパターンを採用したCore Data のラッパー
• Core Dataの機能もそのまま使える
• Core Data特有の処理を隠 してくれる
• Core Dataの知識があれば学習コストは低い
面倒なことを肩代わりして
くれます!
mogeneratorについても紹介
Xcodeで作成したモデルファイルから各エンティティ用の
NSManagedObject派生クラスを自動生成してくれる
ユーティリティ
Xcodeでもできるけど・・・
•カスタマイズ専用のサブクラスも一緒に出力してくれる
•固有の処理はサブクラスに書いておけば再出力しても上
書きされない等のメリットがある
補足:
MagicalRecordとmogeneratorを一緒に使うとリジェクトされるケースがあるらしい
Ver 2.3.0(ベータ)では解決しているとのこと
MagicalRecordの導入
platform :ios, '7.0'	
pod 'MagicalRecord'
・Podfileの作成
・インストール
> pod install
> brew install mogenerator
・mogenerator はHomebrewでインストールするのが簡単
monegeratorの使い方
> mogenerator --template-var arc=true 	
-m ./project/Model/DataModel.xcdatamodeld 	
-O ./project/Model/	
・コマンド
使い方
[MagicalRecord setupCoreDataStackWithStoreNamed:@“データモデル
名.sqlite”];
application:(UIApplication *)application
didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
•後処理(applicationWillTerminate:)
[MagicalRecord cleanUp];
•セットアップ
CRUD
NSArray *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];
•保存
詳細な使い方はドキュメントを見ていきましょう
!
https://github.com/magicalpanda/MagicalRecord
MagicalRecordを使ったサンプルを
公開してますので参考にしてください
https://github.com/asakahara/ASHatenaBlogReader
今日のまとめ
• MagicalRecordを使うことで開発効率のアップ
• 簡単に使える分、Core Dataが裏で何をやってるかを
常に意識しながら開発するのがベスト
• 気になるところは実際にソースコードを見てみると
よい
面倒で決まりきった処理は
ライブラリにまかせて
自分たちが本当に作るべき物を
集中して開発できる環境にして
いきましょう!
• iOS Core Data 徹底入門
!
日本語のCore Dataに関する書籍
は少ないので貴重な一冊です
!
マルチスレッドで使用する際の情
報があればもっとよかった
Core Dataをよりよく
知るために
活動中のSNS、ブログなど
• はてなブログ:http://sakahara.hatenablog.jp/
• 個人サイト:http://www.mocology.com/ja/
• Twitter:@asakahara
• qiita:http://qiita.com/asakahara
ご清聴ありがとう
ございました!

More Related Content

What's hot

FluentdとAWSを使ったログの運用
FluentdとAWSを使ったログの運用FluentdとAWSを使ったログの運用
FluentdとAWSを使ったログの運用Keisuke Izumiya
 
クラスメソッド会社説明会 in 北海道札幌 at smokeymonkey #cmdevio
クラスメソッド会社説明会 in 北海道札幌 at smokeymonkey #cmdevioクラスメソッド会社説明会 in 北海道札幌 at smokeymonkey #cmdevio
クラスメソッド会社説明会 in 北海道札幌 at smokeymonkey #cmdeviosmokey monkey
 
Railsらしい 1対多の画面作成
Railsらしい 1対多の画面作成Railsらしい 1対多の画面作成
Railsらしい 1対多の画面作成Yamamoto Kazuhisa
 
入社1年目のプログラミング初心者がSpringを学ぶための手引き
入社1年目のプログラミング初心者がSpringを学ぶための手引き入社1年目のプログラミング初心者がSpringを学ぶための手引き
入社1年目のプログラミング初心者がSpringを学ぶための手引き土岐 孝平
 
クラスメソッド会社説明会in札幌 — メンバー紹介 #cmdevio
クラスメソッド会社説明会in札幌 — メンバー紹介   #cmdevioクラスメソッド会社説明会in札幌 — メンバー紹介   #cmdevio
クラスメソッド会社説明会in札幌 — メンバー紹介 #cmdevioShuji Watanabe
 
C#でこなすexcel課題
C#でこなすexcel課題C#でこなすexcel課題
C#でこなすexcel課題tosaka 2
 
DeNA×マネーフォワード×Wantedly Railsエンジニアセミナー
DeNA×マネーフォワード×Wantedly RailsエンジニアセミナーDeNA×マネーフォワード×Wantedly Railsエンジニアセミナー
DeNA×マネーフォワード×Wantedly RailsエンジニアセミナーNao Minami
 
いまいまMySQL@OSC2016長岡
いまいまMySQL@OSC2016長岡いまいまMySQL@OSC2016長岡
いまいまMySQL@OSC2016長岡sakaik
 
mod_perlで動くアプリをどう置くか #hachiojipm
mod_perlで動くアプリをどう置くか #hachiojipmmod_perlで動くアプリをどう置くか #hachiojipm
mod_perlで動くアプリをどう置くか #hachiojipm鉄次 尾形
 
JRubyで作るapiサーバー
JRubyで作るapiサーバーJRubyで作るapiサーバー
JRubyで作るapiサーバーYamamoto Kazuhisa
 
Sassでちょっと楽しよう
Sassでちょっと楽しようSassでちょっと楽しよう
Sassでちょっと楽しようMakoto Henmi
 
設定ファイルに使われそうなデータ形式
設定ファイルに使われそうなデータ形式設定ファイルに使われそうなデータ形式
設定ファイルに使われそうなデータ形式鉄次 尾形
 
「さくらのクラウド」を使って10分でできるDocker (オープンソースカンファレンス2016 Gunma)
「さくらのクラウド」を使って10分でできるDocker (オープンソースカンファレンス2016 Gunma)「さくらのクラウド」を使って10分でできるDocker (オープンソースカンファレンス2016 Gunma)
「さくらのクラウド」を使って10分でできるDocker (オープンソースカンファレンス2016 Gunma)さくらインターネット株式会社
 
PWAをWebサービスに導入した話
PWAをWebサービスに導入した話PWAをWebサービスに導入した話
PWAをWebサービスに導入した話dobby618
 
Word Fes 2015 ライトニングトーク「WordPress+Yii2で簡単データパネル」
Word Fes 2015 ライトニングトーク「WordPress+Yii2で簡単データパネル」Word Fes 2015 ライトニングトーク「WordPress+Yii2で簡単データパネル」
Word Fes 2015 ライトニングトーク「WordPress+Yii2で簡単データパネル」清徳 伊藤
 
VBAを書きたくない話(Excel-DNAの紹介)
VBAを書きたくない話(Excel-DNAの紹介)VBAを書きたくない話(Excel-DNAの紹介)
VBAを書きたくない話(Excel-DNAの紹介)bleis tift
 
RailsでKnockout.js
RailsでKnockout.jsRailsでKnockout.js
RailsでKnockout.jsMakoto Henmi
 

What's hot (20)

FluentdとAWSを使ったログの運用
FluentdとAWSを使ったログの運用FluentdとAWSを使ったログの運用
FluentdとAWSを使ったログの運用
 
すこやかRails
すこやかRailsすこやかRails
すこやかRails
 
クラスメソッド会社説明会 in 北海道札幌 at smokeymonkey #cmdevio
クラスメソッド会社説明会 in 北海道札幌 at smokeymonkey #cmdevioクラスメソッド会社説明会 in 北海道札幌 at smokeymonkey #cmdevio
クラスメソッド会社説明会 in 北海道札幌 at smokeymonkey #cmdevio
 
さくらのクラウドサービス概要資料2016年8月版
さくらのクラウドサービス概要資料2016年8月版さくらのクラウドサービス概要資料2016年8月版
さくらのクラウドサービス概要資料2016年8月版
 
Railsらしい 1対多の画面作成
Railsらしい 1対多の画面作成Railsらしい 1対多の画面作成
Railsらしい 1対多の画面作成
 
入社1年目のプログラミング初心者がSpringを学ぶための手引き
入社1年目のプログラミング初心者がSpringを学ぶための手引き入社1年目のプログラミング初心者がSpringを学ぶための手引き
入社1年目のプログラミング初心者がSpringを学ぶための手引き
 
さくらのクラウドアップデート情報2016年7月版
さくらのクラウドアップデート情報2016年7月版さくらのクラウドアップデート情報2016年7月版
さくらのクラウドアップデート情報2016年7月版
 
クラスメソッド会社説明会in札幌 — メンバー紹介 #cmdevio
クラスメソッド会社説明会in札幌 — メンバー紹介   #cmdevioクラスメソッド会社説明会in札幌 — メンバー紹介   #cmdevio
クラスメソッド会社説明会in札幌 — メンバー紹介 #cmdevio
 
C#でこなすexcel課題
C#でこなすexcel課題C#でこなすexcel課題
C#でこなすexcel課題
 
DeNA×マネーフォワード×Wantedly Railsエンジニアセミナー
DeNA×マネーフォワード×Wantedly RailsエンジニアセミナーDeNA×マネーフォワード×Wantedly Railsエンジニアセミナー
DeNA×マネーフォワード×Wantedly Railsエンジニアセミナー
 
いまいまMySQL@OSC2016長岡
いまいまMySQL@OSC2016長岡いまいまMySQL@OSC2016長岡
いまいまMySQL@OSC2016長岡
 
mod_perlで動くアプリをどう置くか #hachiojipm
mod_perlで動くアプリをどう置くか #hachiojipmmod_perlで動くアプリをどう置くか #hachiojipm
mod_perlで動くアプリをどう置くか #hachiojipm
 
JRubyで作るapiサーバー
JRubyで作るapiサーバーJRubyで作るapiサーバー
JRubyで作るapiサーバー
 
Sassでちょっと楽しよう
Sassでちょっと楽しようSassでちょっと楽しよう
Sassでちょっと楽しよう
 
設定ファイルに使われそうなデータ形式
設定ファイルに使われそうなデータ形式設定ファイルに使われそうなデータ形式
設定ファイルに使われそうなデータ形式
 
「さくらのクラウド」を使って10分でできるDocker (オープンソースカンファレンス2016 Gunma)
「さくらのクラウド」を使って10分でできるDocker (オープンソースカンファレンス2016 Gunma)「さくらのクラウド」を使って10分でできるDocker (オープンソースカンファレンス2016 Gunma)
「さくらのクラウド」を使って10分でできるDocker (オープンソースカンファレンス2016 Gunma)
 
PWAをWebサービスに導入した話
PWAをWebサービスに導入した話PWAをWebサービスに導入した話
PWAをWebサービスに導入した話
 
Word Fes 2015 ライトニングトーク「WordPress+Yii2で簡単データパネル」
Word Fes 2015 ライトニングトーク「WordPress+Yii2で簡単データパネル」Word Fes 2015 ライトニングトーク「WordPress+Yii2で簡単データパネル」
Word Fes 2015 ライトニングトーク「WordPress+Yii2で簡単データパネル」
 
VBAを書きたくない話(Excel-DNAの紹介)
VBAを書きたくない話(Excel-DNAの紹介)VBAを書きたくない話(Excel-DNAの紹介)
VBAを書きたくない話(Excel-DNAの紹介)
 
RailsでKnockout.js
RailsでKnockout.jsRailsでKnockout.js
RailsでKnockout.js
 

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

とある Perl Monger の働き方
とある Perl Monger の働き方とある Perl Monger の働き方
とある Perl Monger の働き方Yusuke Wada
 
あと一つプログラミング言語を
覚えたら死ぬ! 脳みそがパンクしそうな
あなたのための
nodeJSことはじめ
あと一つプログラミング言語を
覚えたら死ぬ! 脳みそがパンクしそうな
あなたのための
nodeJSことはじめあと一つプログラミング言語を
覚えたら死ぬ! 脳みそがパンクしそうな
あなたのための
nodeJSことはじめ
あと一つプログラミング言語を
覚えたら死ぬ! 脳みそがパンクしそうな
あなたのための
nodeJSことはじめ文樹 高橋
 
YAPC::Hokkaido 2016 「普段使い言語環境」更新によるスキルリセットサバイバルガイド
YAPC::Hokkaido 2016 「普段使い言語環境」更新によるスキルリセットサバイバルガイドYAPC::Hokkaido 2016 「普段使い言語環境」更新によるスキルリセットサバイバルガイド
YAPC::Hokkaido 2016 「普段使い言語環境」更新によるスキルリセットサバイバルガイドkeroyonn
 
Spring Boot Introduction
Spring Boot IntroductionSpring Boot Introduction
Spring Boot Introductionchibochibo
 
20120830 DBリファクタリング読書会第三回
20120830 DBリファクタリング読書会第三回20120830 DBリファクタリング読書会第三回
20120830 DBリファクタリング読書会第三回都元ダイスケ Miyamoto
 
MF GeeksNight pplogの話
MF GeeksNight pplogの話MF GeeksNight pplogの話
MF GeeksNight pplogの話Naoto Koshikawa
 
.NET CoreでのWindowsサービスの作り方と、Coreならではの便利な機能
.NET CoreでのWindowsサービスの作り方と、Coreならではの便利な機能.NET CoreでのWindowsサービスの作り方と、Coreならではの便利な機能
.NET CoreでのWindowsサービスの作り方と、Coreならではの便利な機能Study Group by SciencePark Corp.
 
軽量フレームワークNancy
軽量フレームワークNancy軽量フレームワークNancy
軽量フレームワークNancyNarami Kiyokura
 
Jaws festa-2014-cdp-03
Jaws festa-2014-cdp-03Jaws festa-2014-cdp-03
Jaws festa-2014-cdp-03宗 大栗
 
Slack Appsでやれる事を確認した。年内日本語化されるんで、急ぎで!
Slack Appsでやれる事を確認した。年内日本語化されるんで、急ぎで!Slack Appsでやれる事を確認した。年内日本語化されるんで、急ぎで!
Slack Appsでやれる事を確認した。年内日本語化されるんで、急ぎで!Yasuyuki Ogawa
 
レガシーシステムのDBマイグレーションし始めた話
レガシーシステムのDBマイグレーションし始めた話レガシーシステムのDBマイグレーションし始めた話
レガシーシステムのDBマイグレーションし始めた話nekogeruge_987
 
WooCommerce 勉強会 - 20161022
WooCommerce 勉強会 - 20161022WooCommerce 勉強会 - 20161022
WooCommerce 勉強会 - 20161022Kei Tamura
 
アプリ制作マスターへの道
アプリ制作マスターへの道アプリ制作マスターへの道
アプリ制作マスターへの道Masayuki KaToH
 
ios+Android最近気付いいたこと
ios+Android最近気付いいたことios+Android最近気付いいたこと
ios+Android最近気付いいたことHiratsuka Shunsuke
 
社内勉強会で読んだ本とか
社内勉強会で読んだ本とか社内勉強会で読んだ本とか
社内勉強会で読んだ本とかShinsuke Kuroki
 
ガチリアルな修羅チーム開発
ガチリアルな修羅チーム開発ガチリアルな修羅チーム開発
ガチリアルな修羅チーム開発Atsushi Kojima
 
最近挑戦していること at MF Geeks Night 2015.03.19
最近挑戦していること at MF Geeks Night 2015.03.19最近挑戦していること at MF Geeks Night 2015.03.19
最近挑戦していること at MF Geeks Night 2015.03.19Naoto Koshikawa
 

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

とある Perl Monger の働き方
とある Perl Monger の働き方とある Perl Monger の働き方
とある Perl Monger の働き方
 
あと一つプログラミング言語を
覚えたら死ぬ! 脳みそがパンクしそうな
あなたのための
nodeJSことはじめ
あと一つプログラミング言語を
覚えたら死ぬ! 脳みそがパンクしそうな
あなたのための
nodeJSことはじめあと一つプログラミング言語を
覚えたら死ぬ! 脳みそがパンクしそうな
あなたのための
nodeJSことはじめ
あと一つプログラミング言語を
覚えたら死ぬ! 脳みそがパンクしそうな
あなたのための
nodeJSことはじめ
 
YAPC::Hokkaido 2016 「普段使い言語環境」更新によるスキルリセットサバイバルガイド
YAPC::Hokkaido 2016 「普段使い言語環境」更新によるスキルリセットサバイバルガイドYAPC::Hokkaido 2016 「普段使い言語環境」更新によるスキルリセットサバイバルガイド
YAPC::Hokkaido 2016 「普段使い言語環境」更新によるスキルリセットサバイバルガイド
 
Spring Boot Introduction
Spring Boot IntroductionSpring Boot Introduction
Spring Boot Introduction
 
20120830 DBリファクタリング読書会第三回
20120830 DBリファクタリング読書会第三回20120830 DBリファクタリング読書会第三回
20120830 DBリファクタリング読書会第三回
 
MF GeeksNight pplogの話
MF GeeksNight pplogの話MF GeeksNight pplogの話
MF GeeksNight pplogの話
 
Vi Boot Camp #1
Vi Boot Camp #1Vi Boot Camp #1
Vi Boot Camp #1
 
cochica
cochicacochica
cochica
 
.NET CoreでのWindowsサービスの作り方と、Coreならではの便利な機能
.NET CoreでのWindowsサービスの作り方と、Coreならではの便利な機能.NET CoreでのWindowsサービスの作り方と、Coreならではの便利な機能
.NET CoreでのWindowsサービスの作り方と、Coreならではの便利な機能
 
軽量フレームワークNancy
軽量フレームワークNancy軽量フレームワークNancy
軽量フレームワークNancy
 
Jaws festa-2014-cdp-03
Jaws festa-2014-cdp-03Jaws festa-2014-cdp-03
Jaws festa-2014-cdp-03
 
Slack Appsでやれる事を確認した。年内日本語化されるんで、急ぎで!
Slack Appsでやれる事を確認した。年内日本語化されるんで、急ぎで!Slack Appsでやれる事を確認した。年内日本語化されるんで、急ぎで!
Slack Appsでやれる事を確認した。年内日本語化されるんで、急ぎで!
 
レガシーシステムのDBマイグレーションし始めた話
レガシーシステムのDBマイグレーションし始めた話レガシーシステムのDBマイグレーションし始めた話
レガシーシステムのDBマイグレーションし始めた話
 
WooCommerce 勉強会 - 20161022
WooCommerce 勉強会 - 20161022WooCommerce 勉強会 - 20161022
WooCommerce 勉強会 - 20161022
 
アプリ制作マスターへの道
アプリ制作マスターへの道アプリ制作マスターへの道
アプリ制作マスターへの道
 
ios+Android最近気付いいたこと
ios+Android最近気付いいたことios+Android最近気付いいたこと
ios+Android最近気付いいたこと
 
社内勉強会で読んだ本とか
社内勉強会で読んだ本とか社内勉強会で読んだ本とか
社内勉強会で読んだ本とか
 
ガチリアルな修羅チーム開発
ガチリアルな修羅チーム開発ガチリアルな修羅チーム開発
ガチリアルな修羅チーム開発
 
Swift afterbeginner
Swift afterbeginnerSwift afterbeginner
Swift afterbeginner
 
最近挑戦していること at MF Geeks Night 2015.03.19
最近挑戦していること at MF Geeks Night 2015.03.19最近挑戦していること at MF Geeks Night 2015.03.19
最近挑戦していること at MF Geeks Night 2015.03.19
 

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