ãã㯠TypeScript Advent Calendar 2019 25æ¥ç®ã®èšäºã§ããã¿ãªãããã¡ãªãŒã¯ãªã¹ãã¹ãä»å¹Žãç¡äºãµã³ã¿æ¥ãçµããYouTube Musicãåãæµããªããã¯ãªã¹ãã¹ã ãTypeScripté¢é£ã®ããšã ã§ãæžããããªãšããŠãããšãã§ãã
Background
ç§ã®æå±ããäŒç€Ÿã®æãã¹ãã£ã³ã°äºæ¥éšã§ã¯ãä»å¹Žã®ã¯ãããããã«ããã³ããšã³ããšBFFã®æè¡æéãšããŠéçºèšèªã®ããŒã¹ãTypeScriptã«ããŸããããšããã®ã決ããŸããããã®ãããªæ±ºãäºãããã®ã¯ããŸããéçºã«æ§ã ãªèšèªã䜿çšãããŠãããšããçµç·¯ããã§ãããçŸå Žã¬ãã«ã§ãéçºã«äœ¿çšãããèšèªãæè»ã«éžæã§ããããšã¯ã¢ãããŒã·ã§ã³ã®ïŒã€ãšããŠã¯è¯ãã®ã§ãããäžé·æçãªéçšãããªããã°ãªããªãããšãïŒã€ã®ããŒã ãè€æ°ã®ãããžã§ã¯ãã®é¢åã¿ãªããã°ãªããªãããšïŒããã¯ããã§åé¡ãªã®ã§ããïŒãèžãŸãããšããã¯ãéçºã®ã¢ãããŒã·ã§ã³ããéçšã®ã³ã¹ããäžããã¹ãã§ãããšããéžæãããããã§ãããã¡ãããæªæ¥æ°žå«TypeScript以å€ã§éçºãã§ããªãã®ããšãããšããã§ã¯ãªããçŸç¶ç¹æ®µã®çç±ããªãéãTypeScriptã§éçºãããŸããããšãããã®ã§ãïŒã¡ãªã¿ã«ãæè¡æéã«ã¯äœ¿çšèšèªä»¥å€ã®ããšãå®çŸ©ããŠããŸãïŒã
Why TypeScript
次ã«ããªãTypeScriptã«ããã®ããæžããŠãããŸããç§ãã¡ãéå¶ãããµãŒãã¹ã¯æäŸã¯ãããŠãã20幎è¿ãã«ãªããåŠäœã«ã¬ã¬ã·ãŒã³ãŒããšåãåãããé·å¹Žã®èª²é¡ã§ãããããŠãå€ãã®ãããžã§ã¯ããæ¬çªã§çšŒåããŠããããã«ãèšèªããã¬ãŒã ã¯ãŒã¯ã¯ãã¡ããäŸåã©ã€ãã©ãªã®ã¢ããããŒããç¶ç¶çã«ãããªããã°ãªããŸãããå šäœæé©åãèãããšããã¯ãæéã®ãããªãã®ãå¿ èŠã§ãããšèããç§ã¯ãåãããžã§ã¯ãã®èšèªãšè¡æ°ãéèšããŠã¿ãŸããã7å²ãPHPã§1å²ãJavaScriptãããšã®2å²ãPerlãGoãããŠRubyã§åãåããšããçµæã§ãããæã£ãŠããããPHPã®å ããå²åãå€ããããã§PHPã®ããŒãžã§ã³ãæ°ããã ã£ããPHPã§è¡ããŸããããšãªã£ãŠãããšæããŸããå ã«ç³ãäžããéããç§ãã¡ã¯ã¬ã¬ã·ãŒã³ãŒããšå ±ã«ããŸããã€ãŸãããªãã¬ãŒã¹ãå¿ èŠãªè³ç£ã§ãããããããªãã¬ãŒã¹ãèŠè¶ãã®ã§ããã°ãåå®å šãåæšè«ã«ããéçºïŒéçšå¹çã«åãããéçåä»ãèšèªãæšããŠãããããšèããããã§ãããããªã£ãŠãããšãããã³ããšã³ããšBFFã®æéãçå®ããã®ã«ããã©ãŠã¶äžã®å¯äžã®ã©ã³ã¿ã€ã ã§ããJavaScriptïŒçŸç¶WAã¯çŽæ¥åäœããªãã®ã§é€ãïŒã¯éããããªãèŠçŽ ã§ãããªã®ã§ãã£ãå šãŠJavaScriptã«ããŠFrontendãšBackendã®è³ç£ãå ±æã§ããããšãïŒã€ã®èšèªã«çµãããšã§æ¡çšã«æå©ã«åãããšããšã³ãžãã¢ã®é 眮ããã¬ãã·ãã«ã«ã§ããããšããã¡ãªãããšããŠãTypeScriptãéçºèšèªã®ããŒã¹ã«ããŸããã
Afterwords
ããšããšãè€æ°ã®ããŒã ã§TypeScriptã®éçºãšéçšå®çžŸããããŸããã®ã§ããããã®ææ¡ã«å¯ŸããŠãã¬ãã£ããªãã®ã¯ãããŸããã§ãããä»åŸãTypeScript以å€ã®éçšã¯ããªããã°ãªããŸãããããœãããŠã§ã¢ãšã³ãžãã¢ã§ãã以äžãã©ããªèšèªã§ã察å¿ã§ããã®ããããã§ãã·ã§ãã«ã®ä»äºã ãšæãäžæ¹ã§ã倧å€ãã¯ãããã®ã§ç€Ÿå ã§æ¯æŽã§ããç°å¢ã¥ããã¯å¥ã«é²ããŠããç¶æ ã§ã¯ãããŸãã
ãã®ããã«ãä»äºã®ã¡ã³ããŒã§æè¡æéãå ±æããããšã§ã¡ã³ããŒå人ãäœãç¿åŸããªããã°ãªããªãããèªæã«ãªããã¡ã³ããŒéã§ç¥èŠã®å ±æãå¢ããŠããããã«æããŸãããŸããäŒç€Ÿã ãã§ãªããTypeScriptã®æè¡ã³ãã¥ããã£ãïŒçŠå²¡ã§ïŒã€ãã£ãŠTypeScriptã§éçºããã仲éãïŒæå±äŒç€Ÿé¢ä¿ãªãïŒå¢ãããŠããæŽ»åããŠããŸãããã話ã§ããïŒ
ã§ã¯ã¿ãªããŸãè¯ãæ°å¹Žããè¿ããã ãããã¡ãªã¯ãªã