Slide 1

Slide 1 text

ΞοςJ04ͷઃܭͱ ։ൃϑϩʔͷมભ 2016/04/18

Slide 2

Slide 2 text

ࣗݾ঺հ 2 ੴ઒ ༸ࢿ (ishkawa) • 2016೥2݄ೖࣾͷiOSΤϯδχΞ • ΧϠοΫ → LINE → ι΢κ΢ • ઃܭΛߟ͑Δͷ͕޷͖

Slide 3

Slide 3 text

INDEX 1. ಉ͡ߏ଄ͷ࣮૷ͷҰݩԽ 2. Ωϟογϡઓུ 3. σϓϩΠ

Slide 4

Slide 4 text

ಉ͡ߏ଄ͷ࣮૷ͷҰݩԽ

Slide 5

Slide 5 text

Α͋͘Δಉ͡ߏ଄ 5 1. ϖʔδωʔγϣϯ 2. ϑΥʔϜͷόϦσʔγϣϯ

Slide 6

Slide 6 text

“ಉ͡ߏ଄”Λ୲౰͢Δͷ͸ViewModel 6 6*7JFX$POUSPMMFS 6*7JFX "1*$MJFOU 6*Πϕϯτ ϦΫΤετ Ϩεϙϯε View ViewModel Model 7JFX.PEFM දࣔ஋

Slide 7

Slide 7 text

ϖʔδωʔγϣϯ͕ඞཁͳՕॴ 7 1. λΠϜϥΠϯ 2. ͍͍ͶϦετ 3. ϝοηʔδ 4. ௨஌ 5. ίϝϯτ

Slide 8

Slide 8 text

ϖʔδωʔγϣϯ͕ඞཁͳՕॴ 8 5JNFMJOF 7JFX$POUSPMMFS "1*$MJFOU 5JNFMJOF 7JFX.PEFM -JLFE0⒎FST 7JFX$POUSPMMFS -JLFE0⒎FST 7JFX.PEFM .FTTBHFT 7JFX$POUSPMMFS .FTTBHFT 7JFX.PEFM /PUJpDBUJPOT 7JFX$POUSPMMFS /PUJpDBUJPOT 7JFX.PEFM $PNNFOUT 7JFX$POUSPMMFS $PNNFOUT 7JFX.PEFM

Slide 9

Slide 9 text

ϖʔδωʔγϣϯ͕ඞཁͳՕॴ 9 5JNFMJOF 7JFX$POUSPMMFS "1*$MJFOU 1BHJOBUJPO 7JFX.PEFM&MFNFOU -JLFE0⒎FST 7JFX$POUSPMMFS .FTTBHFT 7JFX$POUSPMMFS /PUJpDBUJPOT 7JFX$POUSPMMFS $PNNFOUT 7JFX$POUSPMMFS

Slide 10

Slide 10 text

ԿΛύϥϝʔλʔԽ͢Δ͔ʁ 10 class PaginationViewModel { ... func bindRequest(baseRequest: Request) { ... } } • ϖʔδωʔγϣϯͷΤϨϝϯτ(Message, NotificationͳͲ) • ϖʔδωʔγϣϯͷͨΊͷϦΫΤετ

Slide 11

Slide 11 text

Ͳ͏࣮૷͢Δʁ 11 protocol PaginationRequestType: AtteRequestType { associatedtype Response: PaginationResponseType var page: Int64 { get } } protocol PaginationResponseType { associatedtype Element var elements: [Element] { get } var hasNextPage: Bool { get } } • ϓϩτίϧͰ࣮૷ͷͨΊͷ଍৔Λ༻ҙ • ϓϩτίϧͰఆٛͨ͠ΠϯλʔϑΣʔε͚ͩͰ࣮૷

Slide 12

Slide 12 text

ϖʔδωʔγϣϯ͕ඞཁͳՕॴ 12 5JNFMJOF 7JFX$POUSPMMFS "1*$MJFOU 1BHJOBUJPO 7JFX.PEFM&MFNFOU -JLFE0⒎FST 7JFX$POUSPMMFS .FTTBHFT 7JFX$POUSPMMFS /PUJpDBUJPOT 7JFX$POUSPMMFS $PNNFOUT 7JFX$POUSPMMFS

Slide 13

Slide 13 text

࣮૷ͷҰݩԽͰಘͨ΋ͷ 13 • ߴ଎ • ҆શ

Slide 14

Slide 14 text

Ωϟογϡઓུͷมભ

Slide 15

Slide 15 text

౰ॳͷΩϟογϡઓུ 15 • RealmͰΩϟογϡΛऔΔ • Ϩεϙϯε͸RealmͷObjectͱͯ͠දݱ

Slide 16

Slide 16 text

౰ॳͷΩϟογϡઓུͷ໰୊఺ 16 Կ΋͔΋RealmͷObjectʹͳͬͯ͠·͏ͧ... • Կ͕ӬଓԽ͞Ε͍ͯΔͷ͔ܕ͔Β൑ผͰ͖ͳ͍ • ࡟আϙϦγʔ͕ෳࡶ • ϚΠάϨʔγϣϯର৅͕޿͘ͳΔ

