ãã€ãŠãRubyã¯å šå¡ã«æ¯æããŸãã
RubyèšèªãšRailsãã¬ãŒã ã¯ãŒã¯ã¯ãWebã¢ããªã±ãŒã·ã§ã³ã®äœææ¹æ³ãå®å šã«å€æŽããŸããã 圌ãã¯ããã°ã©ããŒã³ãã¥ããã£ã«äŸ¡å€ã®å®æããããããŸããã 圌ãã¯ãããã°ã©ããŒããŒã«ãçç£çã§æ¥œããéçºã®ããã«æé©åãããã¹ãã§ãããšããèããæåã«ææ¡ããŸããã
圌ãã¯ãã³ãŒãããã¹ãããŠäœ¿çšå¯èœãªç¶æ ã«ããã¿ã¹ã¯ã¯éçºè ã«ããã£ãŠãããšä»®å®ããŸããã ä»ã®èšèªãšãã¬ãŒã ã¯ãŒã¯ã¯ããã®ã¢ãããŒããunt延ãããŸã§untilããŸããã ãã®åŸãRubyã³ãã¥ããã£ã«åºæã®ååãä»ã®èšèªãšãã¬ãŒã ã¯ãŒã¯ã«çµã¿èŸŒã¿å§ããŸããã
Rubyã¯ãäž»ã«Railsãã¬ãŒã ã¯ãŒã¯ãšãDHHãWycatsãAaron PattersonãJose Valimãªã©ã®äººã ã®å€§ããªãªãŒããŒã·ããã®å¯èœæ§ã«ããããããŸããªèšèªã®ãããããªäœçœ®ããæã人æ°ã®ããèšèªã®1ã€ã«ç§»è¡ããŸããã ããããå®æçã«ããã¡ãã¡ã§ã¢ãŒãã£ãã¡ã¯ããåºå§ããŸãããããã¯èšèªã®ãããããªéå§ã®ããã«æ®ã£ããã®ã§ãã
æŽèµ°ã¡ã¢ãª
Zed Shawã¯ãã Rails is a Ghetto ãã®æçš¿ã§ãæåã®Railsã¢ããªã±ãŒã·ã§ã³ã4åããšã«åèµ·åããåå ãšãªã£ãã¬ããŒãžã³ã¬ã¯ã·ã§ã³ã®åé¡ã«ã€ããŠæŽèšãè¿°ã¹ãŠããŸãã
ä»æ¥ã®Railsã§æã人æ°ã®ãããµãŒããŒã®1ã€ã¯ãŠãã³ãŒã³ã§ãã ç§ã®Webã¢ããªã±ãŒã·ã§ã³ã¯Railsã¢ããªã±ãŒã·ã§ã³ã§ãããç§ãéçºããä»ã®ã¢ããªã±ãŒã·ã§ã³ã«æ¯ã¹ãŠéåžžã«åçŽã§ãã 512 MBã®ã¡ã¢ãªãåãããµãŒããŒã«ããã転éããæ°æ¥éã®äœæ¥ã®åŸããŠãã³ãŒã³ã¯äœ¿çšå¯èœãªãã¹ãŠã®ã¡ã¢ãªãæ¶è²»ããã¢ããªã±ãŒã·ã§ã³ã®é床ãäœäžãå§ããŸããã
解決çïŒ ãŠãã³ãŒã³ã¯ãŒã«ãŒãã©ãŒ ã 以åã®ãœãªã¥ãŒã·ã§ã³ãšããŸãå€ãããªãã
ç§ã®ãµãŒããŒã¯ãã»ãšãã©ã®ãªãœãŒã¹ãPostgresããŒã¿ããŒã¹ãããã³ä»ã®ããã€ãã®ã¢ããªã±ãŒã·ã§ã³ãæ¶è²»ãã2ã€ã®ãŠãã³ãŒã³ã¹ããªãŒã ãæäŸã§ããŸãã 確ãã«ã圌ã¯éåžžã«è¿ éã«å¿çããã®ã§ã圌ã¯ä»äºãããŸãã
䞊è¡æ§
Railsåãã®ã¢ããªã±ãŒã·ã§ã³ãæ°å¹ŽééçºããŠããŸããããå®çšŒåã¢ããªã±ãŒã·ã§ã³ã§è¿œå ã®ã¹ããªãŒã ã䜿çšããããšã¯ãããŸããã Railsèªäœã¯ã¹ã¬ããã§æ£åžžã«æ©èœããŸããããããã¯åé¡ã®ã¿ãåŒãèµ·ãããšæããŠããŸã-JavaãC ++ããã³ãã®ä»ã®OOPèšèªã§ãããã䜿çšããããšããŸããã
äžçªäžã®è¡ã¯ããã¥ãŒããã¯ã¹ãã»ããã©ããã®ä»ãã¹ãŠã«ã€ããŠèããããªããšããããšã§ãã ããã¹ã¬ãããåæ¢ããŠå¥ã®ã¹ã¬ãããæ©èœãããå Žåãããã¯ç¹å¥ãªããšã§ã¯ãªãã䞊ååŠçã«ãªããŸãã ãããŠãŸã -ããªãã®ã³ãŒãã®å®è¡ããããããã¯ã«ã€ãªãããªãããšã絶察ã«ç¢ºä¿¡ããŠããŸããïŒ
ãã¹ãã¯Rubyã³ãã¥ããã£ã®äž»èŠãªãã©ãã€ã ã§ãããããã£ãŠãã»ãšãã©ã®ã«ãŒãã¹ãããã«ãã¹ã¬ããã«è§Šããªãããšã¯é©ãããšã§ã¯ãããŸããããã¹ãããããšã¯ã»ãšãã©äžå¯èœã§ããããã®ãã°ãåçŸããããšã¯éåžžã«å°é£ã§ãã
ã»ãšãã©ã®éåžžã®éçºè ãšåæ§ã«ãç§ã¯sidekiqãŸãã¯resqueã䜿çšããŠç©äºã䞊è¡ããŠåŠçããŸãã Rails 2.2ã§ã¯ã¹ã¬ããã®å®å šæ§ãè¿œå ãããŸãããã Rails 4.2ã§ã¯Active Job APIãè¿œå ãããã¯ããã«äŸ¿å©ã«ãªããŸããã
ãã ããããã¯ã°ã©ãŠã³ãã§å®è¡ãããŠããããã»ã¹ã¯ããã¯ã°ã©ãŠã³ãã§å®è¡ãããŠããå¿ èŠããããŸãã ãŸããã¡ã€ã³ããã»ã¹ã§éèŠãªããšãå®è¡ããå¿ èŠããããŸããããã«ããããšã©ãŒã«å¯Ÿå¿ããããã¿ã¹ã¯ãå®äºããåã«ãã¹ãŠã®ãã©ã³ã¶ã¯ã·ã§ã³ãæ£åžžã«å®äºããããšã確èªãããã§ããŸãã
ã¹ããŒã
ç§ã¯å©å·±çã§ãç§ã®æéããšãŠã倧åã«ããŠããŸãã ãããã£ãŠããã¹ãã®é床ã¯ç§ãè奮ãããŸãã ãã¹ãã¹ã€ãŒãã®ããã©ãŒãã³ã¹ãæé©åããã®ã«å€ãã®æéãè²»ãããŸãããã¢ããªã±ãŒã·ã§ã³ã¢ãŒããã¯ãã£ã«å€æŽãå ãããããã®ããã«èšèšã«æ害ãäžãããããããšã¯ãããŸããã§ããã
ãã°ããã®éãç§ãåãçµãã§ãããããžã§ã¯ãã®æ©èœãã¹ããšåäœãã¹ãã®å®è£ ã«ã¯çŽ20åããããŸããã åæ£ãã¹ãã«hydraã䜿çšããŸãããããã¹ãããã¹ããããšã¯åžžã«å°é£ã§ããïŒãããããã³ãŒããè€éãããŠããŸãçŸãããªãããã§ãïŒã
ãã¹ãã®å®è¡ã«ã40ç§ããããŸãããããæ§æãšã©ãŒãäºæããªãå ¥åã®çµãããkeyword_endãäºæããŠããããªã©ã40ç§ã ãåŸ ã£ãããšããããŸããïŒ ãããŠç§ã¯åŸ ã£ãŠããŸããã
ã©ããã ãŒãŠã¹ ã¢ããªã±ãŒã·ã§ã³ã«å¿ èŠãªãã®ãã¹ãŠãããªããŒãããRailsã¢ããªã±ãŒã·ã§ã³ãïŒgithubã§èª¬æãããŠããããã«ïŒããã«ããŠã³ããŒãã§ãããã°ãããgemã§ãã ç§ã¯åœŒã奜ãã§ãã¿ããªã«åœŒãå§ããŠããŸãã
ããããã©ã®ããã«ããŠãã®ãããªé床ãéæããã®ã§ããããïŒ Goã§æžããŸããã
ã¹ã«ã©
æ°å¹Žåãç§ã¯Scalaã®ç»å Žã«åã³ãæããŸããã ããããç§ã¯ããã䜿ãå§ããŸãã-ãããŠãããå«ã£ãŠããŸãã
圌女ã¯é¢æ°åããã°ã©ãã³ã°ããå€ãã®æŠå¿µãæã£ãŠããŸãã akkaãã¬ãŒã ã¯ãŒã¯ã䜿çšãããšãä¿¡é Œã§ããã¢ããªã±ãŒã·ã§ã³ãäœæã§ããŸãã JVMã§å®è¡ããããããJavaã®ä»»æã®ã©ã€ãã©ãªã䜿çšã§ããJVMã®é床ã¯éåžžã«ãã調æŽãããŠããŸãã
èšèªèªäœã¯æ¥œããã§ãã ããããäœãç§ãæ¢ããŸãããïŒ JVMã jarããã±ãŒãžã®ç®¡çã¯ãRubygemsãBundlerãšæ¯èŒãããšè€éãããŸãã
ãã¡ãããSBTãMavenãIvyãªã©ãããããçš®é¡ã®ãœãªã¥ãŒã·ã§ã³ããããŸãããä»ã®äººã®ã©ã€ãã©ãªãã€ã³ããŒãããå¿ èŠãããå Žåããããã¯ãã¹ãŠç§ãæãããŸãã Rubyã¯ç§ãå°ç¡ãã«ãããããããŸãããããã®äžã®ããã±ãŒãžç®¡çã¯ç§ã®çç£æ§ã®äž»ãªçç±ã®1ã€ã§ãã
Scalaã«ã€ããŠç§ãæ©ãŸããã®ã¯ãç§ã䜿çšããã©ã€ãã©ãªã¯ãå€ãšèšå®ãç§ã®ãã®ãšã¯éåžžã«ç°ãªã人ã ã«ãã£ãŠJavaã§æžãããŠããããšã§ãã
Playã®Scalaã§Webã¢ããªã±ãŒã·ã§ã³ãäœæããïŒ PlayïŒãã¬ãŒã ã¯ãŒã¯ã§Java Webã¢ããªã±ãŒã·ã§ã³ãäœæããããã«èŠããŸããããæ§æãå°ãåçŽã§ããã¿ãŒã³ãæ€çŽ¢ã§ããç¹ãç°ãªããŸãã Railsã¯PlayïŒã«å€§ããªåœ±é¿ãäžããŸããããäž¡è ã®éãã¯çŽæçã§ãã
ãšãªã¯ãµãŒãšã³ã·ã¹ãã
Mixã«ããããã±ãŒãžç®¡ç
ç§ãæåã«Elixirã«é£ã³èŸŒãã ãšããMixã«åºäŒããŸããã ããã¯ãRubyã®BundlerãšRakeã®ãã€ããªããã§ãã ç§ã圌ã«ã€ããŠãšãŠãæ°ã«å ¥ã£ãŠããã®ã¯ã圌ãBundlerãšRakeããæªããªããšããããšã§ãã 圌ã¯ããã»ã©è¯ãã¯ãããŸããããããŒã¯ååã«é«ãäžãããããããŸã§äžæããããšã¯ãã§ã«ææã§ãã
Mixã¯å®ç§ã«æ©èœããéªéã«ãªãããXMLãæ··ä¹±ãããããšããããŸããã
Erlangä»®æ³ãã·ã³
Elixirã¯Erlangä»®æ³ãã·ã³ã§å®è¡ãããErlangã³ãã¥ããã£ã®ã»ãšãã©ãã¹ãŠã®äŸ¡å€ããµããŒãããŸãã ElixirãšErlangã¯ããšã©ãŒèæ§ãããã¹ã±ãŒã©ãã«ãªé¢æ°åããã°ã©ãã³ã°ã«éç¹ã眮ããŠããŸãã
Elixirã§ã®è°è«ã®ã»ãšãã©ã¯ã次ã®ã¹ããŒãã¡ã³ãã«èŠçŽãããŠããŸãã
- Erlangã¯ãéä¿¡äŒç€Ÿã®ãããã¯ãŒã¯ã®50ïŒ ãéå¶ããŠããŸãã ã䜿ãã®æºåž¯é»è©±ããå®æã¡ã³ããã³ã¹ãäŒæ©ãæåŸã«åããã®ã¯ãã€ã§ããïŒ
- æ°ååãã«ã§è³Œå ¥ããWhatsAppã䜿çšããŠã4å5,000äžäººã®ãŠãŒã¶ãŒããµããŒããã1ââå°ã®ãµãŒããŒã§æ°çŸäžã®ããã»ã¹ãåŠçãã32人ã®ãšã³ãžãã¢ããã¹ãŠã管ç
ãããã®åã䟡å€ã¯Elixirã³ãã¥ããã£ã«ãè¿ããã®ã§ãã Elixiréçºè ãšããŠãErlangã¹ãŒããŒãã€ã¶ãŒãŸãã¯ã«ãŠããŒã€httpãµãŒããŒã䜿çšããŠããå Žåãèªåã®äŸ¡å€ãè£åã£ãŠãããšã¯æããŸããã
Phoenix Webãã¬ãŒã ã¯ãŒã¯
ãã§ããã¯ã¹ãã¬ãŒã ã¯ãŒã¯ã¯æããã«Ruby on Railsã®åœ±é¿ã匷ãåããŠãããPhoenixçšã®Webã¢ããªã±ãŒã·ã§ã³ã®äœæã¯ãRailsçšã®ã¢ããªã±ãŒã·ã§ã³ã®äœæãšéåžžã«ãã䌌ãŠããŸãã Railsã«ãŒã¿ãŒã奜ãã§ãã åæ§ã«ãActionControllerãActiveRecordãRails Viewsãããã³ã¢ããªã±ãŒã·ã§ã³ã®ããã°ã©ã æ¹æ³ã Railsã§ã®ã¢ããªã±ãŒã·ã§ã³ã®ç·šæã奜ãã§ãã
Phoenixã¯Railsã«éåžžã«äŒŒãŠããã®ã§ãElixiräžã§åäœããElixirãšErlangä»®æ³ãã·ã³ã®ãã¹ãŠã®å©ç¹ãããããšãé€ããŠãRailsã¢ããªã±ãŒã·ã§ã³ãæ§ç¯ããŠããããã«æããŸãã
ããã«ããã£ãã«ãä»ããŠWebSocketããµããŒãããŸãã ããã«ãããFirebaseã§æäŸãããWebSocketãç°¡åã«äœ¿çšã§ããŸãã
圌ã¯éããšèšããŸãããïŒ åœŒã¯çš²åŠ»ã®ããã«éãã 5ãã«/æã®ã³ã¹ãã§DigitalOceanäžã®ç§ã®ãµãŒããŒããã®ãã°ãèŠãŠãã ããã ã¯ããã¯ã-ãªã¯ãšã¹ãã¯ã·ã³ã°ã«ã³ã¢ãã·ã³ã§ãã€ã¯ãç§åäœã§åŠçãããŸãã
ãªãŒããŒã·ãã
ç§ã®æèŠã§ã¯ããªãŒãã³ãœãŒã¹ãšã ãŒãã¡ã³ãã®éãã¯ããããžã§ã¯ãã«ååšãããªãŒããŒã·ããã§ãã èŠããã«ããœãããŠã§ã¢ãæ¥ã æ¹åãããããã«ã¯ãéåžžã«è³¢ã人ã ãããã«è²¢ç®ããããšãå¿ èŠã§ãã
Railsã ãŒãã¡ã³ãã¯ãDHHãAaron PattersonãJose ValimãWycatsãªã©ã®å€ãã®äœåã®ãããã§ããã®ãããªå€§ããªåŸæŒããåŸãŸããã Railsã®æåã®ããŒãžã§ã³ãéå§ãããããªããšã¯ãªããäœæ¥ã¯ç«ã¡äžãããŸããã
ããã¯æããããåãç¿æ £ã§ãããæèœãªã³ãã¥ããã£ãæ§ç¯ããã«ã¯å€ãã®ä»äºãå¿ èŠã§ãã Jose ValimãChris McCordãããã³ãã®ä»ãã¹ãŠã®ã³ã¢ããŒã ã§ããElixir-LangãšPhoenixã¯ãã³ãã¥ããã£ã®ç¹æ ã«åããŠåãç¶ããŠããŸãã
ãã°ãããå€åããŠã§ããåŸ ã£ãŠããŸã
èªè-CRUDã¢ããªã±ãŒã·ã§ã³ã¯ä»æ¥ã®ã³ã¢ãã£ãã£ã§ãã 次ã®ã¹ã¿ãŒãã¢ããããã±ãã£ããã¬ã³ã¿ã«çšAirBnBãã¯åç¶ããèŠèŸŒã¿ã¯ãããŸããã
åè³è ã¯ããã¯ãããžãŒã®å€åãåãå ¥ãã人ãã¡ã§ãã WebSocketã§ã¯ãPhoenixãšElixirã®ããã»ã¹ãšåæå®è¡ã¯ç°¡åã«éæã§ããããã°ã©ãã³ã°ã®å®¹æãã劥åããå¿ èŠããªããããå šäœãå€ãããŸãã
Ruby on Railsã倧奜ãã§ãã 2005幎ãã2014幎ã«ãããŠãWebã¢ããªã±ãŒã·ã§ã³ã®äœææ¹æ³ãå€æŽããŸããã ElixirãšPhoenixã¯2015幎ãã2025幎ã«ãããŠåãå¹æããããšæããŸãã
ãã§ã«PhoenixãšElixirã§Webã¢ããªã±ãŒã·ã§ã³ã®äœæãéå§ãããå Žåã¯ã ãã¡ãã®ãã¥ãŒããªã¢ã«ãã芧ãã ãã ã