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

DX(Developer Experience) x React x SPA 気持ちよく開発をするためのフロントエンド開発環境

DX(Developer Experience) x React x SPA 気持ちよく開発をするためのフロントエンド開発環境

Nakagawa Koh

October 16, 2019
Tweet

Other Decks in Technology

Transcript

  1. Copyright ©2019 hokan, Inc. All rights reserved. େ·͔ͳϓϩμΫτ঺հ 4 -ސ٬؅ཧ

    -Ұཡ, ৄࡉ, ސ٬Ϛʔδ, ސ٬෮ݩ -ܖ໿؅ཧ -Ұཡ, ৄࡉ, ܖ໿Πϯϙʔτ -Todo؅ཧ -εέδϡʔϧ؅ཧ -ҙ޲೺Ѳ؅ཧ -ઃఆ, ࣮ࢪ, ؅ཧ -ΞϓϦέʔγϣϯઃఆ -άϧʔϓ؅ཧ, ϝϯόʔ؅ཧ, Ϛελ؅ཧ -…etc
  2. ~ ࠓ೔࿩͢͜ͱ ~ - σΟϨΫτϦߏ੒͔Βґଘؔ܎Λ໌֬ʹ - webpackͷύϑΥʔϚϯενϡʔχϯά - ͓·͚ -

    DLLόϯυϧͰ࢖༻ස౓ͷߴ͍ϥΠϒϥϦΛϏϧυର৅֎ʹ - redux-dynamic-modulesͰɺactionsɺreducer΋moduleʹ಺แ - aliasΛ࡞੒͠ɺimport࣌ͷύε஍ࠈΛεοΩϦ
  3. ~ ࠓ೔࿩͢͜ͱ ~ - σΟϨΫτϦߏ੒͔Βґଘؔ܎Λ໌֬ʹ - webpackͷύϑΥʔϚϯενϡʔχϯά - ͓·͚ -

    DLLόϯυϧͰ࢖༻ස౓ͷߴ͍ϥΠϒϥϦΛϏϧυର৅֎ʹ - redux-dynamic-modulesͰɺactionsɺreducer΋moduleʹ಺แ - aliasΛ࡞੒͠ɺimport࣌ͷύε஍ࠈΛεοΩϦ
  4. Copyright ©2019 hokan, Inc. All rights reserved. σΟϨΫτϦߏ੒ͷݟ௚͠ 17 ྫ͑͹ɺ͜ͷComponent

    ͜ͷComponentͰ͔͠࢖༻͞Ε͍ͯͳ͍ ͜ͷComponentͰ͔͠࢖༻͞Ε͍ͯͳ͍
  5. Copyright ©2019 hokan, Inc. All rights reserved. σΟϨΫτϦߏ੒ͷݟ௚͠ 18 ྫ͑͹ɺ͜ͷComponent

    ͜ͷComponentͰ͔͠࢖༻͞Ε͍ͯͳ͍ ސ٬ҰཡϖʔδͰ͔͠࢖༻͍ͯ͠ͳ͍ ͜ͷComponentͰ͔͠࢖༻͞Ε͍ͯͳ͍
  6. Copyright ©2019 hokan, Inc. All rights reserved. σΟϨΫτϦߏ੒ͷݟ௚͠ 20 -

    ࠶ར༻ੑͷߴ͍atomsɺmoleculesɺorganisms…etc͸ packagesσΟϨΫτϦ഑Լͷcomponentsʹ·ͱΊͯɺ ଞϓϩδΣΫτͰ΋࢖͍ճͤΔΑ͏ʹ͢Δ - ΞϓϦέʔγϣϯґଘ͕ڧ͘࠶ར༻͕೉͍͠΋ͷ͸ ֤ػೳϞδϡʔϧ಺ʹ഑ஔ͢Δ - ࠶ར༻͞ΕΔ΋ͷɺ͞Εͳ͍ComponentΛ໌֬ʹ෼͚ ͯɺӨڹൣғͷେ͖͕͞഑ஔ͞Ε͍ͯΔσΟϨΫτϦ͔ Β΋൑அͰ͖ΔΑ͏ʹ͢Δ
  7. Copyright ©2019 hokan, Inc. All rights reserved. σΟϨΫτϦߏ੒ͷݟ௚͠ 21 -

    ࠶ར༻ੑͷߴ͍atomsɺmoleculesɺorganisms…etc͸ packagesσΟϨΫτϦ഑Լͷcomponentsʹ·ͱΊͯɺ ଞϓϩδΣΫτͰ΋࢖͍ճͤΔΑ͏ʹ͢Δ - ΞϓϦέʔγϣϯґଘ͕ڧ͘࠶ར༻͕೉͍͠΋ͷ͸ ֤ػೳϞδϡʔϧ಺ʹ഑ஔ͢Δ - ࠶ར༻͞ΕΔ΋ͷɺ͞Εͳ͍ComponentΛ໌֬ʹ෼͚ ͯɺӨڹൣғͷେ͖͕͞഑ஔ͞Ε͍ͯΔσΟϨΫτϦ͔ Β΋൑அͰ͖ΔΑ͏ʹ͢Δ
  8. Copyright ©2019 hokan, Inc. All rights reserved. σΟϨΫτϦߏ੒ͷݟ௚͠ 22 -

    ࠶ར༻ੑͷߴ͍atomsɺmoleculesɺorganisms…etc͸ packagesσΟϨΫτϦ഑Լͷcomponentsʹ·ͱΊͯɺ ଞϓϩδΣΫτͰ΋࢖͍ճͤΔΑ͏ʹ͢Δ - ΞϓϦέʔγϣϯґଘ͕ڧ͘࠶ར༻͕೉͍͠΋ͷ͸ ֤ػೳϞδϡʔϧ಺ʹ഑ஔ͢Δ - ࠶ར༻͞ΕΔ΋ͷɺ͞Εͳ͍ComponentΛ໌֬ʹ෼͚ ͯɺӨڹൣғͷେ͖͕͞഑ஔ͞Ε͍ͯΔσΟϨΫτϦ͔ Β΋൑அͰ͖ΔΑ͏ʹ͢Δ
  9. Copyright ©2019 hokan, Inc. All rights reserved. σΟϨΫτϦߏ੒ͷݟ௚͠ 23 -

    ࠶ར༻ੑͷߴ͍atomsɺmoleculesɺorganisms…etc͸ packagesσΟϨΫτϦ഑Լͷcomponentsʹ·ͱΊͯɺ ଞϓϩδΣΫτͰ΋࢖͍ճͤΔΑ͏ʹ͢Δ - ΞϓϦέʔγϣϯґଘ͕ڧ͘࠶ར༻͕೉͍͠΋ͷ͸ ֤ػೳϞδϡʔϧ಺ʹ഑ஔ͢Δ - ࠶ར༻͞ΕΔ΋ͷɺ͞Εͳ͍ComponentΛ໌֬ʹ෼͚ ͯɺӨڹൣғͷେ͖͕͞഑ஔ͞Ε͍ͯΔσΟϨΫτϦ͔ Β΋൑அͰ͖ΔΑ͏ʹ͢Δ
  10. Copyright ©2019 hokan, Inc. All rights reserved. σΟϨΫτϦߏ੒ͷݟ௚͠ 24 -

    ࠶ར༻ੑͷߴ͍atomsɺmoleculesɺorganisms…etc͸ packagesσΟϨΫτϦ഑Լͷcomponentsʹ·ͱΊͯɺ ଞϓϩδΣΫτͰ΋࢖͍ճͤΔΑ͏ʹ͢Δ - ΞϓϦέʔγϣϯґଘ͕ڧ͘࠶ར༻͕೉͍͠΋ͷ͸ ֤ػೳϞδϡʔϧ಺ʹ഑ஔ͢Δ - ࠶ར༻͞ΕΔ΋ͷɺ͞Εͳ͍ComponentΛ໌֬ʹ෼͚ ͯɺӨڹൣғͷେ͖͕͞഑ஔ͞Ε͍ͯΔσΟϨΫτϦ͔ Β΋൑அͰ͖ΔΑ͏ʹ͢Δ ސ٬ҰཡϖʔδͰ͔͠࢖༻͍ͯ͠ͳ͍ Componentͨͪ͸͜͜
  11. ~ ࠓ೔࿩͢͜ͱ ~ - σΟϨΫτϦߏ੒͔Βґଘؔ܎Λ໌֬ʹ - webpackͷύϑΥʔϚϯενϡʔχϯά - ͓·͚ -

    DLLόϯυϧͰ࢖༻ස౓ͷߴ͍ϥΠϒϥϦΛϏϧυର৅֎ʹ - redux-dynamic-modulesͰɺactionsɺreducer΋moduleʹ಺แ - aliasΛ࡞੒͠ɺimport࣌ͷύε஍ࠈΛεοΩϦ
  12. Copyright ©2019 hokan, Inc. All rights reserved. webpackͷύϑΥʔϚϯενϡʔχϯά 26 1ճ໨

    2ճ໨ 3ճ໨ Production Build 4:51.91 2:31.80 2:28.97 Development Build 3:02.79 1:28.87 1:38.34 Before
  13. Copyright ©2019 hokan, Inc. All rights reserved. webpackͷύϑΥʔϚϯενϡʔχϯά 27 1ճ໨

    2ճ໨ 3ճ໨ Production Build 4:51.91 2:31.80 2:28.97 Development Build 3:02.79 1:28.87 1:38.34 Before Chunk਺ଟ͘ͳΔͱɺ ϏϧυύϑΥʔϚϯε͓ͪΔΑ
  14. Copyright ©2019 hokan, Inc. All rights reserved. webpackͷύϑΥʔϚϯενϡʔχϯά 28 1ճ໨

    2ճ໨ 3ճ໨ Production Build 4:51.91 → 3:35.98 2:31.80 → 1:43.90 2:28.97 → 1:39.57 Development Build 3:02.79 → 2:03.73 1:28.87 → 1:06.30 1:38.34 → 1:07.52 After: ػೳϞδϡʔϧ͝ͱʹCodeSpliteͱLazyLoad - ෆཁͳCodeSplite͞Ε͍ͯͨ෦෼Λमਖ਼: 52 js chunks → 23 js chunks
  15. Copyright ©2019 hokan, Inc. All rights reserved. webpackͷύϑΥʔϚϯενϡʔχϯά 29 1ճ໨

    2ճ໨ 3ճ໨ Production Build 3:08.93 1:39.87 1:00.54 Development Build 2:04.49 1:06.30 → 00:28.78 1:07.52 → 00:25.93 After: HardSourceWebpackPluginͷಋೖͱCacheGroupઃఆ -Ϗϧυ݁ՌΛHardSourceWebpackPlugin΍CacheGroupͰcache
  16. Copyright ©2019 hokan, Inc. All rights reserved. webpackͷύϑΥʔϚϯενϡʔχϯά 30 1ճ໨

    2ճ໨ 3ճ໨ Production Build 3:08.93 1:39.87 1:00.54 Development Build 2:04.49 00:28.78 00:25.93 After: HardSourceWebpackPluginͷಋೖͱCacheGroupઃఆ 1ճ໨ 2ճ໨ 3ճ໨ Production Build 4:51.91 2:31.80 2:28.97 Development Build 3:02.79 1:28.87 1:38.34 Before
  17. Copyright ©2019 hokan, Inc. All rights reserved. webpackͷύϑΥʔϚϯενϡʔχϯά 31 1ճ໨

    2ճ໨ 3ճ໨ Production Build 3:08.93 1:39.87 1:00.54 Development Build 2:04.49 00:28.78 00:25.93 After: HardSourceWebpackPluginͷಋೖͱCacheGroupઃఆ 1ճ໨ 2ճ໨ 3ճ໨ Production Build 4:51.91 2:31.80 2:28.97 Development Build 3:02.79 1:28.87 1:38.34 Before
  18. Copyright ©2019 hokan, Inc. All rights reserved. webpackͷύϑΥʔϚϯενϡʔχϯά 32 1ճ໨

    2ճ໨ 3ճ໨ Production Build 3:08.93 1:39.87 1:00.54 Development Build 2:04.49 00:28.78 00:25.93 After: HardSourceWebpackPluginͷಋೖͱCacheGroupઃఆ 1ճ໨ 2ճ໨ 3ճ໨ Production Build 4:51.91 2:31.80 2:28.97 Development Build 3:02.79 1:28.87 1:38.34 Before
  19. Copyright ©2019 hokan, Inc. All rights reserved. webpackͷύϑΥʔϚϯενϡʔχϯά 33 1ճ໨

    2ճ໨ 3ճ໨ Production Build 3:08.93 1:39.87 1:00.54 Development Build 2:04.49 00:28.78 00:25.93 After: HardSourceWebpackPluginͷಋೖͱCacheGroupઃఆ 1ճ໨ 2ճ໨ 3ճ໨ Production Build 4:51.91 2:31.80 2:28.97 Development Build 3:02.79 1:28.87 1:38.34 Before