Slide 1

Slide 1 text

RealmͷॲཧΛ࠶ར༻Մೳ ͔ͭ߹੒Մೳʹ͢Δ @ukitaka

Slide 2

Slide 2 text

ಥવͰ͕͢Έͳ͞Μ

Slide 3

Slide 3 text

RealmͷॲཧΛ͢Δؔ਺Λ Ͳ͏ॻ͍͍ͯ·͔͢

Slide 4

Slide 4 text

ྫ͑͹͜͏

Slide 5

Slide 5 text

ྫ͑͹͜͏ RealmͷΠϯελϯε͸தͰੜ੒͢Δ

Slide 6

Slide 6 text

ྫ͑͹͜͏ τϥϯβΫγϣϯΛ࣮ߦ͢Δ

Slide 7

Slide 7 text

ྑͦ͞͏ʁ

Slide 8

Slide 8 text

͍͔ͭ͘໰୊͕͋Δ

Slide 9

Slide 9 text

Կ͕໰୊͔

Slide 10

Slide 10 text

Կ͕໰୊͔ ͦΕͧΕͰτϥϯβΫγϣϯ͕࣮ߦ͞Εͯ͠·͏

Slide 11

Slide 11 text

τϥϯβΫγϣϯ • ݺͼग़͠ͷͨͼʹɺॲཧ͕࣮ߦ͞Εͯ͠·͏ ͷͰɺ1ͭͷτϥϯβΫγϣϯʹ·ͱΊΒΕͳ ͍ɻॲཧΛAtomicʹͰ͖ͳ͍ɻ • ॲཧͷهड़ͱ࣮ࡍͷ࣮ߦ͕෼཭Ͱ͖͍ͯͳ͍ɻ

Slide 12

Slide 12 text

τϥϯβΫγϣϯ • RealmʹݶΒͣɺҰൠతʹτϥϯβΫγϣϯͷ ։࢝͸ॏ͍ॲཧ • ຖճੜ੒͢Δͷͱ1ͭͷτϥϯβΫγϣϯʹ· ͱΊΔͷͰ(खݩͰܭଌͨ͠ͱ͜Ζ)10ഒҧ͏

Slide 13

Slide 13 text

ͭ·Γɺ͜ͷ··Ͱ͸

Slide 14

Slide 14 text

࠶ར༻͠ʹ͍͘ʂ

Slide 15

Slide 15 text

No content

Slide 16

Slide 16 text

Ͳ͏͢Δʁ

Slide 17

Slide 17 text

ෳ਺༻ͷؔ਺Λผʹ࡞Δʁ

Slide 18

Slide 18 text

͡Ό͋͜Ε͸…ʁ

Slide 19

Slide 19 text

͜Μͳؔ਺Λຖճ࡞Δͷʁ

Slide 20

Slide 20 text

߹੒Ͱ͖ΔΑ͏ʹ͍ͨ͠ʂ

Slide 21

Slide 21 text

No content

Slide 22

Slide 22 text

τϥϯβΫγϣϯͷ։࢝Λ ࢖͏ଆͰ΍ΒͤͯΈΔ

Slide 23

Slide 23 text

No content

Slide 24

Slide 24 text

No content

Slide 25

Slide 25 text

࠶ར༻ͨ͠Γɺ ૊Έ߹ΘͤͨΓ

Slide 26

Slide 26 text

1ͭͷτϥϯβΫγϣϯΛ ૊ΈཱͯΔ͜ͱ͕Ͱ͖ΔΑ͏ ʹ͸ͳͬͨʂ

Slide 27

Slide 27 text

࣮ࡍDDDຊͳͲʹ͸ͦ͏͠Ζͱ ॻ͍ͯ͋Δ ʮΤϦοΫɾΤϰΝϯεͷυϝΠϯۦಈઃܭʯ ΑΓ

Slide 28

Slide 28 text

ྑͦ͞͏ʁ

Slide 29

Slide 29 text

