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

iOSアプリの技術的負債をどう返済したか / How to repay the technical debt of iOS app

iOSアプリの技術的負債をどう返済したか / How to repay the technical debt of iOS app

【ヒカ☆ラボ】【Kyash、Coiney、PAY】新しい支払いの形を作る、モバイル決済サービスの開発の裏側とは

Keisuke Kobayashi

September 11, 2018
Tweet

More Decks by Keisuke Kobayashi

Other Decks in Programming

Transcript

  1. iOSΞϓϦͷٕज़తෛ࠴Λ
    Ͳ͏ฦࡁ͔ͨ͠
    Keisuke Kobayashi
    ʲώΧˑϥϘʳʲKyashɺCoineyɺPAYʳ৽͍͠ࢧ෷͍ͷܗΛ࡞ΔɺϞόΠϧܾ
    ࡁαʔϏεͷ։ൃͷཪଆͱ͸

    View Slide

  2. ࣗݾ঺հ
    • Keisuke Kobayashi
    • Twitter: kobakei122
    • GitHub: kobakei
    • Kyash, Inc
    • Android / iOS / Engineering Manager

    View Slide

  3. ٕज़తෛ࠴ͷ࿩Λ͠·͢

    View Slide

  4. ͔ͭͯͷKyash iOS൛
    • ͳ͔ͥ1ਓͰ࡞ͬͯΔAndroid൛ΑΓɺ

    3ਓͰ࡞ͬͯΔiOS൛ͷํ͕։ൃ͕஗͍
    • ͔͠΋όά͕ଟ͍
    • ͦͯ͠3ਓͷ͏ͪ2ਓ͕ࣙΊͨ

    View Slide

  5. ͜Ε͸ϠόΠ

    View Slide

  6. ମ੍มߋ
    • @konifar ͕ೖࣾ͠AndroidνʔϜ΁
    • @kobakei122 ͕AndroidνʔϜ͔Β

    iOSνʔϜ΁
    • ·ͣணखͨ͠ͷ͕ٕज़తෛ࠴ͷฦࡁ

    View Slide

  7. ٕज़తෛ࠴Λฦࡁ͍ͯ͘͠
    • ιʔείʔυͷ඼࣭վળ
    • ϦιʔεपΓͷվળ
    • Ϗϧυߴ଎Խ

    View Slide

  8. ιʔείʔυͷ඼࣭վળ

    View Slide

  9. ະ࢖༻ίʔυͷ࡟আ
    • ͱʹ͔͘ফ͢
    • Find Selected Symbol in Workspace
    • Androidͷ࣮૷Λݟͭͭɺ͢Ͱʹଘࡏ͠ͳ͍
    ػೳ΍ը໘Λফ͍ͯ͘͠

    View Slide

  10. ΞʔΩςΫνϟݟ௚͠
    • MVVM + ϨΠϠʔυΞʔΩςΫνϟͷ࠾༻

    View Slide

  11. MVVM
    • UI͸ςετ͠ʹ͍͘
    • UIͷϩδοΫΛViewController͔Βണ͕͢͜
    ͱͰɺςετΛॻ͖΍͘͢͢Δ
    7JFX
    6*7JFX$POUSPMMFS

    7JFX.PEFM .PEFM

    View Slide

  12. ϨΠϠʔυΞʔΩςΫνϟ
    • ؔ਺ݺͼग़͠Λ1ํ޲ʹ౷Ұ͢Δ
    • ಉ͡֊૚ͷݺͼग़͠΋ېࢭ$
    • Ϋϥεؒͷґଘؔ܎Λγϯϓϧʹอͭ
    • ֤ϨΠϠʔͷ੹຿Λ໌֬ʹ͢Δ
    • ΫϥεංେԽͷ๷ࢭ

    View Slide

  13. ·ͱΊΔͱ͜Μͳઃܭ
    7JFX 7JFX.PEFM 3FQPTJUPSZ
    "1*$MJFOU
    ,FZDIBJO

    View Slide

  14. ·ͱΊΔͱ͜Μͳઃܭ
    7JFX 7JFX.PEFM 3FQPTJUPSZ
    "1*$MJFOU
    ,FZDIBJO
    6*7JFX$POUSPMMFS
    5BCMF7JFX$FMMͳͲ

    View Slide

  15. ·ͱΊΔͱ͜Μͳઃܭ
    7JFX 7JFX.PEFM 3FQPTJUPSZ
    "1*$MJFOU
    ,FZDIBJO
    6*ʹؔ͢ΔϩδοΫ

    View Slide

  16. ·ͱΊΔͱ͜Μͳઃܭ
    7JFX 7JFX.PEFM 3FQPTJUPSZ
    "1*$MJFOU
    ,FZDIBJO
    ֤&OUJUZͷ$36%

    View Slide

  17. ·ͱΊΔͱ͜Μͳઃܭ
    7JFX 7JFX.PEFM 3FQPTJUPSZ
    "1*$MJFOU
    ,FZDIBJO
    ֤छ
    σʔλιʔεͷ

    ஋ΛಡΈॻ͖

    View Slide

  18. RxSwiftͷಋೖ
    • DispatchQueueͰඇಉظॲཧ͸ਏ͍
    • ͲΜͲΜਂ͘ͳΔωετ
    • leave࿙ΕʹΑΔόά
    • RxSwiftͳΒඇಉظॲཧͷ௚ྻɾฒྻ࣮ߦ͕؆୯
    • ྫ: APIΛ2ͭݺͼग़ͯ͠ɺ݁Ռ͕ἧ͔ͬͯΒ

    ը໘ߋ৽

    View Slide

  19. ϦιʔεपΓͷվળ

    View Slide

  20. Storyboardͷ෼ׂ
    • ෳ਺ը໘Λ࣋ͭStoryboardΛಉ࣌ʹฤूͯ͠
    ίϯϑϦΫτ͢Δࣄނ͕ଟൃ
    • 1ը໘1StoryboardʹͳΔ·Ͱ෼ׂ
    • ͦΕͰ΋ͨ·ʹࣄނΔͷͰνʔϜͰͷ੠ֻ͚
    େࣄ

    View Slide

  21. Segueېࢭ
    • Storyboard෼ׂͷ͍ͭͰʹېࢭ
    • ը໘ભҠͰ஋Λ౉͢ͱ͖ʹɺભҠϩδοΫ͕
    Storyboardͱίʔυʹ෼ࢄͯ͠͠·͏
    • ୅ΘΓʹίʔυʹू໿͢Δ
    • ը໘ભҠ༻ͷstaticؔ਺Λ༻ҙͯ͠ɺ஋ͷܕ΋ݻఆ
    ͢Δ

    View Slide

  22. SwiftGen
    • ֤छϦιʔεͷఆ਺Λࣗಈੜ੒͢ΔϥΠϒϥϦ
    • จࣈྻ
    • ը૾
    • ৭
    • Storyboard
    • ଘࡏ͠ͳ͍จࣈྻ΍ը૾Λ࢖ͬͨΒϏϧυ࣌ʹΤϥʔʹͳΔ

    View Slide

  23. ΧϥʔύϨοτ
    • όʔδϣϯ؅ཧ͢ΔΑ͏ʹ
    • ~/Library/Colors/ʹίϐʔ͢Δ͜ͱͰɺνʔϜ
    ͷશһ͕ಉ͡ύϨοτΛ࢖༻Ͱ͖Δ
    • SwiftGenͱͷ૬ੑ΋

    View Slide

  24. Ϗϧυߴ଎Խ

    View Slide

  25. Embedded Framework
    • UI૚ͷमਖ਼͕΄ͱΜͲͳͷͰɺModel૚͸Ͱ͖Δ͚ͩϏϧυͨ͠
    ͘ͳ͍
    • Model૚ΛϨΠϠʔ͝ͱʹϑϨʔϜϫʔΫԽ
    • Repository
    • Infrastructure
    • Entity
    • Utility

    View Slide

  26. CocoaPods -> CarthageҠߦ
    • ϥΠϒϥϦͷϏϧυ͕஗͍
    • Carthage/Build/ҎԼ΋gitʹίϛοτ
    • ͱ͸ݴ͑શͯͷϥΠϒϥϦΛҠߦͰ͖ΔΘ͚
    Ͱ͸ͳ͍
    • ྫ: Firebase

    View Slide

  27. MBPങ͍ସ͑
    • ΋͏ҰਓͷiOSΤϯδχΞ͕MBP 13ΠϯνΛ࢖͍ͬͯ
    ͨ
    • MBP 15ΠϯνΛࢧڅ
    • ΫΞουίΞCPU͸iOSΤϯδχΞͷ

    جຊతਓݖ
    • iMac Proཉ͍͠

    View Slide

  28. 3͔݄ޙ…

    View Slide

  29. ͦ͜ʹ͸ݩؾʹ૸ΓճΔ

    iOSνʔϜͷ͕࢟ʂ
    • ։ൃ଎౓ͷ޲্
    • Androidʹ௥͍͍ͭͨʂ
    • ඼࣭ͷ޲্
    • Crash Free Rate

    View Slide

  30. ࠓޙͷ༧ఆ
    • ςετΛ͝Γ͝Γॻ͍͍ͯ͘
    • ·ͩςετΛॻ͚Δঢ়ଶʹͳ͚ͬͨͩ
    • ViewModelத৺ʹॻ͘ํ਑
    • UI૚Λࡉ͔͘ϑϨʔϜϫʔΫԽ
    • ·ͣ͸ڞ௨Ͱ࢖͏ΧελϜϏϡʔͳͲ
    • υϝΠϯ૚͋ͬͨ΄͏͕͍͍͔΋

    View Slide

  31. Thanks!!!

    View Slide