RubyKaigi 2024ã«åå ãã¦ãã¾ããã
ä»ååå ã¾ã§ã«ç´ä½æ²æãã£ãã®ã§ãä¸æã¯åå ã諦ãã¦ãããã§ãããä½ã¨ãç¡äºåå ãããã¨ãåºæ¥ã¾ããã
2011å¹´ã«ååå ãã¦ä»¥æ¥ä¼ã¾ãåå ãã¦ããã®ã§ãã¤ãã«é£ç¶åå ãé絶ããã®ãã¨æã£ã¦ã¾ããããç¡äºé£ç¶åå ãéæã§ãã¦å¬ããéãã§ãã
ä»åã¯ããããäºæ
ããã£ã¦ããã³ãã¥ããã£ã¨ã®ç¹ãããå¼·ãæãããã¨ãã§ããRubyKaigiã§ããã
è²ã
æãã溢ãã¦ãã¾ã£ã¦ãæè¡çã«æ¥½ããã£ããã¨ãèªåãå¬ããã£ããã¨ãåå åã®äºæ
ã¨ãå
¨é¨æ¸ãã¦ãããããåéã«ãªã£ã¦ãã¾ãã¾ãããæ°ãåãããç®ã«ä»ããã¨ããã ãèªãã§ãã ããw
åå å
ããããä½ããã£ããã¨ããã¨ã大ä½å»å¹´ã®12æãããããå³ãæ¢ã¾ããªããªããæ´ã«å¹´æããããã«é«ç±ãåºãä¸ã§å³ãåºç¶ãã¦ããç¶æ
ã§ããã
ä½ãã«å³ãé
·ãã£ãã®ã§ãåã«å·ãä»ããå¾èé
¸ãéæµããããã¦å£°å¸¯ã®è¿ãã«æ½°çã¿ãããªã®ãåºæ¥ã¦ãã¾ã¨ãã«åããã¨ãåºæ¥ãªããªãã¾ããã
ä¸çªé
·ãæã¯ã水飲ãã ãã§è¦çã ã£ããå¤ã¯å¯ããªããå¾®ç±ãç¶ããã¨ãããã¨ã§ãä¼è·ããããã¨æã£ã¦ããããã§ãã
大ä½ãã®ç¶æ
ã2ã¶æåãããç¶ãã¦ãæ¬å½ã«ææªã®å ´åã¯å½é çã®é¡ããããããããã¯RubyKaigiã¾ã§ã«å復ãããåãããããã¨ãããã¨ã§ä¸æ¦åå ã諦ããè¦æããã¦ãäºå®ãç«ã¦ãã®ãæ¢ãã¾ããã
ãã®å¾ãç
é¢ã§æ¤æ»ããçµææªæ§è
«çã®å¯è½æ§ã¯ã»ã¼ç¡ãã¨ãããã¨ãåãã£ã¦ãããããã¡ãã£ã¨ã¥ã¤ç¶æ
ãå復ãã¾ãããå¤å°å¿ççè¦å ããã£ãã®ããããã¾ãããå復å¾åã«ãªãã¾ã§ã¯ãããªãç²¾ç¥çã«ããããã£ãã§ããã
3æå¾åãããããæ¦ãåããæ§ã«ãªã£ããã§ãããä½èª¿ãã¾ã ä¸å®å®ã ã£ãã®ã§ããã§ãã¾ã åå ã¯æ±ºãã¦ã¾ããã§ããã
4æåå¾ã§ãAsakusa.rbã®è±è¦ããã£ã¦ãä¹
ãã¶ãã«äººã¨ã¡ããã¨åã£ã¦ã¿ã¦ããªãã¨ãä¹ãè¶ããããã®ã§ããã®è¾ºãããè¡ãããã ãªã¨ããæ°ã«ãªã£ã¦ãã¾ããã
ãã®å¾ãRubyKaigiã®ã¿ã¤ã ãã¼ãã«è§£èª¬åã4æã®å¾åã«ãã£ã¦ãè¡ããã©ããã決ãã¦ãªãã®ã«åå ãããã§ãããkaneko.yããã¨ãtagomorisãããããã¼æ¥½ãããã«èªåã®ãã¼ã¯å
容ãã¢ãã¼ã«ãã¦ããã®ã§ãããã¯è¡ãè¦æã決ãããããªããªã¨æãããã®ç¿æ¥ã«äºå®ãç«ã¦ç´ãã¾ããã
å¾ã¯ãæªåããªããã¨ãç¥ã£ã¦å½æ¥ã¸ãã¨ããæãã§ãã
æ²ç¸ã¯é£è¡æ©ã®æ¬æ°ã宿ãå¤ãã®ã§ã4æã®çµããã«äºç´ãåã£ã¦ãå²ã¨ä½ã¨ããªã£ãã®ã幸ãã§ããã
åå ä¸
ä»åããããã£ãäºæ
ããã£ã¦Twitterãè¦ã¦ããã¦ã人éããã¯ããããä½èª¿ãå¿é
ãããã¨å
±ã«ãæ¥ããã¦è¯ãã£ãã§ãããã¨å£°ãããã¦ããã ãã¾ããã
ä¼ã人ãä¼ã人ã«è¨ãããããã ãããåããã¨ã°ã£ãåã£ã¦ããªwã¨æã£ã¦ãã¾ã£ãã
ã§ããæ¬å½ã«å¬ããæãã¾ããããå¿é
ãããããã¾ããããã¡ããã¨æ¥½ãããã¨ãã§ãã¾ããããã³ãã¥ããã£ã®çããã¨äº¤æµãããã¨ãåºæ¥ã¦è¯ãã£ãã§ãããããã¨ããããã¾ããï¼
ãã®ä»ã®ãã¤ã©ã¤ãã«ã¤ãã¦ã¯ãç¶ãã§æ¸ãã¦ãããã¨æãã¾ãã
Day0
ä¼å ´è¿ãã®VAMOSã§ãMNTSQããã«ãã¼ã«ã奢ã£ã¦ãããã¤ã¤ãkwappaãããryopekoããã森ç°ãããmakimotoããã¨ãã£ãé¢ã
ã§é£²ãã§ã¾ããããã®å¾ãç¦å²¡ã®jimrockããã¨åæµãã¦ãjimrockããã®æã®ç¥ãåãããã£ã¦ãã¨ãããåºã«ã¿ã¯ã·ã¼ã§è¡ããã¨ã¦ãå°å
æ°åãã£ã½ããåºã§äºæ¬¡ä¼ã¨ããæãã
ãã®å¾ã大ä½æ¯æ¥ã¤ãã³ãã®åéã«ãã¼ã«é£²ãã§è©±ãããããå ´ã¨ãã¦ãä¸è©±ã«ãªã£ãã
ç
®ä»ã(ã¢ã«ããã ã£ãï¼)ããããæ¨ãã£ããå¾ã°ã«ã¯ã³ã®é²ä¸¹ç¼ããé
ãå¸ãåãåãæã£ã¦ããã
kwappaããã¨èªåã®ä»äºä¸ã®ç«ã¡ä½ç½®ã¨ããèªåã®ä¸éå端ãã¿ãããªãã®ã«ã¤ãã¦è©±ãåºæ¥ãã®ãè¯ãã£ãã
ryopekoããã¨åãããã«ã ã£ãã®ã§ãæå¾ã«ã³ã³ããã§ç¼¶ãã¼ã«è²·ã£ã¦å»¶é·æ¦ããã®ã楽ããã£ãï¼
Day1
1æ¥ç®ãèªåã«ã¨ã£ã¦ä¸çªã»ãã·ã§ã³ãæ¿ãã£ãæ°ããã¦ããã
ãã¼ãã¼ã
ã¨ã«ããããºãããã®ãã¼ãã¼ããå§å·»ã§è¸è¡çã§ãã¡ããã¡ãã«ãã³è¯ãã£ãã1000人å
¥ããã¼ã«ã«åã¾ã£ã¦ããè´è¡ãå
¨å¡ããï¼ãï¼ä½ï¼ãã£ã¦ãªã£ã¦ã空æ°æãæãããã¨ã£ã¦äººçã§æ©ã
ç¡ãã ãããªã¨æãã¾ãããã
使ããæè¡ã®ä¸ã¤ä¸ã¤ã¯ç解ã§ããªãã¯ãªãããããããããã¨ããçºæ³åã»æ³ååã®å¹
ã®åºããå
¨ç¶éããã ãªã¨ãããã¨ãå®æãããèªåããããªãã«ã¯Rubyã§æªããããã¿ã¤ãã§ããã次å
ãéããTRICK 2025ã®éå¬ã決ã¾ã£ãããæ¥å¹´ã楽ãã¿ã§ãã人çã§ä¸åãããã¯å¿åãã¦ã¿ãããã¯ã¦ãã¦â¦â¦ã
kanekoããã®ã»ãã·ã§ã³
ã¾ããèªåãåå ã決ããkanekoãããtagomorisããã®ä¸¡åã®çºè¡¨ã1æ¥ç®ã«ãã£ãã®ã§ããããããããªèããã®ãè¯ãã£ãã
kanekoããã®çºè¡¨ã¯æè¡çã«ãé¢ç½ãã£ããã§ãããç¹ã«åããªã¨æã£ãã®ãããã¸ã§ã¯ãã®ã´ã¼ã«ã¨ãããè¡ãããæªæ¥ãã¡ããã¨è¦æ®ãã¦ãã¦ããã®ããã«å¿
è¦ãªãããã¯ãã¡ããã¨åãåºãã¦åããæãåé¡ã«è½ã¨ãã¦ãããã¨ã ã¨æãã¾ãããä»åã®çºè¡¨ã¯æ確ã«å°éå¯è½ãªæªæ¥ãè¦ãã¦ãã¦ãããã«åãããã¼ã ãè²ã£ããã¨ãã¢ãã¼ã«ããã¨ããç®çããã£ãã®ããªã¨åæã«æã£ã¦ãã¾ãã
ã¡ãªã¿ã«ãèªåã¯Rubyã®Parserã®ã¹ã¿ã³ã¹ã¨ãã¦ã¯ãå¦çç³»ã®åºç¤ã¯Parser Generatorã§çæããã¹ãã ã¨æã£ã¦ãã¦ãkanekoããã®èª¬æã«ç´å¾ãã¦ããç«å ´ã§ããRubyã¯çµæ§APIãã¡ã¼ã¹ããªãã¶ã¤ã³ã§ä½ããã¦ããè¨èªã ã¨æã£ã¦ãã¦ãããã¯Rubyã使ã人ã«è² è·ããããã«å¦çç³»ã®å
å´ãæè»ã«å¤ããããæ§ã«ããæå³ãããã®ã ã¨æã£ã¦ã¾ãããä¸æ¹ã§APIãã¡ã¼ã¹ãã§ä½ãã追å ãããã¨ããæã«ææ³ãåéä»ããªããªãå¯è½æ§ãããããã ã¨æãã¦ãã¦ãå®å
¨ã«ã¡ã³ãå¯è½ãªç¢ºããªåºç¤ã¨ãã¦ãæ確ãªææ³åºç¤ãããæ¹ãä»å¾ã®ã¡ã³ãã«ã¨ã£ã¦æå¹ãªããããªããã¨èãã¦ãã¾ãã
ä¸æ¹ãMatzãASTã®APIã¨ãã¦ã¯Prismãæ¡ç¨ããã¤ããã¨è¨ã£ã¦ãã¦ãããã«ã¤ãã¦ãèªåã¯è³æã§ããPrismã¯ã¨ã³ã·ã¹ãã ã®å¯¾å¿ç¶æ³ãããªãæèãã¦ä½ããã¦ããã¨ããããç¾å®çãªä»ã®ã¦ã¼ã¹ã±ã¼ã¹ãæ¢ã«ããç¨åº¦è§£æ±ºãã¦ããæã«åªä½æ§ãããã¾ããRubyPrizeåè³ã®æã®Kevinããã®ãã¬ã¼ã³ãèãã¾ããããæ¢ã«Parseré¢é£ã®éè¯gemã®å¤§åãç½®ãæãããã¨ã«æåãã¦ãã¾ããRubyã®ã¨ã³ã·ã¹ãã ã®ä¸ã§ä¾¿å©ã«ä½¿ããå
±éã®ASTã¤ã³ã¿ã¼ãã§ã¼ã¹ããå¦çç³»ã®ä¸ã§ã¡ã³ããããã®ã§ããã°ãããã ãã§ååå½¹å²ãæãããããããªãããªãã¨æãã¨ããã§ãã
ã¨ãã訳ã§ãä»ã®èªåã«ã¨ã£ã¦ã®çæ³çãªå
±çé¢ä¿ã¯ãLramaãå¦çç³»ã®ãã¼ãµã¼ãæ
ã£ã¦ããããCã«éããè²ã
ãªå®è£
ã®ãã¼ãµã¼ãçæå¯è½ã«ãªã£ã¦ãã¦ãRubyã¬ãã«(ãããã¯Cæ¡å¼µã¬ãã«ãï¼)ã§ãã¼ã¹å¾ã®ASTãæ±ãã¤ã³ã¿ã¼ãã§ã¼ã¹ã¯Prismãçã¿åºããAPIã§ã³ã³ããã¼ã«ã§ãããã¨ããç¶æ
ãè¯ããªã¨æã£ã¦ãã¾ããã¾ããä¸Rubyã¦ã¼ã¶ã¼ã«ããåæãªå¦æ³ã§ããw
yujiyokooããã®ã»ãã·ã§ã³
åãã¦RubyKaigiã§è¦ãæãããã¡ã³ã§ãæ¯åå®æ©ã®ã²ã¼ã æ©ã¨èªä½ã®ãã¬ã¼ã³ãã¼ã«ã§çºè¡¨èªä½ããã¢ã«ãªã£ã¦ããã¨ããã¯ã¼ã«ãªçºè¡¨ã§ãã
ä»åã¯Wiiã®ã¢ã¼ã·ã§ã³ã»ã³ãµã¼ãããªãã£ã¹ã«ç§»æ¤ãã¦é£ãã³ã³ã®ã¢ã¼ã·ã§ã³ã§ã¹ã©ã¤ããæä½ã§ããæ§ã«ãªã£ã¦ãæãæé«ã«å¤æ
ã ã¨æã£ããã¤ã³ãã§ãã
æ
ç±ã¨ããã³ãæãã¾ããã
å¾ã«ãªã£ã¦ä¼å ´ã§yujiyokooããã¨ã話ãããæ©ä¼ããããåãé´(ã¸ã£ã³ã°ã«ã¢ãã¯)ã®æç¨è
ã§ãããã¨ãåããå¬ããã£ããç¸å¤ãããã¸ã£ã³ã°ã«ã¢ãã¯ä»²éãå¤ãRubyKaigiã
tagomorisããã®ã»ãã·ã§ã³
話ã¯å¤ãã£ã¦ãtagomorisããã®Namespaceã§ãããããã¯ç´è¿ã®Rubyã®ä¸ã§ãä¸çªèªåã«åºãããã©ã¼ã³ã³ãã³ãã§Refinements以æ¥ã®ã¯ã¯ã¯ã¯æãããã¾ãã
ä»ã®ç解ã§ã¯å¦çç³»å
é¨ã®ã¯ã©ã¹ã»å®æ°æ§é ã®åºæ¬å½¢ãroot namespaceã§fixããmain namespaceãsub namespaceã¨æ®µéçã«copy on writeã§ã¯ã©ã¹æ§é ãè¤è£½ãã¤ã¤å¤æ´ãåæ ãããã¨ããæ§æã ã¨ç解ãã¦ã¾ãã
ä»åã¯å®è£
ã®è©³ç´°ã¾ã§éããæéãç¡ãã£ãæ§ãªã®ã§ãæ³åã§ãããªããã§ããRubyã®å®æ°åç
§ã¯é常ã«ãããããã®ã§ãã®è¾ºãã®è§£æ±ºã¨ãã¯ã©ã¹æ§é ãè¤è£½ããæã«æãã¬ã¨ããããåç
§ãæ®ã£ã¦ãã¦å¤æ´ãä¼æããªãã£ãããGCã§æ¶ããã¦æ»ã¬ã¨ããã®ãé£ãããã ãªã¨æã£ã¦ãã¾ããå¾ãä»å¾ã®å±éã§æ°ã«ãªã£ãã®ã¯Object Shapeã¨ã®é¢ä¿ããªãå¿
è¦ãªãã®ãã³ãã¼ããã¦ãã°ãå¾ã¯å
å´ã§åæã«è§£æ±ºãããããªæ°ã¯ãããã©ãæ¬å½ãï¼ã¨ããæ°ãããã
Namespaceã¯ãRailsã§çé¢ç®ã«ã¢ã¸ã¥ã©ã¢ããªã¹ã®åºåããè¡ãä¸ã§é常ã«å½¹ã«ç«ã¡ããã§ããRDBãå
±éåãã¤ã¤ã³ã³ããã¹ããã¨ã«ã¢ãã«ãåºåã£ã¦ãæ確ã«ç¯å²ãéå®ã§ããã¯ããã¾ããfluentdã®æ§ãªãã©ã°ã¤ã³æ§é ãæã£ãã¢ããªã±ã¼ã·ã§ã³ãä½ãä¸ã§ã¯ä¾åã©ã¤ãã©ãªã®è¡çªã¯ç¾å®çã«çºçãããåé¡ã§ãç¹ã«ãµã¤ã¬ã³ãã«å¾®å¦ã«å£ããæãä¸çªå°ãããããã解決ã§ãããã§ããä»ã«ã¯Railsãé¨åçã«ã¢ããã°ã¬ã¼ããã¦å½±é¿ç¯å²ã確èªããããbindingãå¼ã£å¼µãåºãã¦éãã ããã¦ã¿ããã§ãããUnboundMethodãå¼ã£å¼µãåºãã®ã¯æµç³ã«ã¡ã½ããã¨ã³ããªãä¸è´ããªãã®ã§ä½¿ããªãããã
æ´ã«ã¯ããã©ã¹ãã£ãã¯ãªDSLãå®ç¾ããã®ã«ã使ãããã§ããä¸å®ã®å¦çé åå
ãªãçµè¾¼ã¿ã¯ã©ã¹ãå¼ã£ã¦ãå¤æ´å
容ãéãè¾¼ããããããã®è¾ºãRefinementsã«è¿ãã¨ããããããNamespaceã ã¨å¤æ´å
容ã¯Namespaceå
¨è¬ã«ä¼æããã®ã§ãRefinementsãã便å©ãªãã¨ãããä¸æ¹ã§ãRefinementsã¯ã¹ã³ã¼ããããéå®çãªã®ãéã«è¯ãç¹ã«ãªãã±ã¼ã¹ãããã¾ããç¶æ³ã«å¿ãã¦ä½¿ãåãã¦ããããã(Refinementsã¯ã¢ã¸ã¥ã¼ã«ã®æ¢ç´¢ãã§ã¼ã³ã®åããã¡ãã£ã¨ç¹æ®ãªã®ã§ãNamespaceã®å®è£
æã®ã¨ãã¸ã±ã¼ã¹ã«ãªããããªæ°ããããw)
ä¸æ¹ã§ãã»ãã·ã§ã³ä¸ã§ãèªããã¦ããæ§ã«ãgemã®ã¨ã³ã·ã¹ãã ã«ããã¦å¤ããã¼ã¸ã§ã³ãç¶æãããéåãã®ã¤ã³ã»ã³ãã£ããçºçããæ¸å¿µã¯ç解ã§ããããããã«é¢é£ãã¦bundlerã¨ã®çµ±åã«ã¤ãã¦ãæ¸å¿µããæè¦ãTwitterã§è¦ã¾ãããã³ãã¥ããã£ã«ã¨ã£ã¦ããè¯ãæ©è½ã«ããããã«ã¯ãèãããã¨ãè²ã
ããããã§ããã®è¾ºãã®æè¦äº¤æã§ã¯èªåãè²¢ç®ã§ãããã«æãã¾ããã
åè: ãµãã©ã¤ãã§ã¼ã³ã¢ã¿ãã¯ã®å¯¾çã«ã¤ãã¦ä»¥åã®RubyKaigiã§ç»å£ããã¦ããMaciejããã®ãã¤ã¼ãããã®ã¹ã¬ãã
ãããªæãã§å®ç¨çãã¤Rubyã®æè»ãã®å¹
ãåºãããã¨ãã§ãããã¨ãããã¨ã§èªåã®ä¸ã§ã¯ä¸ç³äºé³¥ã®æ©è½ã ã¨æã£ã¦ãããã§ãããDay3ã®Matzã®ãã¼ãã¼ãã§4.0ã®ç®çã«ãªãå¯è½æ§ãé«ã¾ã£ã¦ããã注ç®åº¦ãä¸æ°ã«çä¸ããã§æã£ã¦ããããã£ã¨åããã¨ã«ãªãã¾ãããã
ã¨ãã訳ã§ãä»ååå ã®æ±ºãæã«ãªã£ã2人ã®ã»ãã·ã§ã³ã¯ã¡ããã¨èããããèãããã¨ãè²ã
ã§ãã¦æ¬å½ã«è¯ãã£ããã¢ãã¼ã«ãã¦ãã ãã®ãã¨ã¯ããã
æ親ä¼
Official Partyã®ãã±ããã¯ã®ãªã®ãªã§éã«åã£ãã®ã§ãåå ã§ãã¾ãããã¤ã³ãã¢æ´¾ã®èªåã§ããã®ä¼å ´ã¯æé«ã ã£ããªã¼ãæ²ç¸ã®æµ·è¾ºã§ãã¼ãã£ã£ã¦ã®ã¯çµµã«ãªãã
海風ã§é«ªãããããã¨ã«ãªã£ã¦ã¾ããããããã髪質ãªãã§ããww
Official Partyã¯è²ã
ãªäººã«æ¨æ¶ãã¦åã£ã¦ã2次åã¯ã¢ã«ãã«ããã¨Namespaceæå¾
度é«ãã£ããã¼ã¨ãã話ã§çãä¸ãã£ã¦ããã¨æãããã®è¾ºãããé
ã£æã£ã¦ã¦ç´°ãããã¨ãè¦ãã¦ããªãw
Day2
ãã¼ãã¼ã
Day2ã®ãã¼ãã¼ãã«ã¤ãã¦ã¯ãä»åä½ãRubyKaigiãããã¯ãªãã£ãã¨ããããè¯ããã¼ã¯ã ã£ããKaigi on Railsã ã£ãã諸æãä¸ãã¦åãã§ããã¼ã¯ãªãã§ããèªåãRubyKaigiã®ãã¼ãã¼ãã¨ãã¦æå¾
ããå
容ã¨ã¯ã¡ãã£ã¨éã£ã¦ãæãã§ãããå人çã«ã¯ããã£ã¨FiberãFiber Schedulerã¨Falconã®æ·±ãã¨ãããèãããã£ããã¾ããä½ããã¼ããªãã¼ã¯ã°ãããæ±ããã®ãéãã¨ã¯ç解ãã¦ãã¦ãåã«èªåã®å¥½ã¿ã®è©±ã§ããâ¦â¦ã
ydahããã®ã»ãã·ã§ã³
Day2ã§ç¹ã«å°è±¡ã«æ®ã£ãã®ã¯ãydahããã®Lramaã®è¨æ³æ¡å¼µã«é¢ãããã¼ã¯ã§ããèªåã¯å»å¹´ã®RubyKaigiãKaigi on Railsã®åå ã®KaigiEffectã¨ãã¦joker1007/tree-sitter-rbsã¨ãããã®ãå®è£
ãã¦ãã¾ãããè¦ã¯ã·ã³ã¿ãã¯ã¹ãã¤ã©ã¤ãã«ä½¿ããRBSã®Parserãªãã§ãããããã¯tree-sitterã¨ããParser Generatorã使ã£ã¦å®è£
ãã¦ãã¦ãtree-sitterã¯JavaScriptã®DSLã§BNFã«è¿ãã³ã¼ããè¨è¿°ãããã¨ã§Parserãçæãã¾ããJavaScriptã®DSLã§ãããã¨ã®å©ç¹ã¯ãJSã®é¢æ°ã®çµã¿åãããªã®ã§é¢æ°ã§å帰åã§ãããããã©ã¡ã¼ã¿ã¼åãã§ãããããã¿ã¼ã³åãã§ããã¨ãããã¨ã§ãã
ãããèªåã§è§¦ã£ã¦å®æãã¦ããå¾ã«ãLramaã®parameterized ruleã®è©±ãèãã¦ãcommaåºåãã®listãã¿ã¼ã³ãã¾ã¨ããä¾ãªã©ãè¦ãã¨ããã¼ãããã£ããã¨ãããã¤ã ã¨ãã¤ã¬ã¯ãã«ç解ãããã¨ãã§ãã¾ãããããã¼äºç¿ãã¦ã¦è¯ãã£ããgenericã®æ§ãªã¿ã°ä»ãããã¦ãããåæ¨è«ã欲ãããªãã®ãç解ã§ããããæçµçãªè¨èªéä¾åã®Parseråºåã®ããã«ã¯Cã¨çµåããã¢ã¯ã·ã§ã³è¨è¿°ã ã¨ä¸é½åãå¤ã訳ã§ãæãã¦ããæªæ¥ã«ãç´å¾æã¯ããã¾ããã
ã¨ãã訳ã§ãèªåã®ç解度ãå¤å°é«ãã£ãã®ããããã¨ã¦ãé¢ç½ãèãã¾ãããå®ã¯èªåãããæããã®ã«ã¯ãããã¡ãã£ã¨çç±ããã£ãã®ã§ãããããã¯Day3ã§åããã¾ãã
åå¾ã»ãã·ã§ã³
å¾ãåå¾ã®ååãããã¯ã¯ç²ãã¦ãã¦ããã«ã§ä»®ç ãåã£ããæã£ãããå¯ã¦ãã¾ãããã£é£ã°ãã¦ãã¾ã£ã¦èããªãã£ãâ¦â¦ãç¹ã«hasumikinããã®Pico RubyããLramaãå©ç¨ãã話ãæ°ã«ãªã£ã¦ããã§ããããã¨ããã®ãä¸è¨ã®æ§ã«tree-sitterã触ã£ã¦ããã¨ããããLramaããåããCã®ãã¼ãµã¼ãtree-sitterã®ã«ã¹ã¿ã ãã¼ãµã¼ã¨ãã¦å©ç¨ã§ããã°ãã¨ãã£ã¿çéã¯ã·ã³ã¿ãã¯ã¹ãã¤ã©ã¤ãã®ããã®ãã¼ãµã¼ãã¡ã³ãããªãã¦è¯ããªãã®ã§ã¯ï¼ã¨ãèãããã¨ããã£ãããã§ããããã§å©ç¨ããå´ã¨ãã¦ã®Lramaã®ä½¿ãæ¹ã«èå³ããã£ããã§ãããæ®å¿µãªããåç»å¾
ã¡ã¨ããæãã«ãªã£ã¦ãã¾ã£ãã
LT
ä»åå®ã¯CFPåºãã¦ããã©è½ã¡ã¾ãããã¾ãæ³ååºæ¥ãçç±ã¯ããã¤ããããããç©´ããã£ãã®ã§ããã¯ä»æ¹ããªãã
ãã¤ã©ã¤ãã¨ãã¦ã¯kanekoããã®ãbisonã¯ä¸ã¤ããã¹ã¿ãã¯ãæä¾ãã¦ããªããã¨è¨ãæã®æ¥½ããããªé¡ã§ããw æ¬å½ã«æé«ã ã£ããæµç³ã«é«ééãã¦è³ãä»ãã¦ããã¦ããæªããã¨ããã¯ãã£ããã©w
Drinkupã¨RubyKaraoke
ä»åã¯ã¡ã
ããã¼ã¿ããã®Drinkupã«åå ããã¦ãããã¾ãããæ²ç¸æ°è¬¡ãèãã¤ã¤é£²ãã§Ruby Karaokeã«åãã¦é³æ¥½ã¢ã¼ãã«æ°æã¡ãåãæ¿ããã®ã«ç¸æ§ãè¯ãã£ããè±ã®ä¸¸ç¼ãã¨ããåããã®ãç»å ´ãããã§ãããæµç³ã«èãåãã£ãã®ã§ä½ãå¤ãã¯é£ã¹ãããªãã£ãããªã¼ããã«ãä½ã£ã¦ãããã®ããã©ãããã¨ã³ã¸ãã¢å
¼ã¤ã¿ãªã¢ã³ã®ã·ã§ãã¨ãããã«ãã¿ã¬ã³ããªæ¹ãããããã¼ã¹ããã¼ãããã¼ã¹ããã¼ã¯ãªã©è²ã
ã¨ç¾å³ããã£ããå¾ãã£ã±å°å
ã§é£ã¹ãã´ã¼ã¤ãã£ã³ãã«ã¯ç¾å³ãã§ããã
ããããRubyKaraokeã«åæµããªããçµæçã«åºç¤ãã°ããå±
ãé¨å±ã¯ãããæå³ã§åããã¡ããã¨ã«ã©ãªã±ãããã£ã¦ãé¨å±ã ã£ãw çãä¸ããéãããããã好ããªæãã¡ããã¨æããã¨ããæãã§å²ã¨å±
å¿å°ã®è¯ãé¨å±ã«ãªã£ãã®ãè¯ãã£ãã
ä¸æµ·ããæ¥ãæ¹ã¨ç±³æ´¥ç師ãä¸ç·ã«æã£ãããç¸çããããã«æãè¤ããããã®ãå¬ããã£ãã§ããã
ãã®å¾ãä¹
ãã¶ãã«ãä¼ãããrisacanãããnappan23ãããmishmashtanããã¨åæµãã¦ããããã¤ã®ä¸äºº12å½¹ãæ«é²ããããä¸äººãªãªãµã«ãã£ãã¸ã§ã³ãã£ãããã¦ã¾ãããåãã§ãããã¦è¯ãã£ããçãä¸ãã£ã¦ãããã¨ã¨ã¦ãå¬ããã
Yuryuããã¨ãããã¤ãããããã¹ã®çåãã¾ããäºäººã§ã»ãªãã¡ããã¨è¨ããªããæããã®ã楽ããã£ããããã¯10å¹´ã¶ããããã«æã£ãæ°ãããw
ãªããã«ã©ãªã±ãã³ã°ã¨ãè¨ããã¦ãããã©ããåã«å°¾é°ãä»ãã¦ãæ§ãªæ°ãããªãããªãww
RubyKaraokeã®æã¯æãã®ã«éä¸ãã¦ã¦å
¨ç¶åçåã£ã¦ãªãã£ãã®ã§ãåçãå
¨ç¶ç¡ãã£ããããç§ã®åçããã£ããTwitterãªããã§éã£ã¦ãããã¨å¬ããã§ãï¼
ãã®å¾ãæµç³ã«ç
ã¿ä¸ããã§ç¡çãéãã¯ã¾ããã ããã¨ã¡ãã£ã¨æ©ãã«æãã¦ã帰ã£ã¦ããéãããã«ãä½æ
ãç§ã®æ§åãè¦ã«æ¥ãéçã®ããã¡ããããé£ã³åºãã¦ããããã¾ãã¾ä¼ãã ããªãã¾ã ãããèªåãçã£ã¦ç§»åãã¦ããæä¸ã«ããã¿ãªä¼ãã¨ã¯ãããããã¹ã¿ã³ã使ãå士ã¯å¼ããåããã¨ãããã¤ãã¨å®æãããã®ã¾ã¾éåºééã®ã¹ãã¼ããã«ã«ã«ç´è¡ãäºäººã§ç· ãã®ã¹ãã¼ããé£ã¹ããã¨ã«æåãã¾ããã
ãã®è¾ºãã§ãããRubyKaigiã«æ¥ãå
ã¯å®å
¨ã«åãããªã¨ç¢ºä¿¡ãã¦ããã
Day3
RubyKaraokeããæ»ã£ãå¾ãå
¥ç é害ãçºåãã¦ç¡ç ã«å¤±æããçµæãååã®ã»ãã·ã§ã³æéã«æ´»åã§ããªãã¨ãã失æ
ãand the Worldãã¼ã¼ã¼ï¼ï¼ã¨ãããããé»æããã®ãã¤ã¼ãã追ã£ããããã¨ã§å½æ¥ã®è©±é¡ã«ä»ãã¦ãããã¨ã¯ä½ã¨ãã§ãããå¾ã§ããéã£ãæã«ã礼ãè¨ãã¦è¯ãã£ãã
å®ã¯STORESããã®Ruby Quizã®3æ¥ç®ã®ãã¿ã«èªåã®ååãåºã¦ã¾ãããå½æ¥ã¯ãã¿ãã¬ã«ãªã£ã¡ããã®ã§è¨åãã¾ããã§ãããããã®è¨äºãå
ãã¿ã§ãããã¡ãã£ã¨å¬ããã£ãw
ã¢ã¼ãã³ããã®ã»ãã·ã§ã³ 㨠sekiããã®ã»ãã·ã§ã³
Day3ã¯ã¢ã¼ãã³ããã®èµ¤é»æ¨ã®è©±ãé¢ç½ãã£ããæHaskellãç·´ç¿ãã¦ããæã«èµ¤é»æ¨ãæ¸ãããã¨ããã£ããã§ãã¿ã¼ã³ãããã¨é常ã«ç¸æ§ãè¯ãã¨ãããã¨ãåãã£ã¦ããã®ã§ãå®è£
ã®æµãã¯ã¤ã¡ã¼ã¸ããããã£ããããã¦Object Shapeã®æ§è³ªã§ãããåºæ¬çã«ãã£ãã·ã¥ãæ®ãç¶ãã¦åé¤ã¯ç¡ãããªã¼ããå¤ãã®ã§æ¤ç´¢å¹çã大äºãã¡ã¢ãªå¹çãè¦æ±ããã¨ãã£ãç¹æ§ãã赤é»æ¨ã®ãã¼ã¿æ§é èªä½ãæã¤æ§è³ªã¨é常ã«ç¸æ§ãè¯ããã¨ãè¯ãåããè¯ãçºè¡¨ã ã£ããã¢ã«ã´ãªãºã ãå¦ã¶ãã¨ã®ãã¯ã¼ãä¼ãã£ã¦ãã話ã ã£ããé©åãªç¥èãããã°ãããå®å
¨ã«å¹çããåé¡ã解決ã§ãããã¨ã¨ããã®ã¯ãã°ãã°ãã£ã¦ããã®ããã«ä½¿ããææãã³ã³ãã¥ã¼ã¿ã¼ãµã¤ã¨ã³ã¹ã®åºç¤ç¥èã«è»¢ãã£ã¦ãããèªåãã¾ã ã¾ã ãªã¨ããã¯ä¸æ¯ããããæ¹ãã¦å¤§äºã ãªã¨æããçºè¡¨ã ã£ãã
sekiããã®ERBã®è©±ã§ãããèãã¦ãã¨ãã£ã±sekiããã®ãããã¯ãã¯ãªã¼ãã¼ããªãã ããªã¼ã¨æãã¦ä»æ¹ãªãã§ãããcaptureã®è§£æ±ºçã¨ãã¯ã¼ã«éããããä»ããè¦ã¦ãæç¨æ§ã«å¯¾ããç®ã®ä»ãæãè¯éãããbinding#local_variable_getã®å®ç¨çãªæ´»ç¨æ³ãè¦ãã¾ãã
Matzãã¼ãã¼ã
Matzã®ãã¼ãã¼ãã¯ãã£ã±Namespaceã¸ã®æãã話ãã¦ãããã®ãç±ãã£ãã§ããããã®è©±é¡ããã£ã¦ãRuby4ãè¦ãã¦ããããªã¨ããå°è±¡ã§ãããããã¦èªèãã¿ã¯å°å°ããæ§ã«ãããããw ã¾ãã¬ãã«ãªãããã¨è¨ããã¦ããçç±ã¯åãããã§ã¯ãªãããä¸æ¹ã§ãããªãã¨è¨ã輩ãå±
ããã¡ããã¨ç¾å®ãè¦ã¦ããè¨ã£ã¦ãï¼ã¿ãããªãã¨è¨ããããªãMatzã®æ°æã¡ãåãããã§ã¯ãªãw
tagomorisããã®ä»äºã®æ³¨ç®åº¦ãçä¸ããããã®ã¯è¯ããã¨ã ãã©ãããã¯ãã¬ãã·ã£ã¼ãåããã ãªã¼ã¨æããå¾®åãªããå¿æ´ãã¦ããã¾ãã(ã¡ããã©ãã®å¾ã®æ親ä¼ã§Justinã¨è©±ãã¦ãæã«ãããã話ã«ãªã£ã)
AfterParty
è²ã
話ãã¦è¯ãã£ããã§ããç¹ã«ãã¤ã©ã¤ãã¨ãã¦è¦ãã¦ããã®ã¯ãydahããã¨ééãã¦è©±ãããæã«ãydahããã¨kanekoããã®çºè¡¨ã®æ³å®ãªã¹ãã¼ã®è¨å®ãç§(joker1007)ã ã£ããããã¨èããã¦ããã£ããã¨ã§ããKaigi Effectã§è§¦çºããã¦RBSã®ãã¼ãµã¼ãæ¸ãæ§ãªäººãçã£ã¦è©±ãä½ãã°ãé¢ç½ã話ã«ãªãããã ãä»å¾ã®ä»²éãæ¢ãã®ã«ãæç¨ã ã¨æã£ã¦ããããæ§ã§ããå®éAfterPartyä¼å ´ã§ãããã£ãtree-sitterã®åãã«ã¤ãã¦ç解ãããã¨ãydahããã«ä¼ãããã¨ãåºæ¥ãããéçã§èãã¦ã¦é¢ç½ãã£ã訳ã ã¨æãã¾ãããã¡ããã¨èãã«è¡ãã¦æ¬å½ã«è¯ãã£ãã
追è¨: æ¹ãã¦èãããydahãããéåããã«ã¬ãã¥ã¼ãã¦ããã£ã¦ãæã«ãããã話ã«ãªã£ãã¨ãããã¨ã§ããããªã®ã§éåããã®æ¹ã®çã®æ³å®ãªã¹ãã¼ã¯ä¸æã§ãw ã§ãè¿ãã¨ããã«ãã£ãã®ãããããªããªã¼ã¨åæã«æã£ã¦ããã
å¾ãä¸ã®éã«ãã£ãã«ã©ãªã±ä»ãã®ãã¼ã«ã¦ã³ã¿ã¼ã§ä¸èã®kukoããã¨å¿µé¡ã®ã«ã©ãªã±ãåºæ¥ã¾ããã(åå£ãã¦ãã®ã«ã¾ãæã£ã¦ãã®ãã£ã¦æãã ãã©w) éã®ã«ãã©ã³ãä¸ç·ã«æãã¦æ¥½ããã£ãã¼ãkukoãããã¡ããã¡ãæä¸æããããé
å
¥ã£ã¦ãªãæã«æ¹ãã¦è¡ããããªãã
ãã®å¾ã®äºæ¬¡ä¼ã¯ãçµæ§äººæ°ãå±
ããã§ããèªåã®å±
ããã¼ãã«ããã°ãã¦ãkateiããããªããããããã¡ãã´ãå
çãogijunãããã©ã¿ã«ãããããã¨ããæãã§ãããLLVM&Rubyã®ã³ããã¿ã¼ã¨Linuxã«ã¼ãã«&Rubyã®ã³ããã¿ã¼ãããããèªåã®ä»äºã¯ãããªã«é£ãããªãã§ããã¼ã£ã¦ãäºããè¤ãåã£ã¦ãã¦ãå¨ãããç°¡åãªè¨³ãããã¼ï¼ãã¨ãªã£ã¦ãã®ãæ¬å½ã«RubyKaigiã ãªã¼ã¨ããæãã§æ¥½ããã£ãã
ãã®å¾ãä½æ
ãèªåããªããããã«ãåã¯ããæ°åºãã¦ã³ããã¿ã«ãªããã ï¼ã¨ããã¼æ¿è©°ãããã¦å¿
æ»ã«åé¿ãã¦ãæ°ããã¾ãããããããæ°ãç¡ãã¨ãç¡çã¨ãã¾ã§ã¯æã£ã¦ãªãã®ã§ãããå¿ã®æºåã¨ãè¦æã¨ãããã®ãã§ããâ¦â¦ã
ã¾ããä½ã«ããã¨ã¦ãRubyKaigiãããæ親ä¼ã«åå ã§ãã¦æé«ã¨ããè¨ããªãå¤ã§ããã
帰ãããã®ç¾½ç°ç©ºæ¸¯ã§åºä¼ã£ãæå¾ã®ã¹ã¿ã³ã使ãkakutaniããã¨ã®ãã¼ã·ã§ããã§ç· ããåºæ¥éãã ã£ããªã
ã¾ã¨ã
ä»åãåå èªä½ãèªåã®ä¸ã§å±ããã£ãçµç·¯ããã£ã¦è²ã
ãªäººã«å¿é
ãããããã¦ãã¾ãã¾ããããä½ã¨ãå
æ°ãããªå§¿ãè¦ãããã¦æ¬å½ã«è¯ãã£ãã¨æã£ã¦ãã¾ããæ¬å½ã«ä¼ã人ä¼ã人ã«å¿é
ããã¦ãã®ã§ç³ã訳ãªãã£ãw
(å®ã¯ä»ãã¡ããã¨å復ããã¨ã¯è¨ããªãç¶æ
ã§ãåã®éåæãç¶ããããªçã¿ã«ã¯çµæ§æ³¨æãæã£ã¦ããç¶æ
ã§ããè¦æã®ä¸ã§ãããRubyKaigiã§ããªãã®è² è·ãããã£ããã¨ã¯ééããªãã®ã§ãã¾ãç¶æ
ãæªåããªãããã°ããæ°ãå¼µããã¨ã«ãªãã§ãããã)
ã¾ããæè¿ä»äºã§ä½ãRubyã使ããªãé åã§ä»äºããã¦ãããã®ã§Rubyèªä½ã¨ã¯è¥å¹²é¢ãããèããªã£ã¦ããã®ã§ããããRailsã«é¢ãã¦ãã£ã¨ã«ãã®çå¾ã®æ¹ããä»å¹´ã沢山ã®æè¬ã®å£°ãèããã¦ãããã¾ããããããæè¿ã§ã®æ°å°ãªãã¢ã¦ããããã ã£ãtree-sitter-rbsã®æ´»åããã¼ãµã¼ã®ã£ã³ã°å£ã®æ³å®ãªã¹ãã¼ã®ææã«ãªã£ãããããã®ãããã§VSCodeããneovimã«æ»ããã®ã§æ¬å½ã«å¬ããã¨ä¸èã®osatohhããããæè¬ã®è¨èãé ããããã¾ããã
èªåã¨ãã¦ã¯ã¡ãã£ã¨ãããã¨ããåºæ¥ã¦ãªãã¨æã£ã¦ã¾ããããã¡ããã¨èª°ãã®å½¹ã«ç«ã£ã¦ããã¨ãä¼ãã£ã¦ãããã¨ãå®æã§ãã¦ã¨ã¦ãå¬ããã£ããããã¡ãã®æ¹ããæè¬ããããã¾ãããæ¬å½ã«ãããã¨ããããã¾ããï¼
ã³ãã¥ããã£ã®çããã¨ã®ç¹ãããæ¹ãã¦å®æããRubyKaigiã¨ããã®ã¯æ¬å½ã«è¯ãã¤ãã³ãã§ãèªåã«ã¨ã£ã¦ã大äºãªãã®ã ã£ããªã¨ãããã¨ãããåããã¾ããã
æ¬å½ã«åå ã§ãã¦è¯ãã£ãã楽ããã¦è¯ãã£ããå¤ãã®Rubyistã«ä¼ãã¦è¯ãã£ããä»å¹´ããããã¨ãRubyKaigiï¼æ¥å¹´ãç¡äºåå ã§ãã¾ãæ§ã«ï¼