͍͔ͭ͘໰୊͕͋Δ

Slide 30

Slide 30 text

Կ͕໰୊͔ • τϥϯβΫγϣϯͷ੍ޚͷ੹೚͸ݺͼग़͠ଆ ʹ͋Δ͕ɺͦͷ͜ͱΛڧ੍Ͱ͖ͳ͍ɻͭ·Γ ։࢝͠๨ΕͳͲΛίϯύΠϧ࣌ʹݕग़Ͱ͖ͳ ͍ɻ • γάωνϟΈ͚ͨͩͰ͸τϥϯβΫγϣϯͷ ։͕࢝ඞཁͳͷ͔Ͳ͏͔Θ͔Βͳ͍ɻ

Slide 31

Slide 31 text

Կ͕໰୊͔ τϥϯβΫγϣϯΛ։࢝͢΂͖ʁ ࣮͸Կ͔ॻ͖ࠐΜͰ͍ͨΓ͠ͳ͍ʁ (ಡΈࠐΈΛͯ͠ɺͳ͚Ε͹৽ن࡞੒ͱ͔)

Slide 32

Slide 32 text

No content

Slide 33

Slide 33 text

Կ͕໰୊͔ • ຖճҾ਺Ͱ౉͢ͷͪΐͬͱΊΜͲ͍͘͞ • σϑΥϧτઃఆͷRealmΛ࢖͏ͱ͍͏҉໧ͷ ྃղ͕͋Ε͹౉ͣ͞ʹதͰੜ੒ͯ͠΋ྑ͍ ͕…

Slide 34

Slide 34 text

No content

Slide 35

Slide 35 text

੔ཧ: Ͳ͏ͳ͍ͬͯΕ͹ཧ૝͔ • ॲཧͷ಺༰Λఆٛͭͭ͠ɺͦΕͧΕΛ߹੒Ͱ͖Δ Α͏ʹ͍ͨ͠ɻͭ·ΓτϥϯβΫγϣϯΛ૊Έཱ ͯΔλΠϛϯάͱ࣮ߦͷλΠϛϯάΛ෼͚͍ͨɻ • τϥϯβΫγϣϯͷ։͕࢝ඞཁͰ͋Δ͜ͱΛ໌ࣔ తɺ੩తʹදݱ͍ͨ͠ɻ • Ͱ͖Ε͹࢖͍׳ΕͨI/FͰɺ؆ܿʹॻ͖͍ͨ

Slide 36

Slide 36 text

੔ཧ: Ͳ͏ͳ͍ͬͯΕ͹ཧ૝͔ • ॲཧͷ಺༰Λఆٛͭͭ͠ɺͦΕͧΕΛ߹੒Ͱ͖Δ Α͏ʹ͍ͨ͠ɻͭ·ΓτϥϯβΫγϣϯΛ૊Έཱ ͯΔλΠϛϯάͱ࣮ߦͷλΠϛϯάΛ෼͚͍ͨɻ • τϥϯβΫγϣϯͷ։͕࢝ඞཁͰ͋Δ͜ͱΛ໌ࣔ తɺ੩తʹදݱ͍ͨ͠ɻ • Ͱ͖Ε͹࢖͍׳ΕͨI/FͰɺ؆ܿʹॻ͖͍ͨ

Slide 37

Slide 37 text

๻Β͸Ͳ͔͜Ͱಉ͡Α͏ͳ ͜ͱΛ΍͍ͬͯΔ΋ͷΛ ࣮͸ݟͨ͜ͱ͕͋Δ

Slide 38

Slide 38 text

No content

Slide 39

Slide 39 text

No content

Slide 40

Slide 40 text

͜Ε͸͋Εͩ…

Slide 41

Slide 41 text

※ۤखͳํͷͨΊʹϞβΠΫॲཧΛࢪ͍ͯ͠·͢

Slide 42

Slide 42 text

