Aggressive freee Mobile Team

26173c2f52b5aa5d06e6806c7a9478d3?s=47 laprasDrum
September 28, 2017

Aggressive freee Mobile Team

2017/9/28 大阪ベンチャーモバイル最前線NIGHT vol1 の登壇資料

26173c2f52b5aa5d06e6806c7a9478d3?s=128

laprasDrum

September 28, 2017
Tweet

Transcript

  1. গਓ਺Ͱ΋ ߈Ίଓ͚Δ freee ͷϞόΠϧνʔϜ laprasDrum

  2. @laprasDrum Β΀Β΀ iOS/Android Lead Engineer 2015/4~ freee

  3. ձܭ freee ͷ Web / iOS / Android Λ ։ൃͯ͠·͢

  4. ैۀһ޲͚ΞϓϦ freee for νʔϜͷ iOS / Android Λ ։ൃͯ͠·͢

  5. εϞʔϧϏδωεʹܞΘΔ͢΂ͯͷਓ͕ ૑଄తͳ׆ಈʹϑΥʔΧεͰ͖ΔΑ͏

  6. 2013/3 2014/2 2014/4 2014/5 2015/9 ϓϩμΫτͷาΈ

  7. 2013/3 2014/1 νʔϜൃ଍ 2014/2 2014/4 2014/5 2014/7 νʔϜղࢄ 2015/9 2015/4

    2016/6 2016/7 2016/12 2017/5 νʔϜͷาΈ
  8. 2013/3 2014/1 νʔϜൃ଍ 2014/2 2014/4 2014/5 2014/7 νʔϜղࢄ 2015/9 2015/4

    2016/6 2016/7 2016/12 2017/5 େ෦෼͕2ਓӡ༻ ۀ຿ҕୗͷํ1ਓʹ ୹ظ͓ؒख఻͍ͯ͠௖͍ͯ·ͨ͠
  9. 2ਓͩͱ • େ͖ͳػೳΛͻͱΓ͕࡞Δͱ΋͏ͻͱΓ͸ϨϏϡʔͰσο υϩοΫ͞ΕΔ • ౰વ Web ΞϓϦͷਐԽʹ௥ैͰ͖Δ଎౓͕ෆ଍ • ͱ͸͍͑ࢢ৔ͷதͰΞϓϦΛҭ͍ͯͯͨ͘Ίʹ΋ͲΜͲ

    ΜՁ஋ΛੜΈग़͍͔ͯ͠ͳͯ͘͸͍͚ͳ͍ • ͲΜͲΜ଍ճΓ͕੔Θͳ͘ͳͬͯ͘Δ
  10. ͕ͩ߈ΊΔ

  11. ձܭ freeeʢ2014/2~ʣ • ։ൃظؒ1ϲ݄ • Rx (ReactiveCocoa & RxJava) &

    MVVM Λॳظ࠾༻ ViewModel User Interactions Web API Utils Web API External Actions Internal Actions ඇಉظॲཧ Gesture ൃՐҎ֎ͷ ಺෦ॲཧ ViewController Activity/Fragment Rx Rx Models
  12. freee for νʔϜʢ2015/9~ʣ • ։ൃظؒ1ϲ݄ • Full Swift ʹରͯ͠ Full

    Kotlin Λॳظ࠾༻ • ౰࣌ͷ Kotlin ͷόʔδϣϯ͸ M9 • flux ΞʔΩςΫνϟͷॳظ࠾༻ • Fat ViewModel Խ͖ͯͨ͠ձܭ freee ʹର͢ΔԾઆݕূ • ViewModel ≒ Action + Store
  13. ViewModel User Interactions Web API Utils Web API External Actions

    Internal Actions ඇಉظॲཧ Gesture ൃՐҎ֎ͷ ಺෦ॲཧ ViewController Activity/Fragment Models
  14. Actions User Interactions Dispatcher Web API Utils EmitChange (DataBinding) Web

    API External Actions Internal Actions NotificationCenter ExecutorService ViewModel ඇಉظॲཧ Gesture ൃՐҎ֎ͷ ಺෦ॲཧ ViewController Activity/Fragment Store Models
  15. ߈ΊΔͨΊͷ ٕज़ɾΞʔΩςΫνϟ બఆج४

  16. ·͖͜Έ΍͘͢ શྗ౤ࢿͭͭ͠ӡ༻

  17. ·͖͜Έ΍͘͢ • αʔόʔαΠυ΍ϑϩϯτΤϯυ෼ִ͚ͯͳ͘։ൃ͢Δ͜ͱ͕ଟ͍ • ॳظ͸ϞόΠϧઐ໳ͷਓ͸গͳ͔ͬͨ • iOS / Android ͱ΋ʹΞʔΩςΫνϟΛ౷Ұ

    • MVVM ΍ flux ͷڞ௨Խ • ͲͪΒ͔ͷίʔυʹ৮ΕΕ͹ଞํ΋ཧղ͠΍͍͢Α͏ʹ • Kotlin ͷૣظ࠾༻͸ Swift ͱͷ਌࿨ੑʹدͤͨ݁Ռ • Java ίʔυͷࢿ࢈Λ࠶ར༻Մೳɾ͍ͭͰ΋ Java ʹఫୀ͠௚ͤΔ҆৺ײ͕ ܾΊखͱͯ͠͸ڧ͍
  18. શྗ౤ࢿͭͭ͠ӡ༻ • ٕज़ɾΞʔΩςΫνϟಋೖ͸ΞϓϦͷӡ༻อकͱฒߦͰ΍Γ͖ͬͯΔ • ౰ͨΓલ͕ͩ඼࣭վળͷखΛࢭΊͯ͸͍͚ͳ͍ • ઃܭࢥ૝ͱ iOS / Android

    Ͱͷ࣮૷ͷམͱ͠ॴΛ೗Կʹૉૣ͘ਐΊΔ͔ • ࣦഊ͋Γ͖Ͱ߈ΊΔ • ৽͍͠ߟ͑ํɾٕज़͸ࡲΓ੾ΕΔ·Ͱ࢖͍౗͞ͳ͍ͱݟ͑ͯ͜ͳ͍΋ ͷ͕͋Δ • Web ϑϩϯτΤϯυʹݶΒͣ XAML ͷྺ࢙ͳͲ΋ࢀߟʹͭͭ͠ • ϞόΠϧಛ༗ͷը໘ͷϥΠϑαΠΫϧͱরΒ͠߹Θͤͳ͕Β
  19. ࣌͸ܦͪ ϞόΠϧઐ໳͕4ਓ΋

  20. 2013/3 2014/1 νʔϜൃ଍ 2014/2 2014/4 2014/5 2014/7 νʔϜղࢄ 2015/9 2015/4

    2016/6 2016/7 2016/12 2017/5 ະ஌ͷ4ਓ࣌୅
  21. ૝૾Ҏ্ͷ։ൃ଎౓ • QA λεΫ͕3~4ഒʢ౰ࣾൺʣ • ϦϦʔε͕ελοΫ͢Δࣄଶ • ࠓ·Ͱख͕ճ͍ͬͯͳ͔ͬͨࣗಈԽɾ଍ճΓ੔උ͕ॏཁʹ • ϏϧυόΠφϦੜ੒ɾετΞ΁ͷࣗಈΞοϓϩʔυΛ

    Bitrise ʹ • ఆৗతͳਓྗνΣοΫ͸ E2E ςετ΁
  22. ૝૾Ҏ্ͷ։ൃ଎౓ • QA λεΫ͕3~4ഒʢ౰ࣾൺʣ • ϦϦʔε͕ελοΫ͢Δࣄଶ • ࠓ·Ͱख͕ճ͍ͬͯͳ͔ͬͨࣗಈԽɾ଍ճΓ੔උ͕ॏཁʹ • ϏϧυόΠφϦੜ੒ɾετΞ΁ͷࣗಈΞοϓϩʔυΛ

    Bitrise ʹ • ఆৗతͳਓྗνΣοΫ͸ E2E ςετ΁
  23. None
  24. ࣗಈԽɾࣗಈԽɾࣗಈԽ • BuildVersion ΍ versionName ͷखಈΞοϓσʔτແବ… • lane λεΫԽ •

    iOS: branch ໊ͷόʔδϣϯͰ increment_version_number • Android: branch ໊ͷόʔδϣϯͰ increment_version_name master 10.2.3 Bitrise ͕ Webhook ͯ͠ lane λεΫΛ࣮ߦ
  25. ࣗಈԽɾࣗಈԽɾࣗಈԽ • ϦϦʔε΋ࣗಈԽ͍ͨ͠ͳ… • Android ͸ apk Λ Developer Console

    ͷ α ൛ʹࣗಈΞοϓϩʔυ͢ΔΑ͏ʹ lane Խ • ͋ͱ͸ஈ֊తϦϦʔεͰΫϥογϡϨϙʔτΛݟकΓͭͭ੡඼Խ • ਖ਼ࣾһ͕૿͑·ͨ͠ʂདྷि͔ΒΠϯλʔϯੜདྷ·͢ʂ • iOS ͩͱূ໌ॻͷॳظઃఆͱ͔େม… • fastlane match ͰηοτΞοϓΛࣗಈԽ ✌
  26. ࡶ຿΋ࣗಈԽ

  27. ͓ΘΓʹ

  28. ͜͜·Ͱ߈ΊΒΕΔͷ͸ freee ͕ ֤ΤϯδχΞʹ ࡋྔΛ༩͑ͯ͘Ε͍ͯΔ͔Β

  29. ͔ͩΒͦ͜ ϓϩμΫτͷํ޲ੑ΋ݟਾ্͑ͨͰ ࠓେࣄͳ͜ͱΛ ֤ʑͷ൑அͰऔΓ૊Έ࣮ݱ͢Δ͜ͱ͕Ͱ͖Δ

  30. ͜Ε͔Β΋ ര଎Ͱ߈Ί͍͖ͯ·͢