Slide 1

Slide 1 text

3FBMN+BQBO.FFUVQ

Slide 2

Slide 2 text

SFBMN@KQ

Slide 3

Slide 3 text

IUUQTHJUIVCDPNLJTIJLBXBLBUTVNJ LJTIJLBXBLBUTVNJ IUUQLJTIJLBXBLBUTVNJIBUFOBCMPHDPN Realm

Slide 4

Slide 4 text

3FDFOU6QEBUFT

Slide 5

Slide 5 text

Realm ReactNative 0.10.0 on 2016.2.21

Slide 6

Slide 6 text

No content

Slide 7

Slide 7 text

No content

Slide 8

Slide 8 text

const Realm = require('realm'); class AwesomeProject extends Component { render() { class Person {} Dog.schema = { name: 'Dog', primaryKey: 'name', properties: { name: 'string', age: {type: 'int', default: 0}, }, }; const realm = new Realm({schema: [Dog]}); realm.write(() => { realm.create('Dog', { name: 'Hal Incandenza', age: 17 }); }); return ( Count of Dogs in Realm: {realm.objects('Dog').length} ); } }

Slide 9

Slide 9 text

const Realm = require('realm'); class AwesomeProject extends Component { render() { class Person {} Dog.schema = { name: 'Dog', primaryKey: 'name', properties: { name: 'string', age: {type: 'int', default: 0}, }, }; const realm = new Realm({schema: [Dog]}); realm.write(() => { realm.create('Dog', { name: 'Hal Incandenza', age: 17 }); }); return ( Count of Dogs in Realm: {realm.objects('Dog').length} ); } }

Slide 10

Slide 10 text

const Realm = require('realm'); class AwesomeProject extends Component { render() { class Person {} Dog.schema = { name: 'Dog', primaryKey: 'name', properties: { name: 'string', age: {type: 'int', default: 0}, }, }; const realm = new Realm({schema: [Dog]}); realm.write(() => { realm.create('Dog', { name: 'Hal Incandenza', age: 17 }); }); return ( Count of Dogs in Realm: {realm.objects('Dog').length} ); } }

Slide 11

Slide 11 text

const Realm = require('realm'); class AwesomeProject extends Component { render() { class Person {} Dog.schema = { name: 'Dog', primaryKey: 'name', properties: { name: 'string', age: {type: 'int', default: 0}, }, }; const realm = new Realm({schema: [Dog]}); realm.write(() => { realm.create('Dog', { name: 'Hal Incandenza', age: 17 }); }); return ( Count of Dogs in Realm: {realm.objects('Dog').length} ); } }

Slide 12

Slide 12 text

const Realm = require('realm'); class AwesomeProject extends Component { render() { class Person {} Dog.schema = { name: 'Dog', primaryKey: 'name', properties: { name: 'string', age: {type: 'int', default: 0}, }, }; const realm = new Realm({schema: [Dog]}); realm.write(() => { realm.create('Dog', { name: 'Hal Incandenza', age: 17 }); }); return ( Count of Dogs in Realm: {realm.objects('Dog').length} ); } }

Slide 13

Slide 13 text

const Realm = require('realm'); class AwesomeProject extends Component { render() { class Person {} Dog.schema = { name: 'Dog', primaryKey: 'name', properties: { name: 'string', age: {type: 'int', default: 0}, }, }; const realm = new Realm({schema: [Dog]}); realm.write(() => { realm.create('Dog', { name: 'Hal Incandenza', age: 17 }); }); return ( Count of Dogs in Realm: {realm.objects('Dog').length} ); } }

Slide 14

Slide 14 text

3FBMN0CKFDUJWF$4XJGU XBT

Slide 15

Slide 15 text

Realm Objective-C/Swift 0.98.4 ˖ غؚؿ؍حؙأ

Slide 16

Slide 16 text

غحؙؚٓؐٝس٥ؙؒٔ

Slide 17

Slide 17 text

غحؙؚٓؐٝس٥ؙؒٔ ͑鸐濼ך珏겲ָ㟓ִ׋

Slide 18

Slide 18 text

⟃⵸ך3FBMNח㼎ׅ׷鸐濼 notificationToken = realm.addNotificationBlock { (notification, realm) in ... }

Slide 19

Slide 19 text

3FTVMUT5ח㼎ׅ׷鸐濼 timeline = realm.objects(Tweet) .sorted("createdAt", ascending: false) notificationToken = timeline?.addNotificationBlock { (results, error) -> () in if let _ = error { return } count = results.count self.tableView.reloadData() } return count

Slide 20

Slide 20 text

timeline = realm.objects(User) notificationToken = timeline?.addNotificationBlock { (results, error) -> () in if let _ = error { return } self.tableView.reloadData() } 3FTVMUT5ח㼎ׅ׷鸐濼

Slide 21

Slide 21 text

؟ـؙؒٔ

Slide 22

Slide 22 text

1SPKFDU 5PEP 6TFS 5PEP 5PEP 1SPKFDU 5PEP 6TFS 5PEP 5PEP

Slide 23

Slide 23 text