ʮScalaؔ਺ܕσβΠϯ&ϓϩάϥϛϯάʯ ΑΓ

Slide 43

Slide 43 text

ؔ਺ܕϓϩάϥϛϯάͷྗΛ आΓΔ

Slide 44

Slide 44 text

࡞ͬͨ

Slide 45

Slide 45 text

RealmIO https://github.com/ukitaka/RealmIO

Slide 46

Slide 46 text

Ͳ͏࡞͔ͬͨʁ

Slide 47

Slide 47 text

͜ΕΛ

Slide 48

Slide 48 text

͜͏͡Ό

Slide 49

Slide 49 text

͜͏͡Ό CurryԽ͢Δͱڞ௨ͷύλʔϯ͕ݟ͑Δ

Slide 50

Slide 50 text

No content

Slide 51

Slide 51 text

͢΂ͯͷRealmͷॲཧ͸͜͏දͤΔ ※ʮRealmΛड͚औͬͯԿ͔Λͯ݁͠ՌΛฦ͢ʯΈ͍ͨͳײ͡Ͱ͢ɻ ※Errorॲཧ͸Ұ୴ߟ͑ͯ·ͤΜ

Slide 52

Slide 52 text

͞Βʹ͜ΕΛ

Slide 53

Slide 53 text

͜͏͡Ό

Slide 54

Slide 54 text

ͭ·Γ͜ΕΛ

Slide 55

Slide 55 text

͜͏͡Ό

Slide 56

Slide 56 text

͜ͷܕΛϕʔεʹਐΊΔ

Slide 57

Slide 57 text

͜͜·Ͱͷ·ͱΊ

Slide 58

Slide 58 text

ڞ௨෦෼͕͋ͬͨͷͰ͜͏͚ͨͩ͠

Slide 59

Slide 59 text

RealmIO

Slide 60

Slide 60 text

RealmIO

Slide 61

Slide 61 text

RealmIO

Slide 62

Slide 62 text

RealmIO

Slide 63

Slide 63 text

࣮ࡍͷίʔυͰ͸ErrorΛthrow Ͱ͖ΔΑ͏ʹͳ͍ͬͯΔ

Slide 64

Slide 64 text

ͳΜͱͳ͘ runΛݺͿ·Ͱ࣮ߦ͞Εͳ͍ ײ͡͸ग़͖ͯͨ

Slide 65

Slide 65 text

͕ɺ ·ͩͳʹ΋ղܾ͍ͯ͠ͳ͍

Slide 66

Slide 66 text

ͩΕ΋τϥϯβΫγϣϯ ։࢝ͯ͠ͳ͘Ͷʁ

Slide 67

Slide 67 text

࡞Δ

Slide 68

Slide 68 text

τϥϯβΫγϣϯ੍ޚ

Slide 69

Slide 69 text

τϥϯβΫγϣϯ੍ޚ Realm͕RealmIOΛҾ਺ʹऔͬͯ

Slide 70

Slide 70 text

τϥϯβΫγϣϯ੍ޚ τϥϯβΫγϣϯ։࢝ͯ͠

Slide 71

Slide 71 text

τϥϯβΫγϣϯ੍ޚ ࣮ߦ !!!

Slide 72

Slide 72 text

τϥϯβΫγϣϯ੍ޚ • ࢖͏ͱ͖͸realm.run(io:) ΛݺͿΑ͏ʹ͢Δ • io.run͸௚઀ݺ΂ͳ͍Α͏ʹɺ࣮ࡍ͸internal ͳΓʹ͓ͯ͘͠ɻ

Slide 73

Slide 73 text

ͱ͜ΖͰRead͚ͩͷͱ͖͸ʁ

Slide 74

Slide 74 text

