SlideShare uma empresa Scribd logo
1 de 13
Baixar para ler offline
Realm超入門
2015.2.28 Cocoa勉強会関西 #60
@itok_twit
参加できなかったので
資料だけでも
自己紹介
• いとうけい(itok)
• 公私共にプログラマ iOS / Mac(たまに Android)
• Objective-C歴10年以上、Swift歴1ヶ月ほど
• http://itok.jp/
Realm超入門
Realmとは
• SQLiteやCore Dataの置き換えとして作られたモ
バイルプラットフォーム用のデータベース
• iOS / Mac / Android対応
• Apache Licence 2.0だがDBのコア部分はクロー
ズド(公開を検討中)
• 詳しくは→ http://realm.io/
特徴
• 記述が簡単:クラスを定義→データベースの構造
• クエリが速い
• 省メモリ
できること
• 数値、文字列、日付、バイナリなど一通りの型に対応
• NSPredicate を使う
• メモリ上に一時的なDBも作れる
• スレッドセーフ!
• JSONからの直接マッピング
できないこと
• カスケードルールがない
• プロパティを限定してのクエリ発行がない
• ObjectID的なものはない
• KVO(Notificationを使ってね、とのこと)
• 今後に期待
導入方法
• CocoaPodsに対応
• Carthageにも対応
• frameworkとしても配布中
DEMO
サンプル
今村 はじめ,imamura_hajime@example.com,男,44,神奈川県,14
藤島 恵美,fujishima_megumi@example.com,女,27, 城県,08
海野 淳子,umino_atsuko@example.com,女,32,熊本県,43
榎本 彩華,enomoto_ayaka@example.com,女,27,滋賀県,25
・・・
Core Dataの場合
lazy var managedObjectModel: NSManagedObjectModel = {
let modelURL = NSBundle.mainBundle().URLForResource("RealmTest", withExtension: "momd")!
return NSManagedObjectModel(contentsOfURL: modelURL)!
}()
lazy var persistentStoreCoordinator: NSPersistentStoreCoordinator? = {
var coordinator: NSPersistentStoreCoordinator? =
NSPersistentStoreCoordinator(managedObjectModel: self.managedObjectModel)
let url = self.applicationDocumentsDirectory.URLByAppendingPathComponent("RealmTest.sqlite")
var error: NSError? = nil
var failureReason = "There was an error creating or loading the application's saved data."
if coordinator!.addPersistentStoreWithType(NSSQLiteStoreType, configuration: nil, URL: url,
options: nil, error: &error) == nil {
coordinator = nil
// Report any error we got.
let dict = NSMutableDictionary()
dict[NSLocalizedDescriptionKey] = "Failed to initialize the application's saved data"
dict[NSLocalizedFailureReasonErrorKey] = failureReason
dict[NSUnderlyingErrorKey] = error
error = NSError(domain: "YOUR_ERROR_DOMAIN", code: 9999, userInfo: dict)
NSLog("Unresolved error (error), (error!.userInfo)")
abort()
}
return coordinator
}()
lazy var managedObjectContext: NSManagedObjectContext? = {
let coordinator = self.persistentStoreCoordinator
if coordinator == nil {
return nil
}
var managedObjectContext = NSManagedObjectContext()
managedObjectContext.persistentStoreCoordinator = coordinator
return managedObjectContext
}()
import Foundation
import CoreData
class CDPerson: NSManagedObject {
@NSManaged var name: String
@NSManaged var email: String
@NSManaged var sex: String
@NSManaged var age: NSNumber
@NSManaged var data: NSData
@NSManaged var prefecture: CDPrefecture
}
データモデル定義
クラス作成 モデル読み込み
Realmの場合
class RLPerson: RLMObject {
dynamic var name = ""
dynamic var email = ""
dynamic var sex = ""
dynamic var age = 0
dynamic var data : NSData?
dynamic var prefecture : RLPrefecture?
}
クラス定義のみ!
let ret = RLPerson.objectsWhere("age > %d", 40).sortedResultsUsingProperty("age", ascending: true)
すぐに使える!
まとめ
• Realmいいよ
• 小規模なデータベースならどんどん使っていこう!
• 公式日本語ドキュメントあります→ http://
realm.io/jp/docs/cocoa/0.90.5/
• 先日Realm Tech Talkが開催されました→ http://
togetter.com/li/787628