Slide 17

Slide 17 text

ͦ΋ͦ΋Realm͕୲ͬͯͨ΋ͷ͸ʁ 17 • ϨεϙϯεͷӬଓԽ • ը໘ؒͷมߋͷڞ༗

Slide 18

Slide 18 text

ϨεϙϯεͷӬଓԽ 18 ࣺͯͯ΋ྑ͍΋ͷ͸ύʔδલఏͷػߏͰอଘ͢Δ • LRUͷσΟεΫΩϟογϡͰJSONΛอଘ • อଘ͞ΕͨJSONͱܕʹෆ੔߹͕͋Ε͹JSONΛࣺͯΕ͹ྑ͍ • ࡟আϙϦγʔɾϚΠάϨʔγϣϯͷ৺഑͕ͳ͘ͳͬͨ

Slide 19

Slide 19 text

ϨεϙϯεͷӬଓԽ 19 ϨεϙϯεΛද͢ܕͷ੍ݶ͕ͳ͘ͳͬͨ • Ҏલ͸ObjectMapperΛ࢖͍ͬͯͨ • ݱࡏ͸HimotokiʹҠߦࡁΈ • JSONͷόϦσʔγϣϯͱܕͷΠϯελϯεԽΛҰகͤ͞ΒΕͨ • ෆਖ਼ͳJSONʹΑΔΤϥʔΛہॴతʹཹΊΔ͜ͱ͕Ͱ͖ͨ

Slide 20

Slide 20 text

ը໘ؒͷมߋͷڞ༗ 20 άϩʔόϧͳSubjectͰڞ༗ • ಉظ͸ಉظ͕ಘҙͳ΋ͷʹ೚ͤΔ(RxSwift)

Slide 21

Slide 21 text

ͪͳΈʹ 21 Realm͸ࠓͰ΋࢖ͬͯ·͢

Slide 22

Slide 22 text

RealmͱLRUΩϟογϡͷ࢖͍෼͚ 22 • αʔόʔʹಧ͍͍ͯΔσʔλ: LRUσΟεΫΩϟογϡ • αʔόʔʹಧ͍͍ͯͳ͍σʔλ: Realm

Slide 23

Slide 23 text

αʔόʔʹಧ͍͍ͯͳ͍σʔλ 23 1. ૹ৴தͷϝοηʔδɾίϝϯτ 2. ೖྗதͷϑΥʔϜ

Slide 24

Slide 24 text

Ωϟογϡʹର͢ΔϙϦγʔ 24 దࡐదॴ

Slide 25

Slide 25 text

ࣗಈσϓϩΠ

Slide 26

Slide 26 text

ࣗಈσϓϩΠͷϞνϕʔγϣϯ 26 • Pull Request͕Ϛʔδ͞ΕͨΒ୭Ͱ΋ಈ࡞֬ೝͰ͖ΔΑ͏ʹ͍ͨ͠ • QA͕׬ྃͨ͠Β͙͢ʹ৹ࠪʹग़ͤΔΑ͏ʹ͍ͨ͠ • ୭͔ͷ؀ڥʹґଘͤͣʹσϓϩΠͰ͖ΔΑ͏ʹ͍ͨ͠

Slide 27

Slide 27 text

Travis CI 27

Slide 28

Slide 28 text

ࣗಈσϓϩΠͷϙϦγʔ 28 • git push͞ΕͨΒΞʔΧΠϒ + σϓϩΠ • Ϗϧυ൪߸͸Travis CI͕ৼΔ • खݩͰͷΞʔΧΠϒ͸جຊతʹ͸͠ͳ͍

Slide 29

Slide 29 text

؀ڥ 29 %FQMPZ(BUF %FWFMPQNFOU 5FTU'MJHIU
 1SPEVDUJPO

Slide 30

Slide 30 text

Gitϒϥϯν͝ͱͷϏϧυλεΫ 30 • feature: ςετ • master: ςετ + Development • release: ςετ + Development + Production

Slide 31

Slide 31 text

Ϗϧυ࣌ؒ 31

Slide 32

Slide 32 text

Ϗϧυ࣌ؒ 32

Slide 33

Slide 33 text

Ͳ͏ͳ͔ͬͨʁ 33 • ͙͢ಈ࡞Λ֬ೝͯ͠΋Β͑ΔΑ͏ʹͳͬͨ • Ϗϧυ͍ͯͩͬͯ͘͠͞ݴΘΕͳ͍ • ਃ੥ָ͕ʹͳͬͨ • ୭Ͱ΋ਃ੥Ͱ͖ΔΑ͏ʹͳͬͨ

Slide 34

Slide 34 text

34 ·ͱΊ

Slide 35

Slide 35 text

·ͱΊ 35 • ָʹ଎͘։ൃͰ͖ΔΑ͏ʹઃܭΛߟ͍͑ͯΔ • ϛε͕ى͜Γ΍͍͢ઃܭ͸ආ͚Δ • ୭Ͱ΋ؾܰʹσϓϩΠͰ͖ΔΑ͏ʹ͓ͯ͘͠ • ·ͩ·ͩൃల్্...ʂ

Slide 36

Slide 36 text

No content