éçºè ãäŒæ¥ãšæåŸã«è©±ããšããåã話ãç°ãªãèšèã§ããè³ã«ããŸã-ãRubyã§æžããããä»ã¯åããŠãããã äžæ¹ã§ãé©ãã¹ãããšã¯äœããããŸããã éçºã¯äžå®å®ãªããžãã¹ã§ãããåžžã«æ°ãããã®ãåºçŸããŸããæ¯æ¥ãé¢é£æ§ãä¿ã€ããã«å€ãã®é è³ãè²»ãããªããã°ãªããŸããã
ããããåæã«ãæè¡ãžã®ä¿¡å¿ããããŠæ¥œåšã®åŽæãããããŸãã php shnikã«.NETã«ç§»è¡ããæãæ¥ãããšãäŒããŸãããPHPã¯çŽ æŽããããäžçã®ååãæžããŠããããšèãããŸãã
Rubyã®äœãåé¡ã«ãªã£ãŠããŸããïŒãã®ççºçãªäººæ°ã¯ã©ãã«è¡ããŸãããïŒ ç§ã¯æ°äººã®ã«ãŒãã¹ããšè©±ãããŸããã ããšãã°ãããŒã ãRubyããGoã«ç§»è¡ããStaplyã®Maxim IndykovãšãRubyã³ãŒã¹ãéå§ããŠçŸåšã¯å®å šã«æŸæ£ããŠããGeekBrainsã®Alexei Kuznetsovãšã§ãã
ãªãRubyã¯è¯ãã®ã§ããïŒ
Maxim IndykovïŒ maks_ohs ïŒïŒ èãæãããæ§æã§ãã³ãŒãã¯å¯èœãªéãèªã¿ããããªããŸãã ããªãã¯æ¬åœã«ã¯ã£ãããšç°¡æœã«æžãããšãã§ããŸãã èšå€§ãªæ°ã®ã©ã€ãã©ãªãå®è£ ãããŠããããããã®æ¥ç¶ã¯åé¡ãåŒãèµ·ãããŸããã
Pavel SerezhinïŒã«ããŒã®äž»ãªå©ç¹ã¯ãæé«ã®ãã¬ãŒã ã¯ãŒã¯ã§ããrailsã§ãã node.jsã®ããã«ã§ã¯ãªããæ確ã«å®è£ ããããã¿ãŒã³ã奜ããªããã«ã¯ãŒã«ã§ãã ã³ãŒãã£ã³ã°èªäœã¯è±èªã«äŒŒãŠããŸãã
Alexey KuznetsovïŒãã®èšèªã«ã¯ãDSLããã³ããžãã¹ããžãã¯ã®èšè¿°ã«é©ãã軜éã§éåžžã«ç°¡æœãªæ§æããããŸãã å ¥å ŽéŸå€ãäœãããã¬ã³ããªãŒãªã³ãã¥ããã£ã 第äžèšèªãšããŠåŠã¶ã®ã«é©ããåè£è ã
Rubyãæªãã®ã¯ãªãã§ããïŒ
ããã·ã ã»ã€ã³ãã£ã³ãïŒãªãœãŒã¹ãèŠæ±ããèšèªã®éçºã®å šæŽå²ã«ã¯ãã¡ã¢ãªæ¶è²»ã®æ·±å»ãªæé©åã䌎ããŸãã ã€ã³ã¿ããªã¿ïŒMRIïŒã®ãªãã¡ã¬ã³ã¹å®è£ ã§ã¯ããã«ãããã»ããµã³ã¢ïŒGILïŒã䜿çšããå®éã®ãã«ãã¹ã¬ããã¯ãããŸããã
åçã¿ã€ãã³ã°ã ããããããã¯ãã€ãã¹ã«èµ·å ããããšã¯å°é£ã§ãããªããªããå質ãäœäžãããªãããéçºãã¹ããŒãã¢ããã§ããããã§ãã
Pavel SerezhinïŒæžãããšã«å¯Ÿããã«ããŒã®è¯ãã¯ãèªãããšãšåããããå«ã§ãã äœãèµ·ãã£ãŠããã®ããç解ããããšã¯éåžžã«å°é£ã§ãããç¥ã¯çŠããããŠããŸããèè ã¯èªè»¢è»çå矀ã«ããã£ãŠããŠãããããšãããŸããã éçåä»ãã§ã¯äžååãªå ŽåããããŸãã
Alexey KuznetsovïŒãã®èšèªã¯ãæãè¿ã競åä»ç€ŸïŒJavaScriptããã³PythonïŒãèæ¯ã«éçºãããŠããŸããã Rubyãžã®é¢å¿ã®ççºçãªæé·ã¯ãäž»ã«Ruby on Railsã«åºã¥ããŠããŸããã ããããRailsã®ãããªãã¬ãŒã ã¯ãŒã¯ã¯ãã¹ãŠã®äžè¬çãªJavaèšèªã«å«ãŸããŠãããããRubyã«ã¯ã»ãšãã©äœãæäŸãããŠããŸããã ãªãã·ã§ã³ã®éçåä»ããããªããŠããRubyãã€ã³ãã¯è¿œå ãããŸããã
ãªããããéžãã ã®ã§ããïŒ
Alexey KuznetsovïŒç§ã¯çŽ5幎åã«C ++ã§Rubyã«åãæ¿ããŸãããããã®æç¹ã§ã¯åççãªéžæã§ããã ãšã³ããŠãŒã¶ãŒã«ããè¿ã補åãäœãããã£ãã PHPã®è©å€ã¯æé«ã§ã¯ãããŸããã§ããã JSã§ã¯ãES5 + JQueryã¯ããŒã«ãæ¯é ããPythonæ§æã¯åºæ¿çã§ã¯ãããŸããã§ããã
Pavel SerezhinïŒãŸããã¬ãŒã«ããããããç§ãããããã£ãWebéçºã®åéã«æé©ã§ãã ãããŠãéçºè æåã®èšèªã§æžãã®ã¯çŽ æŽãããããšã§ãã
ããã·ã ã»ã€ã³ãã£ã³ãïŒã³ãã¥ããã£ã¯æ¬åœã«åœ±é¿ãåããŠããŸãã èšå€§ãªæ°ã®è³ªã®é«ããã¥ãŒããªã¢ã«ãšãã¹ããã©ã¯ãã£ã¹ã ãããžã§ã¯ãã®éå§ããå±éãŸã§ãéçºãå¯èœãªéãæ確ã«ããRailsãã¬ãŒã ã¯ãŒã¯ã ãã¹ããäœæããããã®è±å¯ãªã¢ãããŒããšå®è£ ïŒRSpecãMiniTestãªã©ã
ãã®ç¬éã圌ã«ã¯æªæ¥ããããšæããŸãããïŒ
ããã·ã ã»ã€ã³ãã£ã³ãïŒã¯ããèšèªã¯çµ¶ããé²åããŠããŸãïŒãããŠçŸåšãé²åãç¶ããŠããŸãïŒã èšå€§ãªæ°ã®ç©ºåžããããŸããã phpã®èæ¯ã«å¯ŸããŠããã¹ãŠãæãè«ççã§æ£ããããã«èŠããŸããã
Pavel SerezhinïŒã«ããŒããããã«ãªããšã¯æã£ãŠããŸããã§ãããããã®éããããŸããã éçºè ã¯ã»ãšãã©ããªãããã«æãããããã¯çªç¶ã®ç«¶äºãçã¿åºããŸãã 確ãã«-ããã¯ãã€ãã¹ã®1ã€ã§ãéŠéœä»¥å€ã§ã¯6æã®ã¬ãã«ããå ¥ãããšã¯ã»ãšãã©äžå¯èœã§ãã
ãªãRubyã®å¿ èŠæ§ã¯ã©ãã©ãäœããªã£ãŠããŸããïŒ
Pavel SerezhinïŒçŸåšã§ã¯ããã人æ°ã®ããèšèªãšãã¬ãŒã ã¯ãŒã¯ãéžæããŠæ°ãããããžã§ã¯ããäœæããããšãå¢ããŠããŸãã ã«ããŒãšã¬ãŒã«ã¯ã©ã¡ããããã©ãŒãã³ã¹ããããã«é ããŠããããã¬ã³ãã«è¿œãã€ããŠããŸããã WebpackãµããŒãã¯Railsã«å°å ¥ãããŸããããããŸã圹ã«ç«ã¡ãŸããã2ã€ã®å¥ã ã®ãããžã§ã¯ãã«åå²ããæ¹ãç°¡åã§ãã
Alexey KuznetsovïŒ Node.jsã¯Webã¢ããªã±ãŒã·ã§ã³ã®ããããç©æ¥µçã«å ±é£ãããGoã¯ããããçš®é¡ã®ãŠãŒãã£ãªãã£ã䜿ãæãããŠããŸãã
ããã·ã ã»ã€ã³ãã£ã³ãïŒä»äºã®çµ¶ãéãªãè€éãã¯ç§ã«åœ±é¿ãäžããããã«æããŸãã ãœãªã¥ãŒã·ã§ã³ã«ã¯ã容éã®çµ¶ãéãªãå¢å ãšãªãœãŒã¹ã®äœ¿çšã®å¢å ããŸãã¯å€©äºã«ã¶ã€ãããªãããã«ããããã®ã¢ãŒããã¯ãã£äžã®ããªãã¯ãå¿ èŠã§ãã
Rubyã¯ãã®ãããªPLãšããŠäœæãããããžãã¹ã§ã¯ãªãéçºè ã«å¥œãŸããŠããŸãã 圌ã®çŸåšã®äžäººæ°ã¯ããã®ãããªæŠç¥ãæ©èœããªãããšã®ææšã ãšæããŸããïŒ
Alexey KuznetsovïŒç¶æ³ã¯éã®ããã«æããŸãã ä»ã®èšèªã¯ãéçºè ãåãã§äœæ¥ã§ããã¬ãã«ã«åŒãäžããããŸããïŒES6ã§ã®ç Žå£ãJava8ã§ã®ã¹ããªãŒã ãKotlinãšGoã§ã®ç«¶äºã¢ãã«ã§ããSwiftã®è匱æ§ãŒãïŒã
ããã·ã ã€ã³ãã£ã³ãïŒããžãã¹ã¯ãéãç¯çŽããã-ãµãŒããŒãªãœãŒã¹ã æ¡éãã«è² è·ãä¿æã§ãããã¯ãããžãŒãå©çšã§ããå Žåãä¿åãæåŠãã人ã¯ã»ãšãã©ããŸããã
ãã®æè¡ã«å³å¯ãªã¿ã€ãã³ã°ãããããããä¿¡é Œæ§ã«ãã©ã¹ã§ããå Žåãããã¯Rubyã®åºã®å¥ã®ç³ã§ãã
ãã·ã¢é£éŠã§ã¯ãã®ãããªç¶æ³ã«ãªã£ãŠããããã«æããŸããPHPã®éçºãè¡ãããããšããããŸãã 次ã«ãå°å ã§äººæ°ã®ããã«ããŒãç»å ŽããŸãããããã¯phpãã©ãŒãšããŠæãããŠããŸããããå€ãã®å ŽåããRubyã§æžãã®ã¯æ¬åœã«äŸ¿å©ã§ãã以å€ã®ããžãã¹äžã®è°è«ãæ¬ ããŠããŸããã ãã¹ãŠã¯å°é家ã®äžè¶³ã«ãã£ãŠæãã£ãŠããŸããã ãšãªã¯ãµãŒãšãŽãŒã®åºçŸã«ãããè°è«ã¯ããæ確ã«ãªããŸããã
ããªãã¯Rubyã§å»ããªããã°ãªããŸãããïŒ
ã¢ã¬ã¯ã»ã€ã»ã¯ãºããã©ãïŒ Rubyã§å®è¡ãã¹ãã§ã¯ãªããšæããŸããã代æ¿æ¡ãæ€èšãã䟡å€ããããŸãã
ããã·ã ã»ã€ã³ãã£ã³ãïŒåžå Žå šäœã移è¡ããŠããŸãã 倧äŒæ¥ã¯Goã®äœ¿çšãçºè¡šããŠããŸãã ããããç§ãã¡ã¯åé¡ã®ç¹å®ã®é åã§ã®ç§»è¡ã«ã€ããŠè©±ããŠããã æ°ãã人æ°ã®ããæè¡ã®ç¥èã確å®ã«ææããå¿ èŠããããŸãã
Pavel SerezhinïŒ jsã¯ã2ã€ã®ç°ãªãæ§æèšèªãã¹ãã¬ãŒããã®ã«éåžžã«äººæ°ããããéåžžã«äžäŸ¿ã§ãã æŽå²çã«ãReactã«ã¯ãã£ãšéããããŸãã®ã§ãã¹ã¿ãã¯å šäœãæåã«æ®ããŠãããšæããŸãã
ããã¯å®å šã«äž»åŒµãããŠããªãèšèªã®äžã€ã§ããããïŒ
ããã·ã ã»ã€ã³ãã£ã³ãïŒããããå®è£ ã®å®¹æããèŠæ±ããããããã¿ã€ããšMVPãè¿ éã«èšè¿°ããããã«ã圌ã«ã¯åçã®ãã®ããããŸããã è¿ éãã€å¹ççã«å®è£ ããå¿ èŠããããããžã§ã¯ãã®æªèäœåéããããŸãã æé©åãå¿ èŠã«ãªãç¬éã¯æ¥ãªããããããŸãããããåãã®ãšãããææå°æ©ãªæé©åã¯æªã§ãã
Pavel SerezhinïŒããã¯æããŸããã Rubyã®å Žåãå°ã人æ°ã®ãªãèšèªããã®ã³ãã¥ããã£ã®ããããšããç¹å®ã®è©å€ãæ®ããŸãã
Alexey KuznetsovïŒããã¯ãŸã å ã®ããšã§ãã ãããžã§ã¯ããäœã«æžãããŠããããããã»ã©éèŠã§ãªãå€ãã®ç¶æ³ããããŸãã ãããŠãé±æ«ã«MVPãæ§ç¯ããæºåãã§ããŠããå€ãã®éçºè ãããŸãã
ãŸããã«ãã¹ãã®ãã³ãããŒã ãããã°ãé·å¹Žã«ããã£ãŠè£œåãéçºã§ããŸãïŒGitHubãšGitLab-ã©ã¡ããRoRã§èšè¿°ãããŠããŸãïŒã
Rubyã¯ã誰ããç¶æããå¿ èŠãããæ°çŸäžè¡ã®ã³ãŒããèšè¿°ããŠããŸãã
ããããæ°ãããããžã§ã¯ãã®æ°ã¯æéãšãšãã«æžå°ããŸãã ç§ã¯èšèªããŸã çŽ5幎ãããšæããŸãã
Rubyã人æ°ãç¶æããã®ã«åœ¹ç«ã€ããš
ããã·ã ã»ã€ã³ãã£ã³ãïŒèšèªéçºè ã«ãšã£ãŠã®åªããæè»æ§ã ãã«ãã¹ã¬ããã§äœæ¥ããããã®æ¹åã®å®è£ ã
Pavel SerezhinïŒèšèªèªäœãšã¬ãŒã«ã®ããã©ãŒãã³ã¹ãæ¹åããŸãã ãããŠãäŒæ¥ã«å€§éã®æ¯æŽéãæäŸããŸãã
Alexey KuznetsovïŒ Rubyã¯ã«ããã£ã«ãªããŸããã§ããã ä»ã®éŠ¬è»ãç»å ŽããŸããã ãžã§ãããšã³ãžã³ã«ã¯ãããã€ãã®ãšã³ãžã³ãä»å±ããŠããŸãããä»ã®ãšã³ãžã³ã¯ãã匷ãèŒããŸãã
ãªãã·ã§ã³ã®éçåä»ãïŒããã³ãã®äžã§å®è¡ã§ãã調æŽïŒã圹ç«ã€ãšæããŸãã
人æ°ã®YaPã®ãã¡ãçŸåšããã«ãŒã«æé©ãªãã®ã¯ã©ãã§ããïŒ
ããã·ã ã»ã€ã³ãã£ã³ãïŒããããã¿ã¹ã¯ã«äŸåããŸãããã»ãšãã©ã®å Žåããã®è³ªåã«å¯Ÿããçãã¯ãšãªã¯ãµãŒã§ãã ruby / railsã³ãã¥ããã£ã®äººã ã«ãã£ãŠäœæãããèšèªã
ã¢ã¬ã¯ã»ã€ã»ã¯ãºããã©ãïŒäžè¬çã«ãç§ã¯ããã°ã©ãã³ã°èšèªã«ãã£ãŠéçºè ã«åãããããšã«è¿ã¥ããŠããŸããã ãœãããŠã§ã¢éçºè ã«ãšã£ãŠã¯ã2ã4é±éã§ååãªã¬ãã«ã§æ°ããã¹ã¿ãã¯ããã¹ã¿ãŒããããšã¯åé¡ã«ãªããŸããã
ãããŠãéçºè ãéäžããäºå®ã®ã¿ã¹ã¯ã«å¿ããŠãGo / JS / Swiftã«ç®ãåããŸãã ElixirãšClojureããããŸããããããã¯äž»æµã§ã¯ãããŸããã
Pavel SerezhinïŒã»ãšãã©ãã¹ãŠã®èªå°å¿ã®ããã«ãã¹ããGolangã«åããŠåºçºããŸãã çãã¯æããã§ãã