ã°ããŒãã«éçºããŒã åããããã³ããšã³ãã®ãã€ã¯ãããã³ããšã³ãã«ãããã¢ãžã¥ãŒã«è§£æ±ºãšã¢ããªéäŸåé¢ä¿ç®¡çã解説ããå æ¬çã¬ã€ãã
ããã³ããšã³ããã€ã¯ãããã³ããšã³ãã®ã¢ãžã¥ãŒã«è§£æ±ºïŒã¢ããªéäŸåé¢ä¿ç®¡çããã¹ã¿ãŒãã
ãã€ã¯ãããã³ããšã³ãã®æ¡çšã¯ãå€§èŠæš¡ãªWebã¢ããªã±ãŒã·ã§ã³ã®æ§ç¯ãšä¿å®ã®æ¹æ³ã«é©åœããããããŸãããã¢ããªã·ãã¯ãªããã³ããšã³ãã¢ããªã±ãŒã·ã§ã³ããç¬ç«ããŠãããã€å¯èœãªããå°ããªåäœã«åå²ããããšã§ãéçºããŒã ã¯ããé«ãä¿ææ§ãã¹ã±ãŒã©ããªãã£ããããŠããŒã ã®èªåŸæ§ãéæã§ããŸãããããããã€ã¯ãããã³ããšã³ãã®æ°ãå¢ããã«ã€ããŠããããã®ç¬ç«ããã¢ããªã±ãŒã·ã§ã³éã®äŸåé¢ä¿ã管çããè€éããå¢å€§ããŸããããã§éèŠã«ãªãã®ããããã³ããšã³ããã€ã¯ãããã³ããšã³ãã®ã¢ãžã¥ãŒã«è§£æ±ºãšå ç¢ãªã¢ããªéäŸåé¢ä¿ç®¡çã§ãã
ã°ããŒãã«ãªãªãŒãã£ãšã³ã¹ã«ãšã£ãŠããããã®æŠå¿µãçè§£ããããšã¯æ¥µããŠéèŠã§ããç°ãªãå°åãåžå ŽãããŒã ã¯ãããããç°ãªãæè¡ã¹ã¿ãã¯ãèŠå¶èŠä»¶ãéçºææ³ãæã£ãŠããå¯èœæ§ããããŸãã广çãªã¢ãžã¥ãŒã«è§£æ±ºã¯ãå°ççãªåæ£ãããŒã ã®å°éåéã«é¢ãããããã€ã¯ãããã³ããšã³ããç«¶åãããã©ãŒãã³ã¹ã®ããã«ããã¯ãåŒãèµ·ããããšãªããã·ãŒã ã¬ã¹ã«çžäºäœçšãããªãœãŒã¹ãå ±æã§ããããã«ããŸãã
ãã€ã¯ãããã³ããšã³ãã®ç¶æ³ãšäŸåé¢ä¿ã®èª²é¡
ãã€ã¯ãããã³ããšã³ãã¯ãæ¬è³ªçã«ãåããã³ããšã³ãã¢ããªã±ãŒã·ã§ã³ãåå¥ã®ãç¬ç«ããŠãããã€å¯èœãªåäœãšããŠæ±ããŸãããã®ã¢ãŒããã¯ãã£ã¹ã¿ã€ã«ã¯ãããã¯ãšã³ãéçºã«ããããã€ã¯ããµãŒãã¹ã®ååãåæ ããŠããŸãããã®ç®çã¯ä»¥äžã®éãã§ãïŒ
- ã¹ã±ãŒã©ããªãã£ã®åäžïŒ åã ã®ããŒã ãä»ã®ããŒã ã«åœ±é¿ãäžããããšãªããèªèº«ã®ãã€ã¯ãããã³ããšã³ãã§äœæ¥ãããããã€ã§ããŸãã
- ä¿å®æ§ã®åŒ·åïŒ å°ããªã³ãŒãããŒã¹ã¯ãçè§£ããã¹ãããªãã¡ã¯ã¿ãªã³ã°ã容æã§ãã
- ããŒã ã®èªåŸæ§ã®åäžïŒ ããŒã ã¯ç¬èªã®æè¡ã¹ã¿ãã¯ãšéçºãµã€ã¯ã«ãéžæã§ããŸãã
- è¿ éãªã€ãã¬ãŒã·ã§ã³ã®å®çŸïŒ ç¬ç«ãããããã€ã«ãããæ©èœãªãªãŒã¹ã®ãªã¹ã¯ãšãªãŒãã¿ã€ã ãåæžãããŸãã
ãããã®å©ç¹ã«ãããããããç¬ç«ããŠéçºããããããã®åäœããå ±éã®ã³ã³ããŒãã³ãããŠãŒãã£ãªãã£ããŸãã¯ããžãã¹ããžãã¯ãéä¿¡ãŸãã¯å ±æããå¿ èŠãããå Žåã«ãé倧ãªèª²é¡ãçããŸãããããã¢ããªéäŸåé¢ä¿ç®¡çãšããæ žå¿çãªåé¡ã«ã€ãªãããŸããäŸãã°ãååäžèЧãã«ãŒãããã§ãã¯ã¢ãŠãããŠãŒã¶ãŒãããã¡ã€ã«ã®ããã«å¥ã ã®ãã€ã¯ãããã³ããšã³ããæã€eã³ããŒã¹ãã©ãããã©ãŒã ãæ³åããŠã¿ãŠãã ãããååäžèЧã¯ãã¿ã³ãã¢ã€ã³ã³ã®ãããªå ±æUIã³ã³ããŒãã³ããžã®ã¢ã¯ã»ã¹ãå¿ èŠãããããŸããããã«ãŒããšãã§ãã¯ã¢ãŠãã¯é貚ãã©ãŒããããé éæèšç®ã®ããžãã¯ãå ±æãããããããŸãããããåãã€ã¯ãããã³ããšã³ãããããã®äŸåé¢ä¿ãåå¥ã«ç®¡çãããšã次ã®ãããªäºæ ã«ã€ãªããå¯èœæ§ããããŸãïŒ
- äŸåé¢ä¿å°çïŒ åãã©ã€ãã©ãªã®ç°ãªãããŒãžã§ã³ããã³ãã«ãããç«¶åããã³ãã«ãµã€ãºã®å¢å€§ãåŒãèµ·ãããŸãã
- ã³ãŒãã®éè€ïŒ å ±éã®æ©èœãè€æ°ã®ãã€ã¯ãããã³ããšã³ãã§åå®è£ ãããŸãã
- UIã®äžæŽåïŒ å ±æã³ã³ããŒãã³ãã®å®è£ ã«ã°ãã€ããçããèŠèŠçãªäžäžèŽãåŒãèµ·ãããŸãã
- ã¡ã³ããã³ã¹ã®æªå€¢ïŒ å ±æã®äŸåé¢ä¿ãæŽæ°ããããã«ã倿°ã®ã¢ããªã±ãŒã·ã§ã³ã«ããã倿Žãå¿ èŠã«ãªããŸãã
ãã€ã¯ãããã³ããšã³ãã®æèã«ãããã¢ãžã¥ãŒã«è§£æ±ºã®çè§£
ã¢ãžã¥ãŒã«è§£æ±ºãšã¯ãJavaScriptã®ã©ã³ã¿ã€ã ïŒãŸãã¯WebpackãRollupã®ãããªãã«ãããŒã«ïŒããå¥ã®ã¢ãžã¥ãŒã«ã«ãã£ãŠèŠæ±ãããç¹å®ã®ã¢ãžã¥ãŒã«ã®ã³ãŒããèŠã€ããŠããŒãããããã»ã¹ã®ããšã§ããåŸæ¥ã®ããã³ããšã³ãã¢ããªã±ãŒã·ã§ã³ã§ã¯ããã®ããã»ã¹ã¯æ¯èŒçåçŽã§ããããããè€æ°ã®ã¢ããªã±ãŒã·ã§ã³ãçµ±åããããã€ã¯ãããã³ããšã³ãã¢ãŒããã¯ãã£ã§ã¯ã解決ããã»ã¹ã¯ããè€éã«ãªããŸãã
ãã€ã¯ãããã³ããšã³ãã«ãããã¢ãžã¥ãŒã«è§£æ±ºã®äž»ãªèæ ®äºé ã«ã¯ã以äžãå«ãŸããŸãïŒ
- å ±æã©ã€ãã©ãªïŒ è€æ°ã®ãã€ã¯ãããã³ããšã³ããããããããç¬èªã®ã³ããŒããã³ãã«ããããšãªããåãããŒãžã§ã³ã®ã©ã€ãã©ãªïŒäŸïŒReact, Vue, LodashïŒã«ã©ã®ããã«ã¢ã¯ã»ã¹ãã䜿çšããã®ãïŒ
- å ±æã³ã³ããŒãã³ãïŒ ãããã€ã¯ãããã³ããšã³ãçšã«éçºãããUIã³ã³ããŒãã³ãããä»ã®ãã€ã¯ãããã³ããšã³ãã§å©çšå¯èœã«ããäžè²«ããŠäœ¿çšããã«ã¯ã©ãããã°ãããïŒ
- å ±æãŠãŒãã£ãªãã£ïŒ APIã¯ã©ã€ã¢ã³ããããŒã¿ãã©ãŒãããããŒã«ã®ãããªå ±éã®é¢æ°ã¯ãã©ã®ããã«å ¬éãããæ¶è²»ãããã®ãïŒ
- ããŒãžã§ã³ç«¶åïŒ ç°ãªããã€ã¯ãããã³ããšã³ããåãäŸåé¢ä¿ã®ç«¶åããããŒãžã§ã³ãå¿ èŠãšããç¶æ³ããã©ã®ããã«é²ãããŸãã¯ç®¡çããã®ãïŒ
ã¢ããªéäŸåé¢ä¿ç®¡çã®æŠç¥
广çãªã¢ããªéäŸåé¢ä¿ç®¡çã¯ããã€ã¯ãããã³ããšã³ãå®è£ ãæåãããããã®åºç€ã§ããããã€ãã®æŠç¥ãæ¡çšã§ããŸãããããããã«ãã¬ãŒããªãããããŸãããããã®æŠç¥ã¯ãå€ãã®å Žåããã«ãæãšå®è¡æã®ã¢ãããŒãã®çµã¿åãããå«ã¿ãŸãã
1. å ±æäŸåé¢ä¿ç®¡çïŒäŸåé¢ä¿ã®å€éšåïŒ
æãäžè¬çã§å¹æçãªæŠç¥ã®äžã€ã¯ãå ±æã®äŸåé¢ä¿ãå€éšåããããšã§ããããã¯ãåãã€ã¯ãããã³ããšã³ããå ±éã©ã€ãã©ãªã®ç¬èªã®ã³ããŒããã³ãã«ãã代ããã«ããããã®ã©ã€ãã©ãªãã°ããŒãã«ãŸãã¯ã³ã³ããã¬ãã«ã§å©çšå¯èœã«ããããšãæå³ããŸãã
ä»çµã¿ïŒ
- ãã«ãããŒã«ã®èšå®ïŒ WebpackãRollupã®ãããªãã«ãããŒã«ã¯ãç¹å®ã®ã¢ãžã¥ãŒã«ããå€éšïŒexternalsïŒããšããŠæ±ãããã«èšå®ã§ããŸãããã€ã¯ãããã³ããšã³ãããã®ãããªã¢ãžã¥ãŒã«ãèŠæ±ãããšããã«ãããŒã«ã¯ããããã³ãã«ã«å«ããŸããã代ããã«ããã®ã¢ãžã¥ãŒã«ã¯å®è¡æç°å¢ã«ãã£ãŠæäŸããããšæ³å®ããŸãã
- ã³ã³ããã¢ããªã±ãŒã·ã§ã³ïŒ 芪ãŸãã¯ãã³ã³ãããã¢ããªã±ãŒã·ã§ã³ïŒãŸãã¯å°çšã®ã·ã§ã«ïŒãããããã®å ±æäŸåé¢ä¿ã®èªã¿èŸŒã¿ãšæäŸãæ åœããŸãããã®ã³ã³ããã¯ãå ±éã©ã€ãã©ãªã®ã¹ã¯ãªããã¿ã°ãå«ãåçŽãªHTMLããŒãžã§ããå Žåãããã°ãäŸåé¢ä¿ãåçã«èªã¿èŸŒãããæŽç·Žãããã¢ããªã±ãŒã·ã§ã³ã·ã§ã«ã§ããå ŽåããããŸãã
- Module Federation (Webpack 5+)ïŒ ããã¯Webpack 5ã®åŒ·åãªæ©èœã§ãJavaScriptã¢ããªã±ãŒã·ã§ã³ãå®è¡æã«ä»ã®ã¢ããªã±ãŒã·ã§ã³ããåçã«ã³ãŒããèªã¿èŸŒãããšãå¯èœã«ããŸããç¬ç«ããŠãã«ããããã¢ããªã±ãŒã·ã§ã³éã§äŸåé¢ä¿ãã³ã³ããŒãã³ããããå ±æããããšã«åªããŠããŸããäŸåé¢ä¿ãå ±æããããã®æç€ºçãªã¡ã«ããºã ãæäŸãããªã¢ãŒãã¢ããªã±ãŒã·ã§ã³ããã¹ãã¢ããªã±ãŒã·ã§ã³ã«ãã£ãŠå ¬éãããã¢ãžã¥ãŒã«ãæ¶è²»ã§ããããã«ãããã®éãå¯èœã§ããããã«ãããéè€ããäŸåé¢ä¿ãå€§å¹ ã«åæžãããäžè²«æ§ã確ä¿ãããŸãã
äŸïŒ
Reactã§æ§ç¯ããã2ã€ã®ãã€ã¯ãããã³ããšã³ãããProductPageããšãUserProfileããèããŠã¿ãŸããããããäž¡æ¹ã®ãã€ã¯ãããã³ããšã³ããç¬èªã®ããŒãžã§ã³ã®Reactããã³ãã«ãããšãæçµçãªã¢ããªã±ãŒã·ã§ã³ã®ãã³ãã«ãµã€ãºã¯èãã倧ãããªããŸããReactãå€éšåããã³ã³ããã¢ããªã±ãŒã·ã§ã³ãä»ããŠïŒäŸãã°ãCDNãªã³ã¯ãã³ã³ããã«ãã£ãŠèªã¿èŸŒãŸããå ±æãã³ãã«ãéããŠïŒå©çšå¯èœã«ããããšã§ãäž¡æ¹ã®ãã€ã¯ãããã³ããšã³ããåäžã®Reactã€ã³ã¹ã¿ã³ã¹ãå ±æã§ããèªã¿èŸŒã¿æéãšã¡ã¢ãªãããããªã³ããåæžã§ããŸãã
å©ç¹ïŒ
- ãã³ãã«ãµã€ãºã®åæžïŒ ãŠãŒã¶ãŒåãã®å šäœçãªJavaScriptãã€ããŒããå€§å¹ ã«åæžããŸãã
- ããã©ãŒãã³ã¹ã®åäžïŒ ããŠã³ããŒãããŠè§£æããå¿ èŠã®ãããªãœãŒã¹ãå°ãªããªããããåæèªã¿èŸŒã¿æéãéããªããŸãã
- ã©ã€ãã©ãªããŒãžã§ã³ã®äžè²«æ§ïŒ ãã¹ãŠã®ãã€ã¯ãããã³ããšã³ããåãããŒãžã§ã³ã®å ±æã©ã€ãã©ãªã䜿çšããããšãä¿èšŒããå®è¡æã®ç«¶åãé²ããŸãã
課é¡ïŒ
- ããŒãžã§ã³ç®¡çïŒ ç°ãªããã€ã¯ãããã³ããšã³ãéã§å ±æã®äŸåé¢ä¿ãææ°ã®ç¶æ ã«ä¿ã€ã«ã¯ãæ éãªèª¿æŽãå¿ èŠã§ããå ±æã©ã€ãã©ãªã®ç Žå£ç倿Žã¯ãåºç¯å²ã«åœ±é¿ãäžããå¯èœæ§ããããŸãã
- ã³ã³ãããžã®çµåïŒ ã³ã³ããã¢ããªã±ãŒã·ã§ã³ãäŸåé¢ä¿ã®äžå¿ç¹ãšãªããããŸã管çãããªãå Žåãäžçš®ã®çµåãçã¿åºãå¯èœæ§ããããŸãã
- åæèšå®ã®è€éãïŒ ãã«ãããŒã«ãšã³ã³ããã¢ããªã±ãŒã·ã§ã³ã®èšå®ã¯è€éã«ãªãããšããããŸãã
2. å ±æã³ã³ããŒãã³ãã©ã€ãã©ãª
åãªãã©ã€ãã©ãªã ãã§ãªããããŒã ã¯ãã°ãã°ã¢ããªã±ãŒã·ã§ã³å šäœã§äžè²«ããŠããã¹ãåå©çšå¯èœãªUIã³ã³ããŒãã³ãïŒäŸïŒãã¿ã³ãã¢ãŒãã«ããã©ãŒã èŠçŽ ïŒãéçºããŸããããããå¥ã ã®ãããŒãžã§ã³ç®¡çãããããã±ãŒãžïŒããã¶ã€ã³ã·ã¹ãã ããŸãã¯ãã³ã³ããŒãã³ãã©ã€ãã©ãªãïŒãšããŠæ§ç¯ããããšã¯ãå ç¢ãªã¢ãããŒãã§ãã
ä»çµã¿ïŒ
- ããã±ãŒãžç®¡çïŒ ã³ã³ããŒãã³ãã©ã€ãã©ãªã¯ããã©ã€ããŒããŸãã¯ãããªãã¯ã®ããã±ãŒãžã¬ãžã¹ããªïŒäŸïŒnpm, YarnïŒã«ããã±ãŒãžãšããŠéçºã»å ¬éãããŸãã
- ã€ã³ã¹ããŒã«ïŒ ãããã®ã³ã³ããŒãã³ããå¿ èŠãšããåãã€ã¯ãããã³ããšã³ãã¯ãã©ã€ãã©ãªãéåžžã®äŸåé¢ä¿ãšããŠã€ã³ã¹ããŒã«ããŸãã
- äžè²«ããAPIãšã¹ã¿ã€ãªã³ã°ïŒ ã©ã€ãã©ãªã¯ããã®ã³ã³ããŒãã³ãã«å¯ŸããŠäžè²«ããAPIã匷å¶ãããã°ãã°å ±æã®ã¹ã¿ã€ãªã³ã°ã¡ã«ããºã ãå«ã¿ãèŠèŠçãªçµ±äžæ§ã確ä¿ããŸãã
äŸïŒ
ããã°ããŒãã«ãªå°å£²äŒæ¥ãããã¿ã³ãã®ããã®ã³ã³ããŒãã³ãã©ã€ãã©ãªãæã£ãŠãããšããŸãããã®ã©ã€ãã©ãªã«ã¯ãããŸããŸãªããªã¢ã³ãïŒãã©ã€ããªãã»ã«ã³ããªãç¡å¹ïŒããµã€ãºãã¢ã¯ã»ã·ããªãã£æ©èœãå«ãŸããŠãããããããŸãããã¢ãžã¢ã§ã®åå衚瀺ããšãŒãããã§ã®ãã§ãã¯ã¢ãŠããåç±³ã§ã®ãŠãŒã¶ãŒã¬ãã¥ãŒãªã©ããã¹ãŠã®ãã€ã¯ãããã³ããšã³ããããã®å ±æã©ã€ãã©ãªããåããButtonãã³ã³ããŒãã³ããã€ã³ããŒãããŠäœ¿çšããŸããããã«ããããã©ã³ãã®äžè²«æ§ã確ä¿ãããåé·ãªUIéçºã®åŽåãåæžãããŸãã
å©ç¹ïŒ
- UIã®äžè²«æ§ïŒ ãã¹ãŠã®ãã€ã¯ãããã³ããšã³ãã§çµ±äžãããã«ãã¯ã¢ã³ããã£ãŒã«ãä¿èšŒããŸãã
- ã³ãŒãã®åå©çšæ§ïŒ å ±éã®UIèŠçŽ ãåçºæããããšãé¿ããŸãã
- éçºã®è¿ éåïŒ éçºè ã¯äºåã«æ§ç¯ããããã¹ããããã³ã³ããŒãã³ããæŽ»çšã§ããŸãã
課é¡ïŒ
- ããŒãžã§ã³æŽæ°ïŒ ã³ã³ããŒãã³ãã©ã€ãã©ãªã®æŽæ°ã¯ããããå©çšãããã€ã¯ãããã³ããšã³ãã«ç Žå£ç倿Žãããããå¯èœæ§ããããããæ éãªèšç»ãå¿ èŠã§ããã»ãã³ãã£ãã¯ããŒãžã§ãã³ã°æŠç¥ãäžå¯æ¬ ã§ãã
- æè¡çãªããã¯ã€ã³ïŒ ã³ã³ããŒãã³ãã©ã€ãã©ãªãç¹å®ã®ãã¬ãŒã ã¯ãŒã¯ïŒäŸïŒReactïŒã§æ§ç¯ãããŠããå Žåããããå©çšãããã¹ãŠã®ãã€ã¯ãããã³ããšã³ãããã®ãã¬ãŒã ã¯ãŒã¯ãæ¡çšãããããã¬ãŒã ã¯ãŒã¯ã«äŸåããªããœãªã¥ãŒã·ã§ã³ã«é Œãå¿ èŠããããŸãã
- ãã«ãæéïŒ ã³ã³ããŒãã³ãã©ã€ãã©ãªã倧ããå Žåãå€ãã®äŸåé¢ä¿ãããå Žåãåã ã®ãã€ã¯ãããã³ããšã³ãã®ãã«ãæéãå¢å ããå¯èœæ§ããããŸãã
3. Module Federationã«ããå®è¡æçµ±å
åè¿°ã®éããWebpackã®Module Federationã¯ãã€ã¯ãããã³ããšã³ãã¢ãŒããã¯ãã£ã«ãšã£ãŠç»æçãªãã®ã§ããããã«ãããç¬ç«ããŠãã«ãããã³ãããã€ãããã¢ããªã±ãŒã·ã§ã³éã§åçãªã³ãŒãå ±æãå¯èœã«ãªããŸãã
ä»çµã¿ïŒ
- ã¢ãžã¥ãŒã«ã®å ¬éïŒ ãããã€ã¯ãããã³ããšã³ãïŒããã¹ããïŒãç¹å®ã®ã¢ãžã¥ãŒã«ïŒã³ã³ããŒãã³ãããŠãŒãã£ãªãã£ïŒããå ¬éãããä»ã®ãã€ã¯ãããã³ããšã³ãïŒããªã¢ãŒããïŒãå®è¡æã«ãããæ¶è²»ã§ããŸãã
- åçèªã¿èŸŒã¿ïŒ ãªã¢ãŒãã¯ããããã®å ¬éãããã¢ãžã¥ãŒã«ãããªã¢ãŒãã®åæãã«ãã®äžéšãšããããšãªããå¿ èŠã«å¿ããŠåçã«èªã¿èŸŒãããšãã§ããŸãã
- å ±æäŸåé¢ä¿ïŒ Module Federationã«ã¯ãäŸåé¢ä¿ãè³¢ãå ±æããããã®çµã¿èŸŒã¿ã¡ã«ããºã ããããŸããè€æ°ã®ã¢ããªã±ãŒã·ã§ã³ãåãäŸåé¢ä¿ã«äŸåããŠããå ŽåãModule Federationã¯1ã€ã®ã€ã³ã¹ã¿ã³ã¹ã®ã¿ãèªã¿èŸŒãŸããå ±æãããããšãä¿èšŒããŸãã
äŸïŒ
æ è¡äºçŽãã©ãããã©ãŒã ãæ³åããŠã¿ãŠãã ãããããã©ã€ãããã€ã¯ãããã³ããšã³ãã¯`FlightSearchWidget`ã³ã³ããŒãã³ããå ¬éãããããããŸããããããã«ããã€ã¯ãããã³ããšã³ããåæ§ã®æ€çŽ¢æ©èœãå¿ èŠãšããå Žåããã®`FlightSearchWidget`ã³ã³ããŒãã³ããåçã«ã€ã³ããŒãããŠäœ¿çšã§ããŸããããã«ãäž¡æ¹ã®ãã€ã¯ãããã³ããšã³ããåãããŒãžã§ã³ã®æ¥ä»ããã«ãŒã©ã€ãã©ãªã䜿çšããŠããå ŽåãModule Federationã¯äž¡æ¹ã®ã¢ããªã±ãŒã·ã§ã³ã§æ¥ä»ããã«ãŒã®ã€ã³ã¹ã¿ã³ã¹ã1ã€ã ãèªã¿èŸŒãŸããããšãä¿èšŒããŸãã
å©ç¹ïŒ
- çã®åçå ±æïŒ ç°ãªããã«ãããã»ã¹éã§ãã£ãŠããã³ãŒããšäŸåé¢ä¿ã®äž¡æ¹ã®å®è¡æå ±æãå¯èœã«ããŸãã
- æè»ãªçµ±åïŒ ãã€ã¯ãããã³ããšã³ããäºãã«äŸåããè€éãªçµ±åãã¿ãŒã³ãå¯èœã«ããŸãã
- éè€ã®åæžïŒ å ±æäŸåé¢ä¿ãå¹ççã«åŠçãããã³ãã«ãµã€ãºãæå°éã«æããŸãã
課é¡ïŒ
- è€éãïŒ Module Federationã®èšå®ãšç®¡çã¯è€éã«ãªãå¯èœæ§ãããããã¹ããšãªã¢ãŒãã®äž¡æ¹ã®ã¢ããªã±ãŒã·ã§ã³ã§æ éãªèšå®ãå¿ èŠã§ãã
- å®è¡æãšã©ãŒïŒ å®è¡æã«ã¢ãžã¥ãŒã«è§£æ±ºã倱æããå Žåãç¹ã«åæ£ã·ã¹ãã ã§ã¯ãããã°ãå°é£ã«ãªãããšããããŸãã
- ããŒãžã§ã³äžäžèŽïŒ å ±æãå©ããäžæ¹ã§ãå ¬éãããã¢ãžã¥ãŒã«ãšãã®äŸåé¢ä¿ã®äºææ§ã®ããããŒãžã§ã³ã確ä¿ããããšã¯äŸç¶ãšããŠéèŠã§ãã
4. äžå€®éæš©çãªã¢ãžã¥ãŒã«ã¬ãžã¹ããª/ã«ã¿ãã°
倿°ã®ãã€ã¯ãããã³ããšã³ããæã€éåžžã«å€§èŠæš¡ãªçµç¹ã§ã¯ãå©çšå¯èœãªå ±æã¢ãžã¥ãŒã«ãšãã®ããŒãžã§ã³ã®æç¢ºãªæŠèŠãç¶æããããšãå°é£ã«ãªãããšããããŸããäžå€®éæš©çãªã¬ãžã¹ããªãã«ã¿ãã°ã¯ãä¿¡é Œã§ããå¯äžã®æ å ±æºãšããŠæ©èœããŸãã
ä»çµã¿ïŒ
- çºèŠå¯èœæ§ïŒ ããŒã ãå ±æã¢ãžã¥ãŒã«ãã³ã³ããŒãã³ãããŸãã¯ãŠãŒãã£ãªãã£ããããŒãžã§ã³ãäŸåé¢ä¿ã䜿çšäŸãªã©ã®ã¡ã¿ããŒã¿ãšãšãã«ç»é²ã§ããã·ã¹ãã ã
- ã¬ããã³ã¹ïŒ å ±æã¢ã»ãããä»ã®ããŒã ã«å©çšå¯èœã«ãªãåã«ãããããã¬ãã¥ãŒãæ¿èªããããã®ãã¬ãŒã ã¯ãŒã¯ãæäŸããŸãã
- æšæºåïŒ å ±æå¯èœãªã¢ãžã¥ãŒã«ãæ§ç¯ããããã®å ±éã®ãã¿ãŒã³ããã¹ããã©ã¯ãã£ã¹ã®æ¡çšã奚å±ããŸãã
äŸïŒ
å€åœç±éèãµãŒãã¹äŒæ¥ããã³ã³ããŒãã³ãã«ã¿ãã°ãã¢ããªã±ãŒã·ã§ã³ãæã£ãŠãããããããŸãããéçºè ã¯UIèŠçŽ ãAPIã¯ã©ã€ã¢ã³ãããŸãã¯ãŠãŒãã£ãªãã£é¢æ°ãé²èЧã§ããŸããåãšã³ããªã«ã¯ãããã±ãŒãžåãããŒãžã§ã³ãäœæããŒã ãããã³ããããã€ã¯ãããã³ããšã³ãã«çµ±åããæ¹æ³ã«é¢ããæç€ºã詳述ãããŸããããã¯ã倧éžãè¶ããŠç¥èãå ±æããããšãäžå¯æ¬ ãªã°ããŒãã«ããŒã ã«ãšã£ãŠç¹ã«æçšã§ãã
å©ç¹ïŒ
- çºèŠå¯èœæ§ã®åäžïŒ éçºè ãæ¢åã®å ±æã¢ã»ãããèŠã€ããŠåå©çšãããããªããŸãã
- ã¬ããã³ã¹ã®åŒ·åïŒ ãšã³ã·ã¹ãã ã«å°å ¥ãããå ±æã¢ãžã¥ãŒã«ã«å¯Ÿãã管çã容æã«ããŸãã
- ç¥èå ±æïŒ 忣ããããŒã éã§ã®ã³ã©ãã¬ãŒã·ã§ã³ãä¿é²ããåé·ãªäœæ¥ãåæžããŸãã
課é¡ïŒ
- ãªãŒããŒãããïŒ ãã®ãããªã¬ãžã¹ããªã®æ§ç¯ãšç¶æã¯ãéçºããã»ã¹ã«ãªãŒããŒãããã远å ããŸãã
- æ¡çšïŒ ã¬ãžã¹ããªãææ°ã®ç¶æ ã«ä¿ã€ããã«ã¯ããã¹ãŠã®éçºããŒã ããã®ç©æ¥µçãªåå ãšèŠåŸãå¿ èŠã§ãã
- ããŒãªã³ã°ïŒ ã«ã¹ã¿ã ããŒãªã³ã°ãæ¢åã®ããã±ãŒãžç®¡çã·ã¹ãã ãšã®çµ±åãå¿ èŠã«ãªãå ŽåããããŸãã
ã°ããŒãã«ãªãã€ã¯ãããã³ããšã³ãäŸåé¢ä¿ç®¡çã®ãã¹ããã©ã¯ãã£ã¹
倿§ãªã°ããŒãã«ããŒã ã«ããã£ãŠãã€ã¯ãããã³ããšã³ãã¢ãŒããã¯ãã£ãå®è£ ããå Žåãããã€ãã®ãã¹ããã©ã¯ãã£ã¹ãäžå¯æ¬ ã§ãïŒ
- æç¢ºãªæææš©ã®ç¢ºç«ïŒ ã©ã®ããŒã ãã©ã®å ±æã¢ãžã¥ãŒã«ãã©ã€ãã©ãªã«è²¬ä»»ãæã€ããå®çŸ©ããŸããããã«ãããææ§ãããªããªãã説æè²¬ä»»ã確ä¿ãããŸãã
- ã»ãã³ãã£ãã¯ããŒãžã§ãã³ã°ã®æ¡çšïŒ ãã¹ãŠã®å ±æããã±ãŒãžãšã¢ãžã¥ãŒã«ã«å¯ŸããŠãã»ãã³ãã£ãã¯ããŒãžã§ãã³ã°ïŒSemVerïŒã峿 Œã«éµå®ããŸããããã«ãããå©çšè ã¯äŸåé¢ä¿ãã¢ããã°ã¬ãŒãããéã®æœåšçãªåœ±é¿ãçè§£ã§ããŸãã
- äŸåé¢ä¿ãã§ãã¯ã®èªååïŒ CI/CDãã€ãã©ã€ã³ã«ããã€ã¯ãããã³ããšã³ãéã§ããŒãžã§ã³ç«¶åãå€ãå ±æäŸåé¢ä¿ãèªåçã«ãã§ãã¯ããããŒã«ãçµ±åããŸãã
- 培åºããææžåïŒ ãã¹ãŠã®å ±æã¢ãžã¥ãŒã«ã«ã€ããŠãAPIã䜿çšäŸãããŒãžã§ãã³ã°æŠç¥ãå«ãå æ¬çãªããã¥ã¡ã³ããç¶æããŸããããã¯ãç°ãªãã¿ã€ã ãŸãŒã³ã§åããç¿ç床ãç°ãªãã°ããŒãã«ããŒã ã«ãšã£ãŠéåžžã«éèŠã§ãã
- å ç¢ãªCI/CDãã€ãã©ã€ã³ãžã®æè³ïŒ ããæŽåãããCI/CDããã»ã¹ã¯ããã€ã¯ãããã³ããšã³ããšãã®å ±æäŸåé¢ä¿ã®ãããã€ãšæŽæ°ã管çããããã®åºæ¬ã§ããæåãšã©ãŒãæå°éã«æããããã«ããã¹ãããã«ãããããã€ãèªååããŸãã
- ãã¬ãŒã ã¯ãŒã¯éžæã®åœ±é¿ãèæ ®ããïŒ ãã€ã¯ãããã³ããšã³ãã¯æè¡ã®å€æ§æ§ã蚱容ããŸãããã³ã¢ãã¬ãŒã ã¯ãŒã¯ïŒäŸïŒReact察AngularïŒã®å€§ããªçžéã¯ãå ±æäŸåé¢ä¿ã®ç®¡çãè€éã«ããå¯èœæ§ããããŸããå¯èœãªéããäºææ§ãç®æãããã³ã¢ãªå ±æã¢ã»ããã«ã¯ãã¬ãŒã ã¯ãŒã¯ã«äŸåããªãã¢ãããŒãã䜿çšããŸãã
- ããã©ãŒãã³ã¹ãåªå ããïŒ ãã³ãã«ãµã€ãºãšã¢ããªã±ãŒã·ã§ã³ã®ããã©ãŒãã³ã¹ãç¶ç¶çã«ç£èŠããŸããWebpack Bundle Analyzerã®ãããªããŒã«ã¯ãäŸåé¢ä¿ãäžå¿ èŠã«éè€ããŠããé åãç¹å®ããã®ã«åœ¹ç«ã¡ãŸãã
- ã³ãã¥ãã±ãŒã·ã§ã³ãä¿é²ããïŒ ç°ãªããã€ã¯ãããã³ããšã³ããšå ±æã¢ãžã¥ãŒã«ãæ åœããããŒã éã«æç¢ºãªã³ãã¥ãã±ãŒã·ã§ã³ãã£ãã«ã確ç«ããŸãã宿çãªåæã¯ãäŸåé¢ä¿ã®æŽæ°ã®äžæŽåãé²ãããšãã§ããŸãã
- ããã°ã¬ãã·ããšã³ãã³ã¹ã¡ã³ãã®æ¡çšïŒ éèŠãªæ©èœã«ã€ããŠã¯ãç¹å®ã®å ±æäŸåé¢ä¿ãå©çšã§ããªãå Žåãå®è¡æã«å€±æããå Žåã§ããé©åã«æ©èœãäœäžããããã«èšèšããããšãæ€èšããŸãã
- çµæã®ããã®ã¢ãã¬ãã®äœ¿çšïŒä»»æã ãæšå¥šïŒïŒ å€ãã®çµç¹ã«ãšã£ãŠãã¢ãã¬ãïŒäŸïŒLernaãNxã䜿çšïŒå ã§ãã€ã¯ãããã³ããšã³ããšãã®å ±æäŸåé¢ä¿ã管çããããšã¯ãããŒãžã§ãã³ã°ãããŒã«ã«éçºãããã³äŸåé¢ä¿ã®ãªã³ã¯ãç°¡çŽ åã§ããŸããããã«ãããããã³ããšã³ããšã³ã·ã¹ãã å šäœãåäžã®å Žæã§ç®¡çã§ããŸãã
äŸåé¢ä¿ç®¡çã«ãããã°ããŒãã«ãªèæ ®äºé
åœéçãªããŒã ãšååããå Žåã远å ã®èŠå ãé¢ä¿ããŠããŸãïŒ
- ã¿ã€ã ãŸãŒã³ã®éãïŒ è€æ°ã®ã¿ã€ã ãŸãŒã³ã«ãããå ±æäŸåé¢ä¿ã®æŽæ°ã調æŽããã«ã¯ãæ éãªã¹ã±ãžã¥ãŒãªã³ã°ãšæç¢ºãªã³ãã¥ãã±ãŒã·ã§ã³ãããã³ã«ãå¿ èŠã§ããããã§ã¯èªååãããããã»ã¹ãéåžžã«äŸ¡å€ããããŸãã
- ãããã¯ãŒã¯é å»¶ïŒ åçã«äŸåé¢ä¿ãèªã¿èŸŒããã€ã¯ãããã³ããšã³ãïŒäŸïŒModule Federationçµç±ïŒã®å ŽåããŠãŒã¶ãŒãšãããã®äŸåé¢ä¿ããã¹ããããµãŒããŒéã®ãããã¯ãŒã¯é å»¶ãããã©ãŒãã³ã¹ã«åœ±é¿ãäžããå¯èœæ§ããããŸããå ±æã¢ãžã¥ãŒã«ãã°ããŒãã«CDNã«ãããã€ãããããšããžãã£ãã·ã³ã°ã䜿çšããããšãæ€èšããŠãã ããã
- ããŒã«ãªãŒãŒã·ã§ã³ãšåœéåïŒi18n/l10nïŒïŒ å ±æã©ã€ãã©ãªãšã³ã³ããŒãã³ãã¯ãåœéåã念é ã«çœ®ããŠèšèšããå¿ èŠããããŸããããã¯ãUIããã¹ããã³ãŒãããåé¢ãããã¹ãŠã®ãã€ã¯ãããã³ããšã³ããå©çšã§ããå ç¢ãªi18nã©ã€ãã©ãªã䜿çšããããšãæå³ããŸãã
- UI/UXã«ãããæåçãªãã¥ã¢ã³ã¹ïŒ å ±æã³ã³ããŒãã³ãã©ã€ãã©ãªã¯äžè²«æ§ãä¿é²ããŸãããæåçãªå¥œã¿ãèŠå¶èŠä»¶ïŒäŸïŒGDPRã«ããEUã§ã®ããŒã¿ãã©ã€ãã·ãŒïŒãå¿ èŠãšããå Žåã«ã¯ã埮調æŽãèš±å¯ããããšãéèŠã§ããããã«ã¯ãã³ã³ããŒãã³ãã®æ§æå¯èœãªåŽé¢ããé«åºŠã«ããŒã«ã©ã€ãºãããæ©èœã®ããã®å°ååºæã®å¥ã ã®ã³ã³ããŒãã³ããå«ãŸããå ŽåããããŸãã
- éçºè ã®ã¹ãã«ã»ããïŒ å ±æã¢ãžã¥ãŒã«ã®ããã¥ã¡ã³ããšãã¬ãŒãã³ã°è³æãã倿§ãªæè¡çèæ¯ãšçµéšã¬ãã«ã®éçºè ã«ãšã£ãŠã¢ã¯ã»ã¹å¯èœã§çè§£ãããããã®ã§ããããšã確èªããŸãã
ããŒã«ãšãã¯ãããžãŒ
ããã€ãã®ããŒã«ãšãã¯ãããžãŒãããã€ã¯ãããã³ããšã³ãã®äŸåé¢ä¿ã管çããäžã§åœ¹ç«ã¡ãŸãïŒ
- Module Federation (Webpack 5+)ïŒ åè¿°ã®éãã匷åãªå®è¡æãœãªã¥ãŒã·ã§ã³ã§ãã
- Lerna / NxïŒ åäžã®ãªããžããªå ã§è€æ°ã®ããã±ãŒãžã管çããã®ã«åœ¹ç«ã€ã¢ãã¬ãããŒã«ã§ãäŸåé¢ä¿ç®¡çãããŒãžã§ãã³ã°ãå ¬éãå¹çåããŸãã
- npm / Yarn / pnpmïŒ äŸåé¢ä¿ã®ã€ã³ã¹ããŒã«ãå ¬éã管çã«äžå¯æ¬ ãªããã±ãŒãžãããŒãžã£ãŒã§ãã
- BitïŒ ããŒã ããããžã§ã¯ãéã§ã³ã³ããŒãã³ããç¬ç«ããŠæ§ç¯ãå ±æãæ¶è²»ã§ãããã³ã³ããŒãã³ãé§åéçºã®ããã®ããŒã«ãã§ãŒã³ã§ãã
- Single-SPA / FrintJSïŒ ãã€ã¯ãããã³ããšã³ãããªãŒã±ã¹ãã¬ãŒã·ã§ã³ããã®ã«åœ¹ç«ã€ãã¬ãŒã ã¯ãŒã¯ã§ããã°ãã°ã¢ããªã±ãŒã·ã§ã³ã¬ãã«ã§å ±æäŸåé¢ä¿ã管çããã¡ã«ããºã ãæäŸããŸãã
- StorybookïŒ UIã³ã³ããŒãã³ããåé¢ããŠéçºãææžåããã¹ãããããã®åªããããŒã«ã§ãå ±æã³ã³ããŒãã³ãã©ã€ãã©ãªã®æ§ç¯ã«ãã䜿çšãããŸãã
çµè«
ããã³ããšã³ããã€ã¯ãããã³ããšã³ãã®ã¢ãžã¥ãŒã«è§£æ±ºãšã¢ããªéäŸåé¢ä¿ç®¡çã¯ãç°¡åãªèª²é¡ã§ã¯ãããŸããããããã¯æ éãªã¢ãŒããã¯ãã£èšç»ãå ç¢ãªããŒãªã³ã°ããããŠèŠåŸããéçºæ £è¡ãå¿ èŠãšããŸãããã€ã¯ãããã³ããšã³ãã®ãã©ãã€ã ãæ¡çšããã°ããŒãã«ãªçµç¹ã«ãšã£ãŠããããã®åŽé¢ããã¹ã¿ãŒããããšã¯ãã¹ã±ãŒã©ãã«ã§ä¿å®å¯èœããã€é«æ§èœãªã¢ããªã±ãŒã·ã§ã³ãæ§ç¯ããããã®éµãšãªããŸãã
å ±éã©ã€ãã©ãªã®å€éšåãå ±æã³ã³ããŒãã³ãã©ã€ãã©ãªã®éçºãModule Federationã®ãããªå®è¡æãœãªã¥ãŒã·ã§ã³ã®æŽ»çšããããŠæç¢ºãªã¬ããã³ã¹ãšããã¥ã¡ã³ããŒã·ã§ã³ã®ç¢ºç«ãšãã£ãæŠç¥ãçšããããšã§ãéçºããŒã ã¯ã¢ããªéã®äŸåé¢ä¿ã®è€éãã广çã«ä¹ãè¶ããããšãã§ããŸãããããã®å®è·µã«æè³ããããšã¯ãéçºé床ãã¢ããªã±ãŒã·ã§ã³ã®å®å®æ§ããããŠããŒã ã®å°ççãªåæ£ã«é¢ãããããã€ã¯ãããã³ããšã³ãã®éã®ãå šäœã®æåãšãã圢ã§å ±ãããã§ãããã