τϥϯβΫγϣϯ੍ޚ • ύϑΥʔϚϯεతʹ΋ɺແବʹτϥϯβΫ γϣϯΛ։࢝͢΂͖Ͱ͸ͳ͍ɻ • ಡΈࠐΈͷΈͷ৔߹͸τϥϯβΫγϣϯΛ։ ࢝͠ͳ͍Α͏ʹ͢ΔͨΊʹɺॲཧ͕Readͳͷ ͔Writeͳͷ͔Λ൑ผ͢Δ࢓૊Έ͕ඞཁɻ

Slide 75

Slide 75 text

τϥϯβΫγϣϯ੍ޚ ܕ৘ใ͔Β͸Read/Write͕൑ผͰ͖ͳ͍

Slide 76

Slide 76 text

࡞Δ

Slide 77

Slide 77 text

͜ΕΛ

Slide 78

Slide 78 text

͜͏͡Ό

Slide 79

Slide 79 text

͜͏͡Ό Read͔Write͔ΛܕύϥϝʔλͰද͢

Slide 80

Slide 80 text

ͭ·Γ͜ΕΛ

Slide 81

Slide 81 text

͜͏͡Ό

Slide 82

Slide 82 text

͜͏͡Ό Read͔Write͔Λද͢ܕύϥϝʔλ

Slide 83

Slide 83 text

͜͏͡Ό ฦΓ஋ͷܕΛද͢ܕύϥϝʔλ

Slide 84

Slide 84 text

τϥϯβΫγϣϯ੍ޚ

Slide 85

Slide 85 text

τϥϯβΫγϣϯ੍ޚ Writeͷ৔߹͸τϥϯβΫγϣϯΛ ։͔࢝ͯ͠ΒॲཧΛ࣮ߦ

Slide 86

Slide 86 text

τϥϯβΫγϣϯ੍ޚ Readͷ৔߹͸τϥϯβΫγϣϯΛ ։࢝ͤͣʹॲཧΛ࣮ߦ

Slide 87

Slide 87 text

Ͱ͖͖ͯͨ

Slide 88

Slide 88 text

࣮ࡍʹެ։͍ͯ͠Δίʔυͱ ΄΅͓ͳ͡

Slide 89

Slide 89 text

PhantomType ͪͳΈʹRWܕύϥϝʔλ͸ PhantomType(༓ྶܕ)ͱ͍ͬͯɺRead / WriteΛද͚ͩ͢ͰɺͲͷϝιουͷγάω νϟʹ΋ݱΕͳ͍ɻ

Slide 90

Slide 90 text

͜͜·Ͱͷ·ͱΊ

Slide 91

Slide 91 text

No content

Slide 92

Slide 92 text

flatMapͰ ߹੒Ͱ͖ΔΑ͏ʹ͢Δ

Slide 93

Slide 93 text

࢖͍ํΠϝʔδ

Slide 94

Slide 94 text

࢖͍ํΠϝʔδ

Slide 95

Slide 95 text

ͻͱͭ໰୊͕͋Δ

Slide 96

Slide 96 text

߹੒ͨ͠Β Read / Write Ͳ͏ͳΔʁ

Slide 97

Slide 97 text

Read / Write

Slide 98

Slide 98 text

Read / Write RWܕύϥϝʔλʹԠͯ͡ ෳ਺ͷflatMapͷ࣮૷͕ඞཁ

Slide 99

Slide 99 text

Read / Write

Slide 100

Slide 100 text

τϥϯβΫγϣϯ ΋ͪΖΜrunͨ͠Β1ͭͷ τϥϯβΫγϣϯ಺Ͱॲཧ͕ߦΘΕΔ

Slide 101

Slide 101 text

׬੒ʂ

Slide 102

Slide 102 text

ͪͳΈʹϥΠϒϥϦͰ͸ɺrealmͷ ϝιουͷRealmIO൛Λఏڙ

Slide 103

Slide 103 text

׬ᘳʁ

Slide 104

Slide 104 text