Mais conteúdo relacionado

Semelhante a 20150228 Realm超入門

2015-12-16 某S社、出直しDDDってるってよ
2015-12-16 某S社、出直しDDDってるってよ2015-12-16 某S社、出直しDDDってるってよ
2015-12-16 某S社、出直しDDDってるってよkumake
 
Web socket and gRPC
Web socket and gRPCWeb socket and gRPC
Web socket and gRPCTIS Inc
 
The seminar of asp.net at 201908 sakurug
The seminar of asp.net at 201908 sakurugThe seminar of asp.net at 201908 sakurug
The seminar of asp.net at 201908 sakurugSAKURUG co.
 
PlaySQLAlchemyORM2017.key
PlaySQLAlchemyORM2017.keyPlaySQLAlchemyORM2017.key
PlaySQLAlchemyORM2017.key泰 増田
 
[20190530]yahoo japan+kubernetes meetup "Rook v1.0で試すCSI"
[20190530]yahoo japan+kubernetes meetup "Rook v1.0で試すCSI"[20190530]yahoo japan+kubernetes meetup "Rook v1.0で試すCSI"
[20190530]yahoo japan+kubernetes meetup "Rook v1.0で試すCSI"t8kobayashi
 
(続) Effective SQLite for Android
(続) Effective SQLite for Android(続) Effective SQLite for Android
(続) Effective SQLite for AndroidShinobu Okano
 
20160416 Azure Data Lakeのはまりどころ
20160416 Azure Data Lakeのはまりどころ20160416 Azure Data Lakeのはまりどころ
20160416 Azure Data Lakeのはまりどころ一希 大田
 
LambdaとMobileの美味しいかもしれない関係
LambdaとMobileの美味しいかもしれない関係LambdaとMobileの美味しいかもしれない関係
LambdaとMobileの美味しいかもしれない関係Hiraku Komuro
 
IaC化の3つのポイント
IaC化の3つのポイントIaC化の3つのポイント
IaC化の3つのポイント山下 達也
 
ココが違うよEC2 ~オンプレミスVMとの徹底⽐比較~
ココが違うよEC2 ~オンプレミスVMとの徹底⽐比較~ココが違うよEC2 ~オンプレミスVMとの徹底⽐比較~
ココが違うよEC2 ~オンプレミスVMとの徹底⽐比較~Ryuta Otaki
 
PythonによるWebスクレイピング入門
PythonによるWebスクレイピング入門PythonによるWebスクレイピング入門
PythonによるWebスクレイピング入門Hironori Sekine
 
あるインフラエンジニアの過去と未来
あるインフラエンジニアの過去と未来あるインフラエンジニアの過去と未来
あるインフラエンジニアの過去と未来Tsubasa Hirota
 
Oracleがnode.jsをやり始めたというのだが!
Oracleがnode.jsをやり始めたというのだが!Oracleがnode.jsをやり始めたというのだが!
Oracleがnode.jsをやり始めたというのだが!Hiroshi Hayakawa
 
msal.js v2を触る
msal.js v2を触るmsal.js v2を触る
msal.js v2を触るDevTakas
 
iOS開発でのおすすめライブラリと管理
iOS開発でのおすすめライブラリと管理iOS開発でのおすすめライブラリと管理
iOS開発でのおすすめライブラリと管理Tomoya Hayakawa
 
