実録LINEスタンププレミアム開発の現場 / Development for LINE Sticker Premium

実録LINEスタンププレミアム開発の現場 / Development for LINE Sticker Premium

2020/5/22に行われたLINE Developer Meetup #63 での登壇資料です
https://line.connpass.com/event/174730/

53850955f15249a1a9dc49df6113e400?s=128

LINE Developers

May 22, 2020
Tweet

Transcript

  1. ࣮࿥-*/&ελϯϓϓϨϛΞϜ։ൃͷݱ৔ LINE Fukuoka ։ൃ1ࣨ ஛Լ लଇ 2020/05/22 LINE Developer Meetup

    #63
  2. ࣗݾ঺հ • LINE Fukuoka - LINE client νʔϜ Engineering Manager

    • @taketin
  3. ΞδΣϯμ • ஍ํϒϥϯνͰ͋Δ LINE Fukuoka ͷ؆୯ͳྺ࢙ͱɺͲͷ༷ʹ LINE ৽ػೳ։ൃΛߦ͍ͬͯΔ͔ • LINE

    ৽ػೳͷ։ൃϑϩʔͱΫϥΠΞϯτͷ։ൃϓϩηεʹ͍ͭͯ • αϒεΫϦϓγϣϯαʔϏε։ൃͰಘͨ஌ݟ • ՝୊ʹ͍ͭͯ
  4. ஍ํϒϥϯνͰ͋Δ LINE Fukuoka ͷ ؆୯ͳྺ࢙ͱɺͲͷ༷ʹ LINE ৽ػೳ ։ൃΛߦ͍ͬͯΔ͔

  5. • 2009 - NHST Japanגࣜձࣾ ෱Ԭ ηϯλʔ ઃཱ • 2011

    - NHN Service Technology Corp. ʹ঎߸มߋ
  6. • 2009 - NHST Japanגࣜձࣾ ෱Ԭ ηϯλʔ ઃཱ • 2011

    - LINEגࣜձࣾͷ100ˋࢠձ ࣾͱͯ͠ɺLINE FukuokaΛઃཱɻ • 2011೥6݄23೔ LINE ϦϦʔε • 2013 - LINE Fukuoka ʹ঎߸มߋ • 2014 - ։ൃ૊৫্ཱ͕ͪΓ
  7. 2014 • ࣾһ਺ 400 ऑ • ΤϯδχΞ਺ਓ • ։ൃؔ༩αʔϏε਺1~2

  8. ݱࡏ • ࣾһ਺ 1000 ௒ • ΤϯδχΞ 100ਓऑ • ։ൃؔ༩αʔϏε਺8

  9. 2015~ Shop team

  10. None
  11. SHOP part

  12. SHOP part • 2015 - αʔό։ൃ։࢝ • 2017 - ΫϥΠΞϯτ։ൃ։࢝

  13. SHOP part • Client νʔϜࠃ੶ • ೔ຊɾؖࠃɾதࠃɾ୆࿷ɾυΠπ • ίϛϡχέʔγϣϯݴޠ •

    ೔ຊޠɾӳޠ
  14. SHOP part 2017 - 4ਓ ↓ 2019 - 13ਓ

  15. SHOP part 2018 - LINE ֆจࣈ 2019 - ΧελϜελϯϓ -

    LINE ελϯϓ ϓϨϛΞϜ 2020 - ϝοηʔδελϯϓ
  16. LINE ৽ػೳͷ։ൃϑϩʔͱ ΫϥΠΞϯτͷ։ൃϓϩηεʹ͍ͭͯ

  17. LINE ৽ػೳͷ։ൃϑϩʔ

  18. LINE ελϯϓ ϓϨϛΞϜ

  19. None
  20. Specification Prototyping Discussion the spec between a Planner and an

    Engineer.
  21. Kick Off meeting Planner Engineer Data Scientist UIɾUX designer QA

    Project Manager
  22. Implementation range Chat room Product detail page Setting page

  23. Estimation - Planning Poker

  24. Estimation - Planning Poker

  25. Progress tracking JIRA Gantt chart

  26. Development process Schedule change Sprint Review

  27. QA phase Pre-QA 
 (Sanity check)
 2 weeks Main-QA 


    2 weeks
  28. Release!

  29. ΫϥΠΞϯτͷ։ൃϓϩηεʹ͍ͭͯ

  30. KOREA/BUNDANG TAIWAN/TAIPEI TOKYO FUKUOKA

  31. Source Code Kotlin 55.2%
 1,999,915 lines of code 194,298 commits

    Swift 69.6%
 2,018,070 lines of code 175,416 commits ※ 5্݄०ݱࡏ iOS Android
  32. Branching strategy Master release/x.x.x Bugfix Merge Feature develop QA start

    Release AutoMerge by CI Guard with Feature flag if a big project
  33. Branching strategy Master release/x.x.x Bugfix Merge Feature develop QA start

    Release AutoMerge by CI Guard with Feature flag if a big project
  34. Branching strategy Master release/x.x.x Bugfix Merge Feature develop QA start

    Release Guard with Feature flag if a big project AutoMerge by CI
  35. Branching strategy Master Release Guard with Feature flag if a

    big project If we are using Feature branch…
  36. Branching strategy Master Release Guard with Feature flag if a

    big project If we are using Feature branch…
  37. Branching strategy Master Release Guard with Feature flag if a

    big project • Merge costs can be eliminated. • Release timing can be controllable more easily. • Shares the halfway features to the other developers. • Decreasing readability. Cons Pros
  38. Branching strategy https://speakerdeck.com/line_developers/flag-based-feature- management https://github.com/line/feature-flag-android

  39. Branching strategy Master release/x.x.x Bugfix AutoMerge by CI Merge Feature

    develop QA start Release Guard with Feature flag if a big project
  40. Branching strategy Master release/x.x.x Bugfix AutoMerge by CI Merge Feature

    develop QA start Release Guard with Feature flag if a big project
  41. Conflict notification by LINE

  42. Conflict notification by LINE

  43. Review by the code owners

  44. Branching strategy Master release/x.x.x Bugfix Merge Feature develop QA start

    Release AutoMerge by CI Guard with Feature flag if a big project
  45. Branching strategy Master release/x.x.x Bugfix Merge Feature develop QA start

    Release AutoMerge by CI 2 weeks 2 weeks Guard with Feature flag if a big project
  46. Release train Every 2 weeks

  47. αϒεΫϦϓγϣϯαʔϏε։ൃͰ ಘͨ஌ݟ

  48. Subscription service on multi platform iOS Android Web

  49. #1 UpdateDate, BillingDate

  50. #1 UpdateDate, BillingDate ɹiOS • 1 week • 1 month

    • 2 months • 3 months • 6 months • 1 year ɹAndroid • 1 week • 1 month • 3 months • 6 months • 1 year Subscription Period
  51. #1 UpdateDate, BillingDate ߋ৽ • 11/30 • 12/30 • 1/30

    • 2/28 ߪೖ 11/30
  52. #1 UpdateDate, BillingDate ߋ৽ • 11/30 • 12/30 • 1/30

    • 2/28 ੥ٻ • 12/1 • 12/31 • 1/31 • 3/1 ߪೖ 11/30
  53. #1 UpdateDate, BillingDate ߋ৽ • 11/30 • 12/30 • 1/30

    • 2/28 ੥ٻ • 12/1 • 12/31 • 1/31 • 3/1 ߪೖ 11/30
  54. #1 UpdateDate, BillingDate ܾࡁର৅ظؒΛ໌ࣔ͢Δ

  55. #2 Different platform between paying and using iOS Android

  56. #2 Different platform between paying and using iOS Android

  57. #2 Different platform between paying and using

  58. #3 “Subscription Group” on iOS https://developer.apple.com/jp/app-store/subscriptions/

  59. #3 “Subscription Group” on iOS άϨʔυ෼͚͞Ε͍ͯͯɺ ॏෳߪೖͰ͖ͳ͍΋ͷ • ϓϨϛΞϜ •

    ϊʔϚϧ • ϥΠτ
  60. #3 “Subscription Group” on iOS άϨʔυ෼͚͞Ε͍ͯͯɺ ॏෳߪೖͰ͖ͳ͍΋ͷ • ϓϨϛΞϜ •

    ϊʔϚϧ • ϥΠτ ॏෳߪೖͰ͖Δ΋ͷ ʢ഑৴͞ΕΔ൪૊͕ҧ͏ͳͲʣ • νϟϯωϧ̍ • νϟϯωϧ̎ • νϟϯωϧ̏
  61. #3 “Subscription Group” on iOS άϨʔυ෼͚͞Ε͍ͯͯɺ ॏෳߪೖͰ͖ͳ͍΋ͷ • ϓϨϛΞϜ •

    ϊʔϚϧ • ϥΠτ ॏෳߪೖͰ͖Δ΋ͷ ʢ഑৴͞ΕΔ൪૊͕ҧ͏ͳͲʣ • νϟϯωϧ̍ • νϟϯωϧ̎ • νϟϯωϧ̏ Subscription Groups
  62. #3 “Subscription Group” on iOS άϨʔυ෼͚͞Ε͍ͯͯɺ ॏෳߪೖՄೳͰ͖ͳ͍΋ͷ • ϓϨϛΞϜ •

    ϊʔϚϧ • ϥΠτ Subscription Groups
  63. #3 “Subscription Group” on iOS άϨʔυ෼͚͞Ε͍ͯͯɺ ॏෳߪೖͰ͖ͳ͍΋ͷ • ϓϨϛΞϜ •

    ϊʔϚϧ • ϥΠτ Guideline 3.1.2 - Business - Payments - Subscriptions We noticed that the different subscription products of your auto-renewable subscriptions were created as separate in- app purchase products, rather than as different subscription products within the same subscription group. Subscription Groups
  64. #4 “Upgrade”, “Downgrade” and “Crossgrade” άϨʔυ෼͚͞Ε͍ͯͯɺॏ ෳߪೖͰ͖ͳ͍΋ͷ • ϓϨϛΞϜ •

    ϊʔϚϧ (1ϲ݄) • ϊʔϚϧ (1೥) • ϥΠτ Downgrade Upgrade Crossgrade
  65. #4 “Upgrade”, “Downgrade” and “Crossgrade” Android iOS https://developer.android.com/google/play/billing/billing_subscriptions#Allow-upgra https://developer.apple.com/jp/app-store/subscriptions/#ranking

  66. #4 “Upgrade”, “Downgrade” and “Crossgrade” Android iOS https://developer.android.com/google/play/billing/billing_subscriptions#Allow-upgra https://developer.apple.com/jp/app-store/subscriptions/#ranking ద༻λΠϛϯά͕ݻఆ

    ʮൺྫ഑෼ϞʔυʯͷઃఆͰ αʔϏεଆ͕ద༻λΠϛϯάΛબ୒Մೳ
  67. ՝୊ʹ͍ͭͯ

  68. ૊৫ͷ՝୊ Planner Designer Engineer QA

  69. ૊৫ͷ՝୊ Planner Designer Engineer QA λεΫϑΥʔε

  70. ૊৫ͷ՝୊

  71. ૊৫ͷ՝୊ https://speakerdeck.com/line_devday2019/project-management-and-agile-strategies-and-examples-of-enterprise-wide-organization

  72. DX (Developer Experience) ΧΠθϯ Over 10 min for clean build…

  73. DX (Developer Experience) ΧΠθϯ Modularization (separate by framework, library module)

  74. DX (Developer Experience) ΧΠθϯ https://speakerdeck.com/line_devday2019/growing-line-for-ios https://engineering.linecorp.com/ja/blog/lineapp-android-team/

  75. None