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

短期間でやり遂げるための、 大規模リニューアルの進め方

962920d4608365b332d0c65f9b3e7ba5?s=47 kosako
September 16, 2017

短期間でやり遂げるための、 大規模リニューアルの進め方

iOSDCでの発表資料
Rettyでは2年半ぶりに大規模なリニューアルを行っています。
まだリリースはされていませんが、言語をObjective-cからswift4.0へ移行したり、アーキテクチャの刷新も短期間で行おうとしています。
やり遂げるためにどんなことをやっているのか、リニューアルなど大きな開発で起きる仕様の変更による手戻りの発生への対応、全員の共通認識をどうやって合わせてチームビルディングを行っていくかなどをお話します。

962920d4608365b332d0c65f9b3e7ba5?s=128

kosako

September 16, 2017
Tweet

Transcript

  1. ୹ظؒͰ΍Γ਱͛ΔͨΊͷɺ େن໛ϦχϡʔΞϧͷਐΊํ  "LJIJSP,PTBLP

  2. ࠃ಺/P໊࣮άϧϝαʔϏε3FUUZͷӡӦ ೥ઃཱ XFCͱΞϓϦͰαʔϏεల։ ݄ؒສ66 ετϥοϓεϙϯαʔ΍ͬͯ·͢

  3. w "LJIJSP,PTBLP w &OHJOFFSJOH.BOBHFS݉͋ͳ͝୲౰ w J04ϦχϡʔΞϧνʔϜ w 4XJGU1)1"84 About Me

  4. w ݱࡏ3FUUZͷΞϓϦΛϦχϡʔΞϧத w ͲͷΑ͏ʹܭըΛཱ࣮ͯͯߦ͍ͯ͠Δ͔ w νʔϜϏϧσΟϯά ࠓ೔ͷ಺༰

  5. w σβΠϯతͳͱ͜Ζ͸৮Ε·ͤΜ w ٕज़తͳͱ͜Ζ΋͋·Γ৮Ε·ͤΜ ࠓ೔࿩͞ͳ͍͜ͱ ٕज़త͸࿩͸ͪ͜ΒͰ 5SBDL#ᓎҪ༸Ұ࿠ ΞϓϦϦχϡʔΞϧͰಘͨ3FEVYͷ4UBUFઃܭͷ͓࿩

  6. ͳͥϦχϡʔΞϧ͢Δͷ͔ʁ

  7.  ੒௕  ϐϙου  ௠෗Խ  ϦϑΝΫλϦϯά  ηΩϡϦςΟ

    ϦχϡʔΞϧ͢Δཧ༝
  8. Ͳ͏ϦχϡʔΞϧ͢Δ͔ʁ

  9. w 8&#ͷΑ͏ʹ෦෼తʹͰ͖ͳ͍ w Ұ౓ग़͢ͱҾͬࠐΊΔ͜ͱ͕೉͍͠ w ΞϓϦͷϦχϡʔΞϧ͸೉қ౓͕ߴ͍ લఏ

  10.  ঃʑʹ  Ұؾʹ௕ظ͔͚ؒͯ  Ұؾʹ୹ظؒͰ  ϓϩμΫτΛ෼͚ͯ ϦχϡʔΞϧͷλΠϓ

  11. ঃʑʹϦχϡʔΞϧ͢Δ ஈ֊తʹ6*΍ΞʔΩςΫνϟΛมߋ ϝϦοτ w ϑΟʔυόοΫΛಘͳ͕ΒਐΊΒΕΔ w ϢʔβʔετϨεΛগͳ͘Ͱ͖Δ w Ϣʔβʔ͞ΜʹϓϩμΫτΛಧ͚Δ·Ͱૣ͍ w

    ࣦഊ͠ʹ͍͘
  12. ঃʑʹϦχϡʔΞϧ͢Δ ஈ֊తʹ6*΍ΞʔΩςΫνϟΛมߋ σϝϦοτ w ΰʔϧ͕ݟ͑ʹ͍͘ɺᐆດʹͳΓ΍͍͢ w ϦχϡʔΞϧൣғ͕େ͖͍ͱഁ୼͢ΔՄೳੑ w େ୾ͳ͜ͱ͕΍Γʹ͍͘ w

    ࢪࡦͱίϯϑϦΫτ
  13. Ұؾʹ௕ظ͔͚ؒͯϦχϡʔΞϧ͢Δ ൒೥ʙҰ೥Ҏ্͔͚ͯ৽ػೳ΋࡞ΓࠐΉ ϝϦοτ w ༨༟Λ΋ͬͯऔΓ૊ΊΔ w Ծઆݕূ΍Ϣʔβʔςετͷ͕࣌ؒͱΓ΍͍͢ w ࡉ෦·Ͱ࡞ΓࠐΉ͕࣌ؒ͋Δ w

    େ͖ͳϏδϣϯ΍ػೳΛୡ੒Ͱ͖Δ
  14. Ұؾʹ௕ظ͔͚ؒͯϦχϡʔΞϧ͢Δ ൒೥ʙҰ೥Ҏ্͔͚ͯ৽ػೳ΋࡞ΓࠐΉ σϝϦοτ w Ұൃউෛʹͳͬͯ͠·͏ w ࡞͍ͬͯΔؒʹτϨϯυ͕มΘͬͯ͠·͏ w લͷΞϓϦͱػೳࠩ෼͕ଟ͘ग़ͯ͠·͏ w

    ௕ظʹ౉ͬͯࢪࡦΛࢭΊΔ͜ͱʹͳΔ w αάϥμϑΝϛϦΞԽͯ͠͠·͏ةݥੑ
  15. Ұؾʹ୹ظؒͰϦχϡʔΞϧ͢Δ ൒೥Ҏ಺Ͱϕʔεͷ෦෼ͷΈ࡞ΓࠐΉ ϝϦοτ w ࢪࡦΛࢭΊΔظؒΛ୹͘Ͱ͖Δ w ϝϯόʔΛ͋·Γ૿΍͞ͳͯ͘΋Α͍ w લͷΞϓϦͱػೳࠩ෼͕ग़ʹ͍͘ w

    ϦχϡʔΞϧޙʹࢪࡦΛճ͍ܾͯ͘͠அ͕Ͱ͖Δ
  16. Ұؾʹ୹ظؒͰϦχϡʔΞϧ͢Δ ൒೥Ҏ಺Ͱϕʔεͷ෦෼ͷΈ࡞ΓࠐΉ σϝϦοτ w ৽ػೳ͸΄ͱΜͲೖΕΒΕͳ͍ w ୹ظతͳΠϯύΫτΛظ଴Ͱ͖ͳ͍ w Ծઆݕূ΍Ϣʔβʔςετͷ͕࣌ؒͱΓʹ͍͘ w

    ೲಘͯ͠΋Β͍ʹ͍͘
  17. ϓϩμΫτΛΘ͚ͯϦχϡʔΞϧ͢Δ ͭͷΞϓϦΛग़ͨ͠ঢ়ଶͰҠߦ͢Δ ϝϦοτ w ࢥ͍੾ͬͨ͜ͱ͕Ͱ͖Δ w ػೳͷ࡟আͳͲ͕΍Γ΍͍͢ w ঃʑʹҠߦ͢Δ͜ͱ͕Ͱ͖Δ

  18. ϓϩμΫτΛΘ͚ͯϦχϡʔΞϧ͢Δ ͭͷΞϓϦΛग़ͨ͠ঢ়ଶͰҠߦ͢Δ σϝϦοτ w ։ൃϦιʔε͕ଟ͔͔͘Δ w ͭͷΞϓϦΛอक͢Δظ͕ؒඞཁ w Ҡߦͯ͠΋Β͑ͳ͍Ϣʔβʔ͞ΜͷରԠ͕େม w

    ධՁͳͲ͕Ϧηοτ͞ΕΔ
  19. ঃʑʹ ௕ظ ୹ظ ผΞϓϦ ظؒ தظʙ௕ظ ௕ظ ୹ظ தظʙ௕ظ ӨڹϦεΫ

    ௿ େ த ௿ λΠϓ ੒௕ ϦϑΝΫλ
 ηΩϡϦςΟ ੒௕
 ϐϙου
 ௠෗Խ ੒௕
 ௠෗Խ
 ηΩϡϦςΟ ϐϙου
 ௠෗Խ
 ੒௕
  20. 3FUUZͷϦχϡʔΞϧ͸

  21. w ೥݄ʹϦχϡʔΞϧ w ೥൒Ͱ໿ճϦϦʔε w ΄΅0CKFDUJWF$  +BWB4DSJQU  w

    ϑϩϯτ͸8FC7JFXϝΠϯ w -JOF w 7JFX$POUSPMMFS ݱঢ়ͷΞϓϦ
  22. w 6*ͷ௠෗Խ w 8FC7JFXͷύϑΥʔϚϯε໰୊ w 8FC7JFXىҼͷΑ͘Θ͔Βͳ͍Ϋϥογϡ ϝϞϦ໰୊  w ଟ͗͢Δػೳ

    w ݹ͍ΞʔΩςΫνϟ w αʔόʔͱෳࡶʹབྷΈ߹ͬͨߏ଄ w +BWBTDSJQUͱ0CKFDUJWF$ΛߦͬͨΓདྷͨΓ͢ΔͨΊσόοάͮ͠Β͍ w ࢪࡦͷޙย෇͚͕͞Ε͍ͯͳ͍ w ৽͍͠ࢪࡦΛ΍ΓͮΒ͍ w FUDʜ ๊͍͑ͯΔ՝୊
  23. w άϩʔε w ٕज़৘ใઃܭෛ࠴ͷฦࡁ ϦχϡʔΞϧ͍ͨ͠ཧ༝

  24. w ࢭΊΒΕͳ͍ࢪࡦ w ٻΊΒΕΔ੒௕ w ΞαΠϯͰ͖Δϝϯόʔ w ଞϓϩδΣΫτͱͷؔ܎ੑ ੍໿

  25. Ұؾʹ୹ظؒͰϦχϡʔΞϧ ݁࿦

  26. ϦχϡʔΞϧ͋Δ͋Δ

  27. w ͋Ε΋΍Γ͍ͨ͜Ε΋΍Γ͍ͨ w ޙʹͳͬͯɺ΍ͬͺΓ͜Ε΋ೖΕΑ͏ w ΍ͬͺΓͬͪ͜ͷ΄͏͕ྑ͘ͳ͍ʁ ๲ΒΉ࢓༷

  28. w ͬͪ͜΋ͪΐͬͱख఻ͬͯΑ w ͜Ε͙Β͍Ͱ͍͚ΔͰ͠ΐʁ w ͦΜͳʹඞཁͳͷʁ w ͦͷ͏ͪΞαΠϯ͢Δ͔Β଴ͬͯͯ ଍Γͳ͍ਓख

  29. w ୭͔ͭΕͯ͘Ε͹ͳΜͱ͔ͳΔʁ w ޙԿਓඞཁʁ ͋ͱͰ૿΍͞ΕΔਓख

  30. w όοϑΝΛߟྀ͍ͯ͠ͳ͍ w Ұ೔࣌ؒίʔυΛॻ͚Δͱࢥ͍ͬͯΔ w ݟ͑ͳ͍λεΫ͕͋Δ͜ͱΛߟྀ͠ͳ͍ w ࢓༷ܾఆ͕஗Εͯ΋޻਺ௐ੔͠ͳ͍ ݟੵ΋Γͷෆਖ਼֬͞

  31. Ͳ͏ղܾ͍͔ͯ͘͠ʁ

  32. w 5FBN w 4DPQF w %FTJHO%PD w *OUFSGBDF(VJEFMJOF ϦχϡʔΞϧΛఆٛ͢Δ

  33. w .BOBHFS w %FTJHOFS w &OHJOFFSJOH.BOBHFS w &OHJOFFS J04"1*'SPOU Team

  34. w ৽ػೳ͸Ͱ͖Δ͚ͩ૿΍͞ͳ͍ w ΍Βͳ͍͜ͱΛ໌֬ʹ w ܾΊΔਓΛ໌֬ʹ w ໰୊͕ى͖ͨͱ͖ͷҙࢥܾఆऀΛܾΊΔ Scope

  35. Design Doc͸ɺΤϯδχΞ͕͜Ε͔Β։ൃ͠Α͏ͱ͢Δ ιϑτ΢ΣΞઃܭͷجຊతͳཁ఺――ԿΛʢWhatʣɾԿ ͷͨΊʹʢWhyʣɾͲͷΑ͏ʹʢHowʣ࡞Δͷ͔ʁ―― Λઆ໌͢ΔͨΊʹॻ͘υΩϡϝϯτͰ͢ɻཁ఺͚ͩΛॻ ͍ͯɺͦΕҎ্ৄࡉͳ͜ͱ͸ʰॻ͖ա͗ͳ͍ʱ͜ͱ͕ॏ ཁͰ͢ɻݱ୅ͷ։ൃελΠϧͰ͸ɺৄࡉͳ৘ใΛಘΔʹ ͸ʰιʔείʔυΛݟͨํ͕ૣ͍ʱ͔ΒͰ͢ɻ Design Doc

    ࢒ۀ΋ݮΒͤΔ!? ্ڃΤϯδχΞʹͳΔͨΊͷDesign Doc௒ೖ໳ IUUQXXXBUNBSLJUDPKQBJUBSUJDMFTOFXTIUNM
  36. Design Doc (໨࣍) w ໨త w ໨ඪ w എܠ w

    ཁٻ࢓༷ w ݕ౼ࣄ߲ w ४උظؒŋ಺༰ w લఏ w ϦϦʔε࣌ظ w ϦϙδτϦ w $*UPPM w ։ൃ؀ڥ w CSBODIઓུ w ϓϩδΣΫτ؅ཧ w ςετ w ηΩϡϦςΟ w 04ݴޠ౳ w OVMMBCMFۭσʔλͷߟ͑ํʹ͍ͭͯ w σβΠϯ w ։ൃΨΠυϥΠϯ w ΞʔΩςΫνϟʔ w ը໘ભҠ w WJFXͷઃܭ w ϥΠϒϥϦ w ϝϯόʔ w ٞࣄ࿥ŋϝϞ౳ w ࢀߟϦϯΫ w ฤूཤྺ
  37. Design Doc w ϓϩμΫτʹΑΓϑΥʔϚοτ͸มΘΔ w αϯϓϧΛΈͳ͕Βඞཁͳ΋ͷ͚ͩ·ͣ͸ॻ͘ɺޙͰ ଍͍ͯ͘͠ͱΑ͍ w ͜Ε͔Β࡞͍ͬͯ͘΋ͷͷٕज़తࢦ਑ΛϝϯόʔͰڞ ༗Ͱ͖ͨ

  38. • ίʔσΟϯάن໿ͱ͍ۙߟ͑ํΛUI/UXʹ΋࠾༻͢Δ • Ұ؏ͨ͠UIΛఏڙͰ͖ΔΑ͏ʹ͢Δ • OS४ڌͷΠϯλʔϑΣΠεΛॏࢹ • ཧղ͠΍͍͢UIΛఏڙ • ໎ͬͨͱ͖ͷڌΓॴ

    Retty iOS Interface Guidelines
  39. Example Swipe & Gesture • ԣεΫϩʔϧͱॎεΫϩʔϧ͸ۃྗࠞͥͳ͍Α͏ʹ͢Δ • TableViewʹର͢Δૢ࡞͸swipeͰ΍ͬͯ΋Α͍(࡟আ౳) • Ϟʔμϧతͳը໘Λด͡ΔࡍʹԼεϫΠϓͰด͡Δ͜ͱ͸ͯ͠Α͍

    • δΣενϟʔͰͷૢ࡞͸ෳࡶʹͳΔͷͰجຊߦΘͳ͍Α͏ʹ͢Δ • actionૢ࡞ΛswipeͰ΍Δ৔߹͸ɺ୅ସखஈΛ༻ҙ͢Δ
  40. w 3FEVY w 4%, w 3FBDU/BUJWF ΞʔΩςΫνϟ

  41. w େ࿮͸τοϓμ΢ϯͰఏࣔ w σΟεΧογϣϯΛܾͯ͠ఆ w ࣮ࡍͷ࣮૷ํࣜͰ໰୊͕Ͱ͖ͨͱ͖͸ɺ ͠͹Β͘΍ͬͯΈͯશһͰ࠶ධՁ w ໰୊͕Ͱ͖ͨͱ͖͸౎౓࠶ݕ౼ ΞʔΩςΫνϟͷܾఆ

  42. w #BDLMPH w 1SPUU w 4LFUDI w 2JJUB5FBN w 4MBDL

    πʔϧ
  43. w Ͱ͖Δ͚ͩૣ͘࢖͑Δ΋ͷΛ࡞Δ w ։ൃελʔτҰ݄Ͱυοάϑʔυ൛࡞੒ w ࢖͍ͳ͕Β࡞Δ υοάϑʔυ

  44. ։ൃ߹॓JOळాେؗ

  45. w ܦӦ૚ͱ w Ϛωʔδϟʔͱ w νʔϜϝϯόʔͱ w Ұఆظؒ͝ͱʹ܁Γฦ͢ w ͦΕͰ΋ೝ͕ࣝͣΕΔ͜ͱ͸͋ΔͷͰɺͭ͘͜͠܁Γ

    ฦ͕͠େࣄ ߹ҙܗ੒
  46. w ஈ֊తʹݟੵ΋ΓΛ͢Δ w ࠷ॳ͔Β׬શΛٻΊͳ͍ w ࠷ॳ͸ߥ͘ݟੵ΋Δ w ͜ͷ࣌఺Ͱ޻਺͗Γ͗Γͩͱͦͷ࣌఺Ͱ065 w ݟ͑ͯͳ͍λεΫ͕ഒग़Δ͜ͱΛ๨Εͳ͍

    w ຏ͖ࠐΈͷ࣌ؒΛߟྀ͢Δ w Ұ݄͝ͱʹݟੵ΋ΓΛ΍Γ௚͢ ݟੵ΋Γ
  47. w ࢓༷΍σβΠϯ͸େ࿮͕ܾ·Δͱ͜Ζ·Ͱ͸গਓ਺Ͱ ҙࢥܾఆΛߦ͏ w େ࿮͕ܾ·ͬͨ͋ͱ͸ɺࡉ͔͍఺΍ٙ໰఺͸࣮૷୲౰ ऀͱσβΠφʔɺϓϥϯφʔͰٞ࿦ͯ͠ҙࢥܾఆ w ΤϯδχΞ͚ͩͰ׬݁͢Δ΋ͷ͸ୟ͖͚ͩ༻ҙͯ͠Έ ΜͳͰٞ࿦ ҙࢥܾఆ

  48. w ΤϯδχΞͱσβΠφʔϓϥϯφʔͰΞ΢τϓοτͷϨϕϧͱΠϝʔδ͕ҟͳΔ w ͲΕ͘Β͍ͷΫΦϦςΟͷ߹ҙ w ༳ΕΔ΋ͷʹରͯ͠ɺͦΕΛݟࠐΜͩόοϑΝͱεέδϡʔϧΛߟ͑Δ w ΍Γ͗͢Δͱରཱߏ଄ʹͳΔ w ͲΜͳʹؤுͬͯ΋࠷ޙ͸ΨπΨπ࢓༷Λ࡟Δ͜ͱʹͳΔ

    ՝୊
  49. aࠓ೔ͷϙΠϯτʂ ϦχϡʔΞϧͷఆٛΛ͠Α͏ ڌΓॴͳΔυΩϡϝϯτΛ੔උ͠Α͏ ఆظతͳ߹ҙܗ੒େࣄ 1 2 3

  50. ऴΘΓ ϦϦʔεʹ޲͚ͯؤுΓ·͢ʂ
 ͝ਗ਼ௌ͍͖ͨͩ͋Γ͕ͱ͏͍͟͝·ͨ͠