Objective-Cプログラマのためのswift導入法
Objective-Cプログラマのためのswift導入法Objective-Cプログラマのためのswift導入法
Objective-Cプログラマのためのswift導入法Tomoki Hasegawa
 
地方企業がソーシャルゲーム開発を成功させるための10のポイント
地方企業がソーシャルゲーム開発を成功させるための10のポイント地方企業がソーシャルゲーム開発を成功させるための10のポイント
地方企業がソーシャルゲーム開発を成功させるための10のポイントKentaro Matsui
 

Semelhante a 20150228 Realm超入門 (20)

2015-12-16 某S社、出直しDDDってるってよ
2015-12-16 某S社、出直しDDDってるってよ2015-12-16 某S社、出直しDDDってるってよ
2015-12-16 某S社、出直しDDDってるってよ
 
Web socket and gRPC
Web socket and gRPCWeb socket and gRPC
Web socket and gRPC
 
The seminar of asp.net at 201908 sakurug
The seminar of asp.net at 201908 sakurugThe seminar of asp.net at 201908 sakurug
The seminar of asp.net at 201908 sakurug
 
PlaySQLAlchemyORM2017.key
PlaySQLAlchemyORM2017.keyPlaySQLAlchemyORM2017.key
PlaySQLAlchemyORM2017.key
 
[20190530]yahoo japan+kubernetes meetup "Rook v1.0で試すCSI"
[20190530]yahoo japan+kubernetes meetup "Rook v1.0で試すCSI"[20190530]yahoo japan+kubernetes meetup "Rook v1.0で試すCSI"
[20190530]yahoo japan+kubernetes meetup "Rook v1.0で試すCSI"
 
(続) Effective SQLite for Android
(続) Effective SQLite for Android(続) Effective SQLite for Android
(続) Effective SQLite for Android
 
20160416 Azure Data Lakeのはまりどころ
20160416 Azure Data Lakeのはまりどころ20160416 Azure Data Lakeのはまりどころ
20160416 Azure Data Lakeのはまりどころ
 
LambdaとMobileの美味しいかもしれない関係
LambdaとMobileの美味しいかもしれない関係LambdaとMobileの美味しいかもしれない関係
LambdaとMobileの美味しいかもしれない関係
 
IaC化の3つのポイント
IaC化の3つのポイントIaC化の3つのポイント
IaC化の3つのポイント
 
ココが違うよEC2 ~オンプレミスVMとの徹底⽐比較~
ココが違うよEC2 ~オンプレミスVMとの徹底⽐比較~ココが違うよEC2 ~オンプレミスVMとの徹底⽐比較~
ココが違うよEC2 ~オンプレミスVMとの徹底⽐比較~
 
PythonによるWebスクレイピング入門
PythonによるWebスクレイピング入門PythonによるWebスクレイピング入門
PythonによるWebスクレイピング入門
 
あるインフラエンジニアの過去と未来
あるインフラエンジニアの過去と未来あるインフラエンジニアの過去と未来
あるインフラエンジニアの過去と未来
 
Oracleがnode.jsをやり始めたというのだが!
Oracleがnode.jsをやり始めたというのだが!Oracleがnode.jsをやり始めたというのだが!
Oracleがnode.jsをやり始めたというのだが!
 
msal.js v2を触る
msal.js v2を触るmsal.js v2を触る
msal.js v2を触る
 
Yesod(at FPM2012)
Yesod(at FPM2012)Yesod(at FPM2012)
Yesod(at FPM2012)
 
JavaScript 研修
JavaScript 研修JavaScript 研修
JavaScript 研修
 
iOS開発でのおすすめライブラリと管理
iOS開発でのおすすめライブラリと管理iOS開発でのおすすめライブラリと管理
iOS開発でのおすすめライブラリと管理
 
Objective-Cプログラマのためのswift導入法
Objective-Cプログラマのためのswift導入法Objective-Cプログラマのためのswift導入法
Objective-Cプログラマのためのswift導入法
 
