Slide 1

Slide 1 text

In-Memory Realms ࢖ͬͯ API Ωϟογϡͨ͠࿩ ΈͯͶͷMeetup #1 2018-06-27 satoru.sasaki

Slide 2

Slide 2 text

ࣗݾ঺հ —ࠤʑ໦ ڿ (@caad1229) —2015೥10݄ೖࣾ —ࡢ೥ SNSϛΫγΟ -> ΈͯͶ ʹҠಈ —झຯ͸ϨίʔυͰ Jazz ௌ͘͜ͱ

Slide 3

Slide 3 text

ΈͯͶΞϓϦͱrealm —ΈͯͶͰ͸ϢʔβͷϝσΟΞ৘ ใΛ realm ͰΩϟογϡ͍ͯ͠ Δ —ࠩ෼ಉظͱશମಉظͰ realm ʹ ಉظ —ىಈ࣌ɾ௨஌ड৴ɾΞοϓϩ ʔυ࣌

Slide 4

Slide 4 text

ΈͯͶΞϓϦͱ Architecutre —Android ͷ৽نػೳ͸ MVVM Ͱ࣮૷ —iOS ͱઃܭΛἧ͑ΔͨΊʹ CleanArchitecture Λ࢖͍ͬͯ Δͱ͜Ζ΋͋Δ

Slide 5

Slide 5 text

API ΩϟογϡΛ࢖͏ܦҢ —Ϣʔβͷ໨ʹ৮ΕΔػձ͕ଟ͍͕ɺߋ৽͕සൟͰͳ͍ —ը໘͕දࣔ͢Δͨͼʹ fetch ͢Δඞཁ͕ͳ͍ —Push ͳͲͰ࠷৽Λऔಘ͢Ε͹͍͍ఔ౓

Slide 6

Slide 6 text

In-memory Realm ʹ͍ͭͯ —σʔλ͸ϝϞϦॻ͔ΕΔ —Realm ΠϯελϯεͷࢀরΧ΢ϯλ͕ 0 ʹͳΔͱσ ʔλ͕ফ͑Δ —ΞϓϦىಈதͰσʔλΛอ͍࣋ͨ͠৔߹͸ Application ΫϥεͰ Realm ΠϯελϯεΛอ࣋

Slide 7

Slide 7 text

In-memory Realm ͷಋೖ —Application Ͱ realm ΠϯελϯεΛอ࣋ open class CustomApplication : Application() { private var realm: Realm? = null : }

Slide 8

Slide 8 text

In-memory Realm ͷಋೖ —onCreate Ͱੜ੒ͱอ࣋ override fun onCreate() { super.onCreate() val config = RealmConfiguration.Builder() .name("in-memory.realm") .inMemory() .build() // อ࣋͢Δ realm = Realm.getInstance(config) }

Slide 9

Slide 9 text

In-memory Realm ͷಋೖ —onTerminate Ͱഁغ override fun onTerminate() { realmInMemory?.close() super.onTerminate() }

Slide 10

Slide 10 text

cache ػߏͷͨΊͷઃܭ —MVVM ࢖͏

Slide 11

Slide 11 text

Data ͷѻ͍ —Mapper Λ࢖ͬͯڞ௨ Object ʹ ͢Δ —Mapper ʹม׵͢Δ interface Mapper { fun mapFromEntity(type: E): D fun mapToEntity(type: D): E }

Slide 12

Slide 12 text

Cache ͷσʔλ —RealmObject —ϦϨʔγϣϯ͕؆୯ʹͰ͖Δ RealmList Λ࢖͏

Slide 13

Slide 13 text

Repository —Local ͱ Remote Λ࢖͏ —cache ͷอଘͱऔಘϩδοΫ —Local ͔Βऔಘͯ͠ɺͳ͚Ε ͹ Remote ͔Β fetch ͢Δ —ڧ੍తʹ Remote ͔Βऔಘ΋ Ͱ͖ΔΑ͏ʹ͢Δ

Slide 14

Slide 14 text

Repository

Slide 15

Slide 15 text

Demonstration

Slide 16

Slide 16 text

Demonstration Qiita هࣄҰཡΛऔಘ͢ΔΞϓϦ https://github.com/caad1229/apicache dagger2 okHttp3 retrofit2 rxJava2 realm Glide

Slide 17

Slide 17 text

՝୊ͱ͔ —expire ͷλΠϛϯά —ΩϟογϡΫϦΞͷλΠϛϯά —ϖʔδϯάɾϢʔβૢ࡞ʹΑΔςʔϒϧͷߋ৽

Slide 18

Slide 18 text

͝ਗ਼ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