Upgrade to Pro — share decks privately, control downloads, hide ads and more …

アッテiOSの設計と開発フローの変遷

Yosuke Ishikawa
April 19, 2016
13k

 アッテiOSの設計と開発フローの変遷

Yosuke Ishikawa

April 19, 2016
Tweet

Transcript

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

    View Slide

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

    View Slide

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

    View Slide

  4. ಉ͡ߏ଄ͷ࣮૷ͷҰݩԽ

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  8. ϖʔδωʔγϣϯ͕ඞཁͳՕॴ
    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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  14. Ωϟογϡઓུͷมભ

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  25. ࣗಈσϓϩΠ

    View Slide

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

    View Slide

  27. Travis CI
    27

    View Slide

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

    View Slide

  29. ؀ڥ
    29
    %FQMPZ(BUF
    %FWFMPQNFOU

    5FTU'MJHIU

    1SPEVDUJPO

    View Slide

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

    View Slide

  31. Ϗϧυ࣌ؒ
    31

    View Slide

  32. Ϗϧυ࣌ؒ
    32

    View Slide

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

    View Slide

  34. 34
    ·ͱΊ

    View Slide

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

    View Slide

  36. View Slide