地方企業がソーシャルゲーム開発を成功させるための10のポイント
地方企業がソーシャルゲーム開発を成功させるための10のポイント地方企業がソーシャルゲーム開発を成功させるための10のポイント
地方企業がソーシャルゲーム開発を成功させるための10のポイント
 
JSer Class #2
JSer Class #2JSer Class #2
JSer Class #2
 

Mais de Kei Ito

20151130 Apple Pencilを使う
20151130 Apple Pencilを使う20151130 Apple Pencilを使う
20151130 Apple Pencilを使うKei Ito
 
20151028 アプリの権利を委譲する
20151028 アプリの権利を委譲する20151028 アプリの権利を委譲する
20151028 アプリの権利を委譲するKei Ito
 
20150930 3D Touchを試す
20150930 3D Touchを試す20150930 3D Touchを試す
20150930 3D Touchを試すKei Ito
 
20150826 RealmとHimotoki
20150826 RealmとHimotoki20150826 RealmとHimotoki
20150826 RealmとHimotokiKei Ito
 
Cocoa勉強会関西 #54 Crash Report解析サービスを試してみた
Cocoa勉強会関西 #54 Crash Report解析サービスを試してみたCocoa勉強会関西 #54 Crash Report解析サービスを試してみた
Cocoa勉強会関西 #54 Crash Report解析サービスを試してみたKei Ito
 
Cocoa勉強会関西 #42 iOS5の小ネタ集
Cocoa勉強会関西 #42 iOS5の小ネタ集Cocoa勉強会関西 #42 iOS5の小ネタ集
Cocoa勉強会関西 #42 iOS5の小ネタ集Kei Ito
 
AssetsLibraryについて (iOS5対応版)
AssetsLibraryについて (iOS5対応版)AssetsLibraryについて (iOS5対応版)
AssetsLibraryについて (iOS5対応版)Kei Ito
 
Cocoa勉強会関西#39 AssetsLibraryについて
Cocoa勉強会関西#39 AssetsLibraryについてCocoa勉強会関西#39 AssetsLibraryについて
Cocoa勉強会関西#39 AssetsLibraryについてKei Ito
 

Mais de Kei Ito (8)

20151130 Apple Pencilを使う
20151130 Apple Pencilを使う20151130 Apple Pencilを使う
20151130 Apple Pencilを使う
 
20151028 アプリの権利を委譲する
20151028 アプリの権利を委譲する20151028 アプリの権利を委譲する
20151028 アプリの権利を委譲する
 
20150930 3D Touchを試す
20150930 3D Touchを試す20150930 3D Touchを試す
20150930 3D Touchを試す
 
20150826 RealmとHimotoki
20150826 RealmとHimotoki20150826 RealmとHimotoki
20150826 RealmとHimotoki
 
Cocoa勉強会関西 #54 Crash Report解析サービスを試してみた
Cocoa勉強会関西 #54 Crash Report解析サービスを試してみたCocoa勉強会関西 #54 Crash Report解析サービスを試してみた
Cocoa勉強会関西 #54 Crash Report解析サービスを試してみた
 
Cocoa勉強会関西 #42 iOS5の小ネタ集
Cocoa勉強会関西 #42 iOS5の小ネタ集Cocoa勉強会関西 #42 iOS5の小ネタ集
Cocoa勉強会関西 #42 iOS5の小ネタ集
 
AssetsLibraryについて (iOS5対応版)
AssetsLibraryについて (iOS5対応版)AssetsLibraryについて (iOS5対応版)
AssetsLibraryについて (iOS5対応版)
 
Cocoa勉強会関西#39 AssetsLibraryについて
Cocoa勉強会関西#39 AssetsLibraryについてCocoa勉強会関西#39 AssetsLibraryについて
Cocoa勉強会関西#39 AssetsLibraryについて
 

20150228 Realm超入門