ðRubyæŽ1ã¶æãèŠç¿ãRubyistãRubyKaigiã«åå ããŠãã話
ã¯ãããŠã®RubyKaigiïŒå ¥ç€Ÿ1ã¶æã»Rubyåå¿è ã§æãã ææŠ
2025幎3æã«toypoã«å ¥ç€ŸããŠãã¡ããã©1ã¶æããããªã¿ã€ãã³ã°ã§åå ããã®ãããšã³ãžãã¢çéã§ã¯ããªãã¿ã®æè¡ã«ã³ãã¡ã¬ã³ã¹ãRubyKaigi 2025ãã§ããã
å®ã¯ç§ããããŸã§Rubyã¯ã»ãŒæªçµéšãããã¯ãšã³ãã¯Node.jsãã¡ã€ã³ã§ãRailsã§APIãäœæ¬ãæžããããšãããçšåºŠã®ç¶æ ã§ããããããªäžã§ã®åå ã«ã¯æ£çŽãªãšããäžå®ããããŸããããtoypoã®ããšããããè¡ã£ãŠããïŒããšããæã®æ·±ãã«åŸæŒããããæåªãžåããããšã«ã
çµæçã«ããã®çµéšã¯æè¡çãªèŠéãåºããŠãããã®ã¯ãã¡ãããRubyãšããèšèªããã®ã³ãã¥ããã£ã®æåã®é åã«æ°ã¥ãããŠããããéåžžã«è¯ãæ©äŒãšãªããŸããã
ãã¡ãããã»ãã·ã§ã³ã®å 容ã¯é£è§£ãªãã®ãå€ããçè§£ã§ããã®ã¯äœæã§1å²çšåºŠãã§ãããRubyã£ãŠãããã課é¡ã«ææŠããŠããã ããèšèªã®äžèº«ã£ãŠãããªä»çµã¿ã§åããŠããã ããšãã£ãæ®æ®µããŸãæèããªãéšåã«è§Šããããã®ã¯ãåå¿è ã ããããæ°é®®ã§ãäœãããæ¥œããæéã§ããã
äŒå Žã«å
¥ãç¬éãã¯ã¯ã¯ã¯ãé«ãŸããŸãã
äŒå Žã«åºããMINASWANã®ç©ºæ°æ
RubyKaigiã¯æè¡ã«ã³ãã¡ã¬ã³ã¹ã§ãããªãããããã«éã人ãã¡ã®ãæåãããç©ºæ°æãããŸãã倧ããªé åã®ã²ãšã€ã ãšæããŸããã
ã«ã³ãã¡ã¬ã³ã¹ã¯ãAsakusa.rbãç«ã¡äžããæŸç°æããã®ãMINASWANïŒMatz Is Nice So We Are NiceïŒããšããèšèã§ã¹ã¿ãŒããåå è ã®èª°ãããã®ç²Ÿç¥ãäœçŸããŠãããã®ããã«ããã¬ã³ããªãŒã§ã誰ã«ã§ã話ããããããé°å²æ°ãäŒå Žå šäœã«æŒã£ãŠããŸããã
ãªãŒããã³ã°ã»ãã·ã§ã³ã§ã¯ãRubyã³ããã¿ãŒã§ããã¡ã³ãããŒã®ä»æ³ãããç»å£ãã»ãã·ã§ã³ã¯ãRubyãšæåã³ãŒãã®æŽå²ãšããããããã¢ãã¯ãªããŒãããå§ãŸããŸããããèªåã®å¥œããªé åãå¬ã ãšããŠèªãå§¿ã«ãšãŠããšãã«ã®ãŒãæããèããŠããã ãã§ã¯ã¯ã¯ã¯ããŸããã
å šäœãéããŠèŠããŠããæè¡çãªãããã¯ã¯ã倧ãã3ã€ã«åãããããã§ãã
æè¡çãªãããã¯3éž
- é«éåãžã®ææŠïŒYJITãZJITãªã©åŠçæ§èœã®æ¹å
- éçºãæ¯ããããŒã«ã®é²åïŒåå®çŸ©ããŒã« Steepãªã©
- Rubyã®æ°ããå¯èœæ§ã®æš¡çŽ¢ïŒmrubyãWebAssemblyãšã®é£æº
æ£çŽãæè¡çã«ãã¹ãŠãæ·±ãçè§£ã§ããããã§ã¯ãããŸããããããããã®ã»ãã·ã§ã³ããã¯åŒ·ããææŠãã®æå¿ãäŒãã£ãŠããŸããããããŠäœãããããããæ¯ããéçºè ãã¡ã®ç±éã«å§åãããŸããã
ããããã®äŒæ¥ã»ã³ãã¥ããã£ãåºå±ããŠãããçµæ¥æŽ»æ°ããããŸãã
Rubyã®æªæ¥ãæããã»ãã·ã§ã³ãã¡
RubyKaigiã§ã¯æ°å€ãã®ã»ãã·ã§ã³ãè¡ãããŠããŸãããããã®äžã§ãç¹ã«å°è±¡ã«æ®ã£ã3ã€ã®ã»ãã·ã§ã³ãã玹ä»ããŸããã©ãããRubyã®æªæ¥ãã³ãã¥ããã£ã®å§¿å¢ã匷ãæããããŠãããå 容ã§ããã
ð Goodbye fat gem 2025ïŒ@ktouïŒ
ãã®ã»ãã·ã§ã³ã§ã¯ãgeméçºè
ãçŽé¢ãããFat Gemåé¡ãã«ã€ããŠèªãããŠããŸããã
ããšãã°ã²ãšã€ã®gemãç¶æããã ãã§ããRubyã®4ããŒãžã§ã³ Ã è€æ°ã®OSã»ã¢ãŒããã¯ãã£ç°å¢ïŒ11éãïŒã«å¯Ÿå¿ããªããã°ãªãããçµæãšããŠ44éããã®çµã¿åãããæ³å®ããã¡ã³ããã³ã¹ãå¿
èŠã«ãªããŸãã
ããã«å ããŠãäŸåã©ã€ãã©ãªã®æŽæ°ãRubyæ¬äœã®å€æŽãžã®å¯Ÿå¿ãCIã®æŽåãã»ãã¥ãªãã£ãããã®è¿œåŸâŠãgemãã²ãšã€ä¿ã€ãšããããšããããã»ã©ãŸã§ã«å€ãã®ç¥èãšåªåã®äžã«æãç«ã£ãŠããã®ããšé©ããããŸããã
ãã®ã»ãã·ã§ã³ãéããŠãæ®æ®µ gem install ã§äœæ°ãªã䜿ã£ãŠããããŒã«ã®èåŸã«ããèŠåŽãšæ
ç±ã«æ°ã¥ããOSSã®ãè£æ¹ããšããŠã®æ¯ãã匷ãæèããããã«ãªããŸããã
ã䜿ãåŽããããæ¯ããåŽããžãå°ãã§ãèªåãæ©ã¿å¯ã£ãŠã¿ãããšæãããã«ãªããŸããã
ð Improvement of REXML and speed up using StringScannerïŒ@naitohïŒ
XMLããŒãµãŒãREXMLãã®é«éåã«é¢ããã»ãã·ã§ã³ãå
·äœçã«ã¯ãæåååŠçã StringScanner
ã«çœ®ãæããããšã§ã倧ããªããã©ãŒãã³ã¹åäžãåŸããããšãããã®ã§ããã
äžèŠã·ã³ãã«ãªæè¡çæ¹åã«èŠãããããããŸãããããã®ã»ãã·ã§ã³ã§æãå¿ãæãããã®ã¯ããã®æ¹åã®ããã»ã¹ã§ãã
倿°ã®å°ããªæé©åããªãã¡ã¯ã¿ãªã³ã°ãäžå¯§ã«ç©ã¿éããããæçµçãªå¹æãçã¿åºããŠããæ§åã¯ããŸãã«OSSã®çŸåŠãæãããããã®ã§ããã
OSSã®æ¹åãšã¯ããŸãã«æ ç±ããäžäººã®éçºè ã®å°éã§éããªé©æ°ã®é£ç¶ãªã®ã ãšæ¹ããŠå®æãããããåãçµã¿ã®ç©ã¿éãããä»ã®å¿«é©ãªéçºäœéšãæ¯ããŠããã®ã ãšæããšãæ·±ãæ¬æãæ±ããã«ã¯ããããŸããã§ããã
ð Modular Garbage Collectors in RubyïŒ@peterzhu2118ïŒ
ãã®ã»ãã·ã§ã³ã§ã¯ãRubyã®GCïŒGarbage CollectorïŒãã¢ãžã¥ãŒã«åããŠãå°æ¥çã«å€éšã®GCå®è£ ãå·®ãæ¿ãå¯èœã«ããæ§æ³ã«ã€ããŠèªãããŠããŸããã
ãã®æ§æ³ãå®çŸãããšããŠãŒã¹ã±ãŒã¹ãããã©ãŒãã³ã¹èŠä»¶ã«å¿ããŠGCãéžã¹ãæªæ¥ãæ¥ããããããŸãããããšãã°ããªã¢ã«ã¿ã€ã åŠçåãã®GCãçã¡ã¢ãªåãã®GCãªã©ããŠãŒã¹ã±ãŒã¹ã«å¿ããŠåãæ¿ããå¯èœã«ãªãã€ã¡ãŒãžã§ããïŒéã£ãŠããããã¿ãŸããâŠïŒïŒã
GCãšãããšããããŸã§ãRubyã«ããŸãããã®ååšã§ãæèããããšãã»ãšãã©ãããŸããã§ããããããããå éšã®ä»çµã¿ãŸã§æ¡åŒµæ§ãæãããããšããçºæ³ã«è§ŠããRubyãä»åŸããã«æè»ã§åŒ·ãèšèªãžãšé²åããŠããå¯èœæ§ã匷ãæããŸããã
ã«ãžã¥ã¢ã«ã«åŠã³ããæåãšâå»äžâã®å
RubyKaigiã§ã¯ã»ãã·ã§ã³ã®å 容ãããããšãªãããäŒå Žå šäœã«æµãããåŠã³ã®æåãããšãŠãå°è±¡çã§ããã
äŸãã°ããããã¯ãŒãã³ã°ã®æéãäŒæ©äžã®ã¡ãã£ãšããäŒè©±ã§ãæ®æ®µãªããªããªãåºäŒããªããšã³ãžãã¢ãã¡ãšã«ãžã¥ã¢ã«ã«è©±ãããšãã§ããŸããã
ã¹ã¿ãŒãã¢ããã§ã¯å°äººæ°ã§å¹
åºã圹å²ãããªããŠããæ¹ãå€§äŒæ¥ã§ã¯éšçœ²éã®èª¿æŽã«å¥èµ°ããŠããæ¹ãå°æ¹ã§ã³ãã¥ããã£ãçœåŒããŠããæ¹ãªã©ãç«å Žããã§ãŒãºã¯éã£ãŠãããããããèªåã®çŸå Žã§æå€§éã«åãå°œãããŠããŠãã©ã®äŒè©±ããããç®ã®åã®èª²é¡ã«æ¬æ°ã§åãåã£ãŠããå§¿å¢ããäŒãã£ãŠããŠããšãŠãå°è±¡çã§ããã
ãŸããé©ããã®ããã³ããã¿ãŒãããããã«ããããšããç©ºæ°æã
ç»å£è
ãRubyã®äžå¿äººç©ãã¡ããã»ãã·ã§ã³å€ã§ãæ®éã«è©±ããè·é¢ã«ããŠãèå³ãããã°ããã«è³ªåã§ããããããåšå²ãèªç¶ã«åãå
¥ããŠããŠãããã«äžåã®å£ãæããããªã空æ°ããããŸããã
ãã®ãããªéå ¬åŒãªå¯Ÿè©±ã®ããšããRubyKaigiã§ã¯ãå»äžãã©ãã¯ïŒHallway TrackïŒããšåŒã¶ã®ã ããã§ããç»å£è ã¯çºè¡šæéã®å¶çŽãããããã«è©±ããããªãã£ãå 容ããããããå Žã§è£è¶³ããããšãå€ãã®ã ãšãã
ãã®ãå»äžãã§ã®äº€æµããRubyKaigiã®é
åãäœåã«ãããŠããããšã¯ééããããŸããã
ã«ãžã¥ã¢ã«ãªéè«ã質åããæ°ããæè¡ã®çè§£ã«ç¹ãã£ãããæãã¬ãã³ããåŸããããããããããã£ãå¶ç¶ã®é£ç¶ããæè¡ã®ã³ãã¥ããã£ãè²ãŠãŠããã®ã ãšå®æããŸããã
ãŸããMatzãšãããªè¿ãã§è©±ãããšã¯ïŒMINASWAN粟ç¥ãå
šèº«ã§æããŸãã
RubyæŽ1ã¶æãèŠç¿ãRubyistã®Kaigiäœéšèšã»å®
RubyKaigiã«åå ããŠåŒ·ãæããã®ã¯ããRubyãšããèšèªã¯ãå°ã£ããšã³ãžãã¢ããèªåã®ããã«å·¥å€«ããŠããæŽå²ã®éãŸããªãã ããšããããšã§ããã
åµèšè
ã®Matzã¯ãããæ¥œããèšèªããæ±ããŠRubyãäœããå€ãã®ç»å£è
ããèªåãããã£ããããªãã£ãããäœã£ãããšãã£ããããããŠå人çã§ããšã³ãžãã¢ãããåæ©ãã話ãå§ããŠããŸããã
ã§ãé¢çœãã®ã¯ãããããŠçãŸããå·¥å€«ãæ¹åããçµæçã«ä»ã®èª°ãã®å©ãã«ããªã£ãŠãããšããããšã
Rubyã®æåã¯ããèªåãå°ã£ãããäœããâãæ°ã¥ããã誰ããå©ãã£ãŠããããšããã人éçãªé£éã§ã§ããŠãããã ãªãšããã¿ãã¿æããŸããã
ç§ããŸã ãŸã èŠç¿ãRubyistã§ã¯ãããŸããããã®RubyKaigiã§è§ŠãããäœãæãšããŠã®èªç¶ãªå§¿å¢ãã«ã倧ããªåºæ¿ãšåæ°ãããããŸããã
ã誰ãã®ããããããªããŠããèªåã®èª²é¡ã«åãåãããšãããããŠèª°ãã®åã«ãªãããããªé¢šã«æãããã3æ¥éã§ããã
ãããªäœéšããããŠãããtoypoãšããäŒç€Ÿã«ãæ¹ããŠæè¬ã®æ°æã¡ãäŒããããšæããŸãã
toypoãšãããµãŒãã¹ã®æ ¹åºã«ã¯ãâåšãã«ãã人ããã幞ãã«ãããâ ãšãã嵿¥æããã®æ³ãããããŸãã
ä»åRubyKaigiã«åå ã§ããã®ãããããã䟡å€èгã倧åã«ããŠããäŒç€Ÿã ããããã§ãããåŠã³ã®æ©äŒãåŸæŒãããŠãããCTOãã¯ãããããŒã ã®çããã®ãµããŒãã®ãããã§ããæ¬åœã«ããããšãããããŸããïŒ
Thank you RubyKaigi!
ããŒã çã§ããŒãã°ç¥é¡ãããããªïŒå¹æãããŸãããã«âŠïŒïŒ
ð·ïž #RubyKaigi2025
#Ruby
#Zenn
#toypo
Discussion