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

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

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

85cab5fdf09afe3ee78ce3667681915a?s=128

Keisuke Kobayashi

September 11, 2018
Tweet

Transcript

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

  2. ࣗݾ঺հ • Keisuke Kobayashi • Twitter: kobakei122 • GitHub: kobakei

    • Kyash, Inc • Android / iOS / Engineering Manager
  3. ٕज़తෛ࠴ͷ࿩Λ͠·͢

  4. ͔ͭͯͷKyash iOS൛ • ͳ͔ͥ1ਓͰ࡞ͬͯΔAndroid൛ΑΓɺ
 3ਓͰ࡞ͬͯΔiOS൛ͷํ͕։ൃ͕஗͍ • ͔͠΋όά͕ଟ͍ • ͦͯ͠3ਓͷ͏ͪ2ਓ͕ࣙΊͨ

  5. ͜Ε͸ϠόΠ

  6. ମ੍มߋ • @konifar ͕ೖࣾ͠AndroidνʔϜ΁ • @kobakei122 ͕AndroidνʔϜ͔Β
 iOSνʔϜ΁ • ·ͣணखͨ͠ͷ͕ٕज़తෛ࠴ͷฦࡁ

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

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

  9. ະ࢖༻ίʔυͷ࡟আ • ͱʹ͔͘ফ͢ • Find Selected Symbol in Workspace •

    Androidͷ࣮૷Λݟͭͭɺ͢Ͱʹଘࡏ͠ͳ͍ ػೳ΍ը໘Λফ͍ͯ͘͠
  10. ΞʔΩςΫνϟݟ௚͠ • MVVM + ϨΠϠʔυΞʔΩςΫνϟͷ࠾༻

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

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

    ΫϥεංେԽͷ๷ࢭ
  13. ·ͱΊΔͱ͜Μͳઃܭ 7JFX 7JFX.PEFM 3FQPTJUPSZ "1*$MJFOU ,FZDIBJO

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

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

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

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

  18. RxSwiftͷಋೖ • DispatchQueueͰඇಉظॲཧ͸ਏ͍ • ͲΜͲΜਂ͘ͳΔωετ • leave࿙ΕʹΑΔόά • RxSwiftͳΒඇಉظॲཧͷ௚ྻɾฒྻ࣮ߦ͕؆୯ •

    ྫ: APIΛ2ͭݺͼग़ͯ͠ɺ݁Ռ͕ἧ͔ͬͯΒ
 ը໘ߋ৽
  19. ϦιʔεपΓͷվળ

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

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

    ͢Δ
  22. SwiftGen • ֤छϦιʔεͷఆ਺Λࣗಈੜ੒͢ΔϥΠϒϥϦ • จࣈྻ • ը૾ • ৭ •

    Storyboard • ଘࡏ͠ͳ͍จࣈྻ΍ը૾Λ࢖ͬͨΒϏϧυ࣌ʹΤϥʔʹͳΔ
  23. ΧϥʔύϨοτ • όʔδϣϯ؅ཧ͢ΔΑ͏ʹ • ~/Library/Colors/ʹίϐʔ͢Δ͜ͱͰɺνʔϜ ͷશһ͕ಉ͡ύϨοτΛ࢖༻Ͱ͖Δ • SwiftGenͱͷ૬ੑ΋

  24. Ϗϧυߴ଎Խ

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

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

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


    جຊతਓݖ • iMac Proཉ͍͠
  28. 3͔݄ޙ…

  29. ͦ͜ʹ͸ݩؾʹ૸ΓճΔ
 iOSνʔϜͷ͕࢟ʂ • ։ൃ଎౓ͷ޲্ • Androidʹ௥͍͍ͭͨʂ • ඼࣭ͷ޲্ • Crash

    Free Rate
  30. ࠓޙͷ༧ఆ • ςετΛ͝Γ͝Γॻ͍͍ͯ͘ • ·ͩςετΛॻ͚Δঢ়ଶʹͳ͚ͬͨͩ • ViewModelத৺ʹॻ͘ํ਑ • UI૚Λࡉ͔͘ϑϨʔϜϫʔΫԽ •

    ·ͣ͸ڞ௨Ͱ࢖͏ΧελϜϏϡʔͳͲ • υϝΠϯ૚͋ͬͨ΄͏͕͍͍͔΋
  31. Thanks!!!