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

みてね iOS版の開発手順書 - みてねのMeetup#1 / mitene ios development steps

みてね iOS版の開発手順書 - みてねのMeetup#1 / mitene ios development steps

2018/6/29 Fri. "みてねのMeetup#1" で発表したスライドです。
iOS版の開発について順をおって説明しました。

atsushisakai

June 29, 2018
Tweet

More Decks by atsushisakai

Other Decks in Programming

Transcript

  1. iOS൛ͷ։ൃखॱॻ
    @_atsushisakai
    ΈͯͶͷMeetup #1

    View Slide

  2. ࣗݾ঺հ
    ञҪ ಞ @_atsushisakai

    • 2011೥11݄ ϛΫγΟೖࣾ

    • 2012೥ʙ2014೥ SNS mixiʹؔ࿈ͨ͠ECܥͷ৽نࣄۀΛෳ਺։ൃ

    • 2014೥ʙ ΈͯͶ૑ۀ࣌ʹiOSΤϯδχΞͱͯ͠ࢀՃ

    • 2017೥4݄ʙ ΈͯͶࣄۀ෦ ։ൃάϧʔϓϚωʔδϟ

    • 2018೥1݄ʙ SREνʔϜॴଐɺΠϯϑϥઐ೦ɺߴ଎Խɾෛՙ෼ࢄ

    View Slide

  3. ࿩͢͜ͱ
    • iOS൛ΈͯͶ͸ɺԿΛߟ͑ͯઃܭ͞ΕɺͲͷΑ͏ʹ։ൃΛߦ͍ͬͯΔ͔

    • ΞʔΩςΫνϟࣗମͷ࿩Ͱ͸ͳ͘ɺ͋ΔΞʔΩςΫνϟͷ্Ͱ࣮ࡍʹͲ͏
    ։ൃ͍ͯ͠Δ͔

    • Kyashͷ@konifar͞ΜʹӨڹΛड͚ͨൃද

    • https://drive.google.com/file/d/
    1rlL1AdE5R_M1UAxVW_lY4orFTIEBfFJY/view

    View Slide

  4. iOS൛ΈͯͶͷࣦഊ
    • ίʔυ্ͷࣦഊ

    • MVC ( or MVP)

    • FatViewController

    • ඈͼަ͏NSNotification

    • ґଘؔ܎͕ແ஡ͳSingletonͷେྔൃੜ

    • ωετ͠·͘ΔObjective-C block, Swift Closure

    • ͱΓ͋͑ͣManager

    • ແҙຯʹੜ͑ΔExtension

    • ౰વͷΑ͏ʹଘࡏ͠ͳ͍ςετίʔυ

    ɹ…

    View Slide

  5. iOS൛ΈͯͶͷࣦഊ
    • ίʔυ͕ϏδωεʹѱӨڹΛ΋ͨΒ͢

    • ଐਓԽ

    • Ϟνϕʔγϣϯ௿Լ

    • ݟੵ΋Γਫ਼౓ͷ௿Լ

    • CSελοϑʹ͠Θدͤ

    View Slide

  6. ΞʔΩςΫνϟ࡮৽
    • 2018೥1݄͝Ζʹ࣮ࢪ

    • ଟਓ਺։ൃʹ΋଱͑͏Δ΋ͷʹ͍ͨ͠

    • ςετΛॻ͘ʢॻ͚ΔΑ͏ʹ͢Δʣ

    • ॻ͘ՕॴΛ໌֬ʹنఆ͢Δʢॻ͔ͳ͍͍ͯ͘ͱ͜Ζ͸ॻ͔ͳ͍ʣ

    • ԿΛ࡞Δ͔ɺࣄલʹ೺ѲՄೳ

    • ॳΊͯͷਓͰ΋ා͘ͳ͍

    View Slide

  7. λʔχϯάϙΠϯτ
    • bufferapp/android-clean-architecture-boilerplate

    • KotlinͰClean ArchitectureΛ࣮૷ͨ͠AndroidΞϓϦͷαϯϓϧίʔυ

    • ͦͷ··ͦͬ͘ΓiOS/Swiftʹస༻Ͱ͖Δ

    • ࣗ෼ͷΞϓϦͰ΍͍ͬͯ͘ؾ͕࣋ͪߴ·ͬͨ

    View Slide

  8. େํ਑
    • MVP

    • PresenterͷςετΛॻ͖ViewControllerΛബ͘͢Δ

    • CleanArchitecture

    • ModelϨΠϠʔΛ੔ཧ͠ɺڊେͳPresenter΍Managerʹ͠ͳ͍

    • RxSwiftΛઃܭʹऔΓೖΕͯඇಉظॲཧͷՄಡੑΛߴΊΔ

    • ςετΛॻ͘

    View Slide

  9. UI Presentation Domain
    Presenter
    View
    ViewController
    PresenterImpl UseCase
    Mapper
    Model
    ໼ҹ͸ґଘؔ܎

    View Slide

  10. Domain Data Remote
    UseCase
    Mapper
    Model
    ໼ҹ͸ґଘؔ܎
    Repository RepositoryImpl
    Mapper
    Model
    Cache
    DataSource
    DataSourceImpl
    Entity
    DataSourceImpl
    Entity

    View Slide

  11. ͦΕͰ͸։ൃ͍͖ͯ͠·͢

    View Slide

  12. ஫1: ͋͘·ͰαϯϓϧίʔυͰ͢

    View Slide

  13. ஫2: શମతʹ͔ͳΓলུ͍ͯ͠·͢

    View Slide

  14. Ҋ݅঺հ

    View Slide

  15. • ۙگ (Recents) ը໘

    • ϢʔβʔͷΞΫςΟϏςΟΛྲྀ͢ϑΟʔυUI

    • API͔ΒϑΟʔυͷListΛऔಘ

    • આ໌Λ؆қతʹ͢ΔͨΊCache͸͠ͳ͍

    • APIೲ඼͕஗Ε͍ͯΔʂʢઃఆʣ

    View Slide

  16. Domain
    • UseCase͔ΒऔΓग़ͨ͠Βग़ͯ͘ΔΦϒδΣΫτ

    • ϑΟʔυͷͻͱͭ෼ʹ૬౰͢Δ

    View Slide

  17. Domain
    • UseCase͕ґଘ͢ΔRepositoryͷΠϯλʔϑΣʔε

    • SingleΦϒδΣΫτͱͯ͠ඇಉظʹΦϒδΣΫτΛฦ͢

    View Slide

  18. Domain

    View Slide

  19. Domain
    RepositoryͷΠϯλʔϑΣʔεʹґଘͤ͞Δ
    Repository͔ΒσʔλΛऔΓग़͢

    View Slide

  20. ࢀߟ (kotlin)
    • ϕʔεΫϥε SingleUseCase.kt

    • https://github.com/bufferapp/android-clean-architecture-boilerplate/
    blob/master/domain/src/main/java/org/buffer/android/boilerplate/
    domain/interactor/SingleUseCase.kt

    View Slide

  21. ςετΛॻ͍ͯ͜͜ͰPull Request

    View Slide

  22. Presentation
    • ந৅Խ͞ΕͨViewͷProtocolΛఆٛ

    • Presenter͸͜ͷViewʹରͯ͠දࣔΛࢦࣔ͢ΔΑ͏ʹॻ͘

    View Slide

  23. Presentation
    • Presenterʹ࣮૷͢΂͖ProtocolΛఆٛɻ

    • ViewController͸ϥΠϑαΠΫϧ্ͰPresenterͷ֤ॲཧΛ࣮ߦ͢Δ

    View Slide

  24. Presentation

    View Slide

  25. Presentation
    ViewΛऑࢀর
    ݁ՌΛViewʹ൓ө͢Δ

    View Slide

  26. ςετΛॻ͍ͯ͜͜ͰPull Request

    View Slide

  27. User Interface

    View Slide

  28. User Interface
    Presenterʹॲཧ͕ॻ͍ͯ͋Δ
    RecentViewΛConform

    View Slide

  29. ͜ͷ࣌఺ͰLayoutͯ͠σʔλΛදࣔͤ͞Δ

    View Slide

  30. ςετ͸ॻ͔ͳ͍ͰOKɺPull Request

    View Slide

  31. APIͰ͖ͨʁ

    View Slide

  32. Data

    View Slide

  33. Data
    DataϨΠϠʔͰѻ͏ΦϒδΣΫτ

    View Slide

  34. Data
    DataϨΠϠʔͰѻ͏ΦϒδΣΫτ͔Β
    DomainϨΠϠʔͰѻ͏ΦϒδΣΫτʹTranslate͢Δ

    View Slide

  35. ςετΛॻ͍ͯ͜͜ͰPull Request

    View Slide

  36. Remote

    View Slide

  37. ͦΖͦΖ࣌ؒͳ͍ͷͰAPIClientͷ۩ମతͳ࣮૷͸লུ͠·͢

    View Slide

  38. ςετΛॻ͍ͯ͜͜ͰPull Request

    View Slide

  39. αʔόʔͱ݁߹ͯ͠ಈ࡞֬ೝʂ

    View Slide

  40. ࣮૷खॱͷ·ͱΊ
    • ґଘؔ܎͕੔ཧ͞Ε͍ͯΔͷͰॱংཱ࣮ͯͯ૷͠΍͍͢

    • API/Cache͕ͳͯ͘΋UseCase͕ฦ͢ϞσϧΛͰͬͪ͋͛Ε͹͙͢ʹ࣮૷
    ͸΍͍͚ͬͯΔ

    • ϨΠϠʔΛ௒͑Δͱ͖͸جຊతʹProtocolґଘ͢Δ

    • ςετ͸ॻ͘ͱ͜Ζͱॻ͔ͳ͍ͱ͜ΖͷϝϦϋϦΛ͚ͭΔ

    View Slide

  41. ࢒͞Ε͍ͯΔ՝୊
    • Clean ArchitectureΛͲ͜·Ͱݫີʹ΍͍͔ͬͯ͘໰୊

    • ϑΝΠϧ͕ଟ࣮ͯ͘૷͕େม

    • ίʔυςϯϓϨʔτͳͲΛۦ࢖ͯ͠ؾָʹ͍͖͍ͯͨ͠

    • ґଘؔ܎ղܾ͕͍͍ͪͪෳࡶ

    • SwinjectͳͲDI Containerͷಋೖ͕ඞવతʹͳ͖ͬͯͨ

    • Embedded FrameworkԽ͍ͯ͠ͳ͍

    • ґଘؔ܎ͷϧʔϧΛ؆୯ʹഁͬͯ͠·͏͜ͱ͕Ͱ͖Δ

    • ۃ୺ʹݴ͏ͱ Presenter͕APIΫϥΠΞϯτΛؾܰʹ௚઀ୟ͘͜ͱ΋Մೳͱ͍͑͹Մೳ

    View Slide

  42. ΞʔΩςΫνϟ࡮৽ͷޮՌ
    • ͱΓ͋͑ͣίʔυΛॻ͘ͷ͕ਏ͘ͳָ͍ͯ͘͠

    • ςετΛॻ͘͜ͱ͕౰વͷۭؾʹͳΓίʔυϨϏϡʔ΋ָνϯ

    • ා͘ͳ͍

    • ޻਺ΛݟੵΔ͜ͱ͕Ͱ͖Δ

    • ࣮૷଎౓΍QA࣌ͷόάͷ਺ͳͲ͸͜Ε͔Β΋͏গ͠෼ੳ͍͖͍ͯͨ͠

    View Slide

  43. ͋Γ͕ͱ͏͍͟͝·ͨ͠

    View Slide