Ͱ͖ͳ͔ͬͨ͜ͱ • εϨουʹ͍ͭͯ͸ͳʹ΋Ͱ͖ͳ͔ͬͨɻॲ ཧͷهड़ͱ࣮ߦΛ෼཭͍ͯ͠ΔͷͰɺͦͷ2ͭ ͕ผεϨουͰߦΘΕΔՄೳੑ͕͋ΔͷͰɺ ͦ͜ͷ҆શੑΛϥΠϒϥϦଆͰอূ͔ͨͬ͠ ͕ͨɺThreadSafeReferenceͷ੍໿ͰͰ͖ ͣɻ

Slide 105

Slide 105 text

Ͱ͖ͳ͔ͬͨ͜ͱ objectΛҾ਺ड͚औΔϝιουʹ͓͍ͯɺ ݺͼग़࣌͠ͷεϨουͱ

Slide 106

Slide 106 text

Ͱ͖ͳ͔ͬͨ͜ͱ realm.run(io:)Λݺͼग़͢εϨου͕ ҧ͏Մೳੑ͕͋Δɻ

Slide 107

Slide 107 text

Ͱ͖ͳ͔ͬͨ͜ͱ ඞཁͳΒTSRͰҾ͖௚࣮͢૷ΛೖΕΑ͏ͱ͕ͨ͠…

Slide 108

Slide 108 text

Ͱ͖ͳ͔ͬͨ͜ͱ ThreadSafeReference͸τϥϯβΫγϣϯ಺Ͱ resolveͰ͖ͳ͍ͱ͍͏੍໿͕͋Δ

Slide 109

Slide 109 text

Ͱ͖ͳ͔ͬͨ͜ͱ ͜͜͸τϥϯβΫγϣϯ಺ͳͷͰ resolveͰ͖ͳ͍

Slide 110

Slide 110 text

Ͱ͖ͳ͔ͬͨ͜ͱ • ࣮ࡍʹେ͖ͳ໰୊ʹͳΔ͔ͱݴΘΕΔͱɺͦ ͜·ͰͰ͸ͳ͍(ͱߟ͍͑ͯΔ)ɻಉ͡εϨου Ͱrealm.run(io:)ΛݺͿ͔ɺobjectΛҾ਺Ͱड ͚औΔϝιου͸flatMapͷதͰ࢖͏Α͏ʹ͢ Ε͹໰୊͸ى͖ͳ͍ɻ

Slide 111

Slide 111 text

Ͱ͖ͳ͔ͬͨ͜ͱ • Stack overflowͷՄೳੑ͕ͳ͘͸ͳ͍ɻͰ΋ͦ Μͳʹ߹੒͢Δ͜ͱ͸ݱ࣮తʹ͸ͳ͍ͷͰɺ ΄ͱΜͲ໰୊ʹ͸ͳΒͳ͍ɻ • RxSwift͕Stack overflowى͜͢ͷͱಉ͘͡Β ͍ͷϦεΫ(΄΅ͳ͍)

Slide 112

Slide 112 text

Ͱ͖ͳ͔ͬͨ͜ͱ • ଞͷϞφυͱ૊Έ߹ΘͤΔͷ͸(ݱࡏͷSwiftͰ ͸)೉͍͠ɻྫ͑͹RxSwiftΛ࢖͍ͬͯΔ৔߹ɺ ObservableͱRealmIOΛ͏·͘૊Έ߹ΘͤΔ ͷ͸ݫ͍͠ɻ • ͜Ε͸ߴ֊ଟ૬͕ͳ͍ͱݫ͍͕͠…Swiftʹ͸ ೖΒͳͦ͞͏

Slide 113

Slide 113 text

ࢀߟ • ReaderϞφυ • Slick (ScalaͷDBϥΠϒϥϦ) • ΞΠσΟΞ͸͜ΕͷDBIOAction͔Β • υϫϯΰൿ఻ͷτϥϯβΫγϣϯϞφυΛղઆ IUUQRJJUBDPNQBC@UFDIJUFNTFDEDGGB

Slide 114

Slide 114 text

RealmIO https://github.com/ukitaka/RealmIO