class Project: Object { dynamic var id = "" dynamic var name = "" let todos = List() override class func primaryKey() -> String? { return "id" } } class Todo: Object { dynamic var name = "" dynamic var completionDate: NSDate? dynamic var user: User? } class User: Object { dynamic var name = "" }

Slide 24

Slide 24 text

class Project: Object { dynamic var id = "" dynamic var name = "" let todos = List() override class func primaryKey() -> String? { return "id" } } class Todo: Object { dynamic var name = "" dynamic var completionDate: NSDate? dynamic var user: User? } class User: Object { dynamic var name = "" }

Slide 25

Slide 25 text

class Project: Object { dynamic var id = "" dynamic var name = "" let todos = List() override class func primaryKey() -> String? { return "id" } } class Todo: Object { dynamic var name = "" dynamic var completionDate: NSDate? dynamic var user: User? } class User: Object { dynamic var name = "" }

Slide 26

Slide 26 text

1SPKFDU" 1SPKFDU# 1SPKFDU$ 1SPKFDU% 5PEP ,BUTVNJ 5PEP ,BUTVNJ 5PEP .BLPUP 5PEP ,BUTVNJ 5PEP .BLPUP 5PEP ,BUTVNJ 5PEP ,BUTVNJ 5PEP .BLPUP 5PEP .BLPUP 5PEP .BLPUP 5PEP .BLPUP

Slide 27

Slide 27 text

1SPKFDU" 1SPKFDU# 1SPKFDU$ 1SPKFDU% 5PEP ,BUTVNJ 5PEP ,BUTVNJ 5PEP .BLPUP 5PEP ,BUTVNJ 5PEP .BLPUP 5PEP ,BUTVNJ 5PEP ,BUTVNJ 5PEP .BLPUP 5PEP .BLPUP 5PEP .BLPUP 5PEP .BLPUP

Slide 28

Slide 28 text

let projects = realm .objects(Project) .filter("ANY todos.completionDate == nil AND ANY todos.user.name == %@", "Katsumi") print(projects)

Slide 29

Slide 29 text

1SPKFDU" 1SPKFDU# 1SPKFDU$ 1SPKFDU% 5PEP ,BUTVNJ 5PEP ,BUTVNJ 5PEP .BLPUP 5PEP ,BUTVNJ 5PEP .BLPUP 5PEP ,BUTVNJ 5PEP ,BUTVNJ 5PEP .BLPUP 5PEP .BLPUP 5PEP .BLPUP 5PEP .BLPUP

Slide 30

Slide 30 text

let todos = realm .objects(Todo) .filter("completionDate == nil AND user.name == %@", "Katsumi") let projects = realm.objects(Project).filter("ANY todos IN %@", todos) print(projects)

Slide 31

Slide 31 text

"SUBQUERY(todos, $todo, $todo.completionDate = nil AND $todo.user.name = 'Katsumi').@count > 0"

Slide 32

Slide 32 text

؟ـؙؒٔך⢪ְוֿ׹ ˖ ؙٓأ"ָ㼎㢳ךꟼ鸬#׾䭯׏גְ׷ ˖ "׾#ךفٗػذ؍א⟃♳׾勴⟝חؿ؍ٕة׃׋ְ

Slide 33

Slide 33 text

؟ـؙؒٔךⵃ挿 ˖ "ה#ח㼎׃גָؙؒٔ㔐⟃♳䗳銲זהֿ׹ָ㔐ד幥׬ ˖ 3FTVMUTؔـآؙؑزך荈⹛刿倜ָ剣⸬

Slide 34

Slide 34 text

؟ـؙؒٔךⵖꣲ ˖ ؟ـؙؒٔח黝欽דֹ׷꧊鎘ꟼ侧כ!DPVOU׌ֽדׅկ ˖ 46#26&3:  !DPVOUה嫰鯰דֹ׷ךכ㹀侧׌ֽדׅկ

Slide 35

Slide 35 text

3FBMN0CKFDUJWF$4XJGU✮㹀 ˖ 'JOFHSBJOFE/PUJDBUJPO

Slide 36

Slide 36 text

8IFSFUPOEVT ˖ "3FBMN+BQBO6TFS(SPVQGBDFCPPLDPNHSPVQTSFBMNKQ ˖ "5XJUUFSUXJUUFSDPNSFBMN+BQBO ˖ (JU)VCHJUIVCDPNSFBMN ˖ "4UBDL0WFSPXKBTUBDLPWFSPXDPNRVFTUJPOTUBHHFESFBMN ˖ "&NBJMIFMQ!SFBMNJP ˖ "4MBDLTMBDLSFBMNJP

Slide 37

Slide 37 text

3FBMN+BQBO6TFS(SPVQ" GBDFCPPLDPNHSPVQTSFBMNKQ

Slide 38

Slide 38 text

1VCMJD3FBMN4MBDL" slack.realm.io/

Slide 39

Slide 39 text

0DJBM5XJUUFS'BDFCPPL UXJUUFSDPNSFBMN GBDFCPPLDPN

Slide 40

Slide 40 text

0DJBM8FCTJUF" realm.io/jp

Slide 41

Slide 41 text

IUUQCJUMZ3FBMN+1@ ،ٝ؛٦زח׀⼿⸂ֻ׌ְׁ