ã¯ãããï¼ æ²ç¸ãæããã¨ã³ã¸ãã¢ã®å°å±±ã§ãã
ä»å Gold Sponsor ã¨ã㦠RubyKaigi 2024 ã«åè³ããã¦ããã ããå¤ãã®ã¡ã³ãã¼ã¨åå ãã¦ãã¾ãããæ¬è¨äºã¯ãã®ã¬ãã¼ãã§ãã
RubyKaigiã¨ã¢ã«ããã²ã¼ã ã¹
RubyKaigi ã¯ãããã°ã©ãã³ã°è¨èª Ruby ã«é¢ããå½éä¼è°ã§ãã
ç§ãã¡ã¯2013å¹´ããã»ã¼æ¯å¹´åè³ãããã¦ããã ãã¦ãããä»å¹´ã§12åç®ã®ã¹ãã³ãµã¼ã¨ãªãã¾ãã
å»å¹´ã®æ§å:Â
å½æ¥ã®æ§å
å°è±¡ã«æ®ã£ãçºè¡¨
åå ããã¡ã³ãã¼ãããå°è±¡ã«æ®ã£ãã»ãã·ã§ã³ã®ææ³ãåå ã¬ãã¼ãã¨ãã¦ç´¹ä»ãã¾ãã
Unlocking Potential of Property Based Testing with Ractor / @ohbarye
@shivashin495 ã§ããã¾ããç°¡åã«ãã®ã»ãã·ã§ã³ã®æ¯ãè¿ãããã¾ãã
Ractorãç¥ã£ã¦ãã人ã¯ä¼å ´ã§ãå¤ãã9å²ãããã¯ãã¾ãããããããRactorã趣å³ãããã¯ä»äºã§ä½¿ã£ããã¨ããã人ã¨ãªãã¨æ¥ã«3å²ãããã«æ¸ã£ã¦ãã¾ãã¾ããã§ã¯ããªã使ã£ããã¨ããã人ãå°ãªããã¨ããã¨ã¦ã¼ã¹ã±ã¼ã¹ãå°ãªãããã ã¨çºè¡¨è ã¯è¿°ã¹ã¦ãã¾ãããã®ä¸ã§ãProperty Based Testingãããè¯ãã¦ã¼ã¹ã±ã¼ã¹ã§ããã¨ä»®å®ãããã®æ¤è¨¼ãããã¨ããçºè¡¨ã«ãªãã¾ãã
ç§ã®ããã²ã¼ã ããã¸ã§ã¯ãã§ã¯Example Based Testingãæ¸ããã¦ãã¾ããããã¯ããããã¹ããæ¸ãã¨ãã«ä»»æã®Example(å ·ä½çãªæ¯ãèãä¾)ãç¨æãã¦ãã®ä¸ã§æ£ããæ¯ãèããããã確èªãããã¹ãã§ããã²ã¼ã ã¯å ¥åãç¶æ ãå¤å²ã«ããããããè¤éãªã±ã¼ã¹ã§ã®æ¤è¨¼ããã¹ããç¨æããã¦ã¾ããããããã©ãã»ã©ãã¹ããç¨æãã¦ãã¨ãã¸ã±ã¼ã¹ãæå³ããªããã°ã¬ã«ãã£ã¦ãã°ãçºè¦ããããã¨ããã°ãã°ããã¾ããããã§ä»åã®Property Based Testingã«æ³¨ç®ãã¦ãã¾ããå ·ä½çãªExampleã§ã¯ãªãã©ã³ãã ãªå¤ã使ããã¨ã§ãæ½å¨çãªãã°ãçºè¦ã§ããå¯è½æ§ãããããã§ãã
ã²ã¼ã ã¢ããªã±ã¼ã·ã§ã³ä»¥å¤ã«ããã¹ã¯ãªãããã¤ã³ãã©ã®ãã¹ããªã©ã§ä½¿ããã¨é¢ç½ããã§ããã¢ã¤ãã¢ãåºããç´ æ´ãããã»ãã·ã§ã³ã§ããã
RubyGems on ruby.wasm / @kateinoigakukun
ããã«ã¡ã¯ã竹ä¸ã§ããç§ããã¯ãããã¦ããé¢å¿ã®ãã£ãWASMã«é¢ããã»ãã·ã§ã³ãã¨ã¦ãå°è±¡ã«æ®ã£ã¦ããã®ã§ããã¡ããç´¹ä»ããã¦é ãã¾ãã
WASMã§Rubyã©ã³ã¿ã¤ã ãå®ç¾ãããã©ã¦ã¶ä¸ã§Rubyã®ããã°ã©ã ãå®è¡ãããã¨ãã§ããruby.wasmã®æ©è½è¿½å ã«é¢ããã»ãã·ã§ã³ã§ããã
ruby.wasmã§ã¯Gemã使ç¨ãããã¨ãã§ãã¾ãããå¾æ¥ã¯Rubyã®ã¿ã®Gemã«ãã対å¿ãã¦ããããCæ¡å¼µãå«ãGemã¯ä½¿ãã¾ããã§ãããããã§ãäºåã«ããã±ã¼ã¸ãã¤ã³ã¹ãã¼ã«ããææ³ãé¸æããCãå«ãããã±ã¼ã¸ãå©ç¨ã§ããããã«ãªã£ãã¨ã®ãã¨ã§ããã
ä»å¾ã®å±æã¨ãã¦ãruby.wasmãé常ã®ãã©ãããã©ã¼ã ã®ä¸ã¤ã¨ãããã¨ãã§ãããã¨ãç®æ¨ã¨ãã¦ããã¨ã®ãã¨ã§ããã³ãã£ãªå®è¡ç°å¢ã¨ãã¦æç¨ãªãã®ã«ãªãããã ã¨æãã¾ãããå®éãã»ãã·ã§ã³å ã§è¡ããããã¢ã§ã¯ãMastodonã®ãµã¼ãã¼ããã©ã¦ã¶å ã§èµ·åãããã©ã¦ã¶ããã¢ã¯ã»ã¹ããã¨ãã£ããå§å·»ã®å®æ¼ããã¦é ãã¾ãããWebãµã¼ããå«ãã¦å®ç¾ããããã¨ã®ãã¹ã¦ããã©ã¦ã¶å ã§å®ç¾ããä¸ç観ãè¿ã¥ãã¦ãã¦ããã®ã ãªã¨ãããã¨ãæããããå 容ã ã£ãã¨æãã¾ãã
ã²ã¼ã ã®ãµã¼ãã¼ãµã¤ããéçºããããã§ãä»åç´¹ä»ããããã¢ã®ããã«ãã©ã¦ã¶å ã§ãã³ãã£ã«åãããã¨ãããã¨ã¯é£ããããããã¾ãããããããã²ã¼ã ãéçºããããã§å¿ è¦ãªãã®ã¯ãµã¼ãã¼ã¨ã¯ã©ã¢ã³ãã ãã§ãªããæ¤è¨¼ãã¼ã«ã諸ã ã®ç®¡çãã¼ã«ãªã©æ§ã ã«ãããä»å¾ã®ãã¼ã«éçºã®å½¢ãå¤ããæè¡ã«ãªãã®ã§ã¯ãªããã¨æãã¾ãã
Leveraging Falcon and Rails for Real-Time Interactivity / @ioquatix
@nkpoidã§ããRailsã使ã£ã¦ãªã¢ã«ã¿ã¤ã æ§ã®é«ãã¤ã³ã¿ã©ã¯ãã£ããªWebä½é¨ãæ§ç¯ããæ¹æ³ã«ç¦ç¹ãå½ã¦ãã»ãã·ã§ã³ã«ã¤ãã¦ãç´¹ä»ãã¾ãã
çºè¡¨è ã®@ioquatixãããéçºããFalconã¨ããGemã¯ãAsync Gemãåºç¤ã¨ããã¤ãã³ãé§ååã¢ã¼ããã¯ãã£ãRailsã«å°å ¥ããRack Middlewareã§ãããã¢ã§ã¯ããã®Falconã¨Railsãç¨ãã¦ãã¤ã³ã¿ã©ã¯ãã£ããªæä½ãå¿ è¦ãªWebã²ã¼ã ãFlappy Birdããå®è£ ãã¦ãã¾ãããPumaã®ä»£ããã«Falconãbundle installããã ãã§å°å ¥ã§ããå®éã«ãµã¼ããµã¤ããã¸ãã¯ã§åãFlappy Birdãè¦ããã¨ãã§ãã¾ããã
ãã¯ããã¸ã¼ã®é²åã¨ã¨ãã«ãã½ããã¦ã§ã¢éçºã®è¤éããå¢ãã¦ãã¾ããããããRubyãRailsã¯ãã®è¤éãããã¾ãé è½ãããæ¸ãã®ã楽ãããè¨èªã§ãããã¨ãé åã§ããä»åç´¹ä»ãããFalconã使ããã¨ã§ãã¤ã³ã¿ã©ã¯ãã£ããªã³ã¼ãã楽ãã¿ãªããå¦ã¶ãã¨ãã§ããã¨å®æãã¾ããããã ããããã©ã¼ãã³ã¹ã®è¦³ç¹ã§è¨ãã°ããµã¼ããµã¤ãã§ã®ãã¸ãã¯ã®éçããããããå¦ç¿ç¨éã¨ãã¦å©ç¨ããã®ãç¾å®çããããã¾ããã
ã¡ãªã¿ã«ãç§ã®ããã¸ã§ã¯ãã§ãFalconãå°å ¥ãããã¨ãã¦ã¿ã¾ããããç§ãã¡ã®ç°å¢ã§ã¯ãã®ã¾ã¾ã§ã¯åä½ãã¾ããã§ãããã¨ã¯ãããFalconã®å°å ¥ã«ããããã©ã¼ãã³ã¹æ¹åã¯é åçãªã®ã§ããã³ããã¼ã¯ãåãã¨ããã¾ã§ã¯æ¤è¨¼ãç¶ãããã¨æãã¾ãã
Embedding it(RBS Type Declaration) into Ruby code / @soutaro
ããã«ã¡ã¯ @fumihumi ã§ãÂ
RBS commiterã® soutaroãã ã®ã»ãã·ã§ã³ã§ã¯æ¢åã®RBSå®ç¾©ã¸ã®èª²é¡ãããsoutro/rbs-inline ã®ç´¹ä»ãããã¾ãããã¾ãday3ã®Ruby Committers and the World ã§ã¯ Matz ããârbs-inlineã®ãããªã³ã¡ã³ãã§å½¢å®ç¾©ãæ¸ãã¹ã¿ã¤ã«ã«ã¤ãã¦ã¯é»èªããâã¨ããã³ã¡ã³ããããã¾ãããã(ããè¦ããªãã表ç¾ãæ£ç¢ºã§ã¯ãªãããããã¾ããã)Â
ç§ã®ãããããã¯ãã§ã¯ãRBSã®å°å ¥ãé¨åçã«é²ãã¦ããã åºæ¬çã«èªåçæãç¨ãã + ä¸é¨ã®ã¿ææ¸ãã«ããåå®ç¾©ãå®æ½ãããããã¼ã ã¨ãã¦RBSå®ç¾©ãæ¸ãã¨ãããã¨ã¯å¿ é ã§ã¯ãªããã¨ãããããªå°å ¥ç¶æ³ã§ãã
ã»ãã·ã§ã³ä¸ã«è§¦ãã¦ãããåå®ç¾©ãå¥ãã¡ã¤ã«ã«ããã¨æ´æ°ãã¥ãããããããææ¸ãã®åå®ç¾©ãã¡ã¤ã«ã¯é©åã«æ´æ°ãããªããããã«ããã¨ããåé¡ã¯äºå®ãããããã¯å°å ¥æã«åå®ç¾©ãå¿ ãããã¨ããå¼·å¶ãããã«ããã¾ã§ãæ¸ããã(欲ãã)ã¡ã³ãã¼ãæ¸ãã¨ããã¹ã¿ã¤ã«ãã¨ã£ãããä¸å®ä»æ¹ããªãã¨ãæã£ã¦ãã¾ãã
ãããªä¸ã§rbs-inlineã«ãã£ã¦ä»ã¾ã§ yard ç¸å½ã§è¨è¼ãã¦ããDocãåå®ç¾©ã¨ãã¦æ±ããããã«ãªããã¨ããã®ã¯å人çã«ã¨ã¦ãå¬ãããã®ã§ããã
yard èªä½ã¯ä¸å®æ°ã®ã¡ã³ãã¼ãæ¸ãã¦ããããããããã®ã¡ã³ãã¼ã« rbs-inlineã®syntaxãåãå ¥ãã¦ããããããã°èªç¶ã¨åå®ç¾©ã潤ã£ã¦ããã¨ãããã¨ã«ãªãã¾ããä»ã¾ã§ã®éçºããã¼ã«è¿ãå½¢ã§ãåå®ç¾©ã潤ãã®ã¯å¬ããã§ããã
day3ã§ã¯ä¼å ´æ票ã«ãã£ã¦åå®ç¾©ã®ã·ã³ã¿ãã¯ã¹ã«ã¤ãã¦ã®æ票ããã£ãããã»ãã·ã§ã³ä¸ã§ãã·ã³ã¿ãã¯ã¹ã«ã¤ãã¦ã¯æ¤è¨æ®µéãã¨ãããããªå½¢ã§è§¦ãã¦ãããããã¾ã å¤ãããã¨ãããã¨ã¯æãã¾ããããã£ãããããã¯ãã«ã¦è©¦ãã¦ã¿ããã¨æãã¾ããã
YJIT Makes Rails 1.7x faster / @k0kubun
@shivashin495 ã§ãããã¡ãã¯YJITã«å°å ¥ããã¦ããæé©åã«é¢ããçºè¡¨ã§ãã
day2ã«ãBreaking the Ruby Performance Barrier / @maximecbã®çºè¡¨ãããã¾ããããã®ã»ãã·ã§ã³ã§ã¯ãYJITã¯Rubyã®ãã¼ã¸ã§ã³ãéãããã¨ã«é«éåãã¦ãããCæ¡å¼µã¸ã®ä¾åãæ¸ããã¦ç´ç²ãªRubyã§å®è£ ããããã®ã使ç¨ããJITåå¯è½ãªå²åãå¢ãããã¨ã§æ´ãªãé度ã¢ããããã¦ããã¨ããå 容ã§ããã
day3ã®ãã®ã»ãã·ã§ã³ã§ã¯ããã詳ããYJITã«å°å ¥ãããé«éåã«é¢ãããã¯ããã¯ã®å 容ã§ãvalueãstackã§ã¯ãªãregisterã使ããããã«ãããã¨ã§å¦çãé«éã«ãªã£ããªã©ã®ç´¹ä»ãããã¾ããã
å¼ç¤¾ã§ãRailsã使ç¨ãã¦ãããããããé«éåã«ã¯ã¯ã¯ã¯ãã¦ãã¾ãã以åRuby v3.1.0ã§YJITæå¹åã試ãããã¨ãããã¾ãããå½æã®æ¤è¨¼ã§ã¯ããã©ã¼ãã³ã¹ã¸ã®æ¹åã大ããã¿ããã¨ãã§ãã¾ããã§ããã(ref: https://hackerslab.aktsk.jp/2022/09/26/183545 )
ã¤ãæè¿ ruby3.3.1 ã¸ã®ã¢ãããã¼ããå®æ½ãã¦ãããã»ãã·ã§ã³ã§èãããããªæ¹åã®æ©æµãåãããããããä»åã®çºè¡¨ã®å 容ã§ã©ããã£ãçµæãåºãã®ãé常ã«æ¥½ãã¿ã§ããããã©ã¼ãã³ã¹ã®æ¯è¼ãªã©ãçºè¡¨ã§ããããã«YJITã®å°å ¥ã«ææ¦ãã¦ã¿ããã¨æãã¾ãã
Using âmodernâ Ruby to build a better, faster Homebrew / @MikeMcQuaid
æä¸ã§ããç§ããã¯ãMacã使ã£ã¦ããã¨ã³ã¸ãã¢ã®å¤ããå©ç¨ãã¦ããã¨è¨ã£ã¦ãéè¨ã§ã¯ãªããHomebrewã®ã»ãã·ã§ã³ã«ã¤ãã¦ãç´¹ä»ãã¾ãï¼ãããHomebrewãRuby製ãªã®ã§ãï¼ã
çºè¡¨ã§ã¯ãã¾ãHomebrewãå©ç¨ãã¦ããRubyãã¼ã¸ã§ã³ã®å¤é·ã®ç¢ºèªããå§ã¾ãã¾ããããªãªã¼ã¹ããã¤ãæè¿ã¾ã§ã¯OSã«å梱ãããRubyï¼âSystem Rubyâã¨å¼ã°ãããã¨ãå¤ãããã§ãï¼ã使ã£ã¦ãããããªã®ã§ãããOSã®æ´æ°ãå¹´æãçµéãã¦ããªããªãæ°ãããªããã2023å¹´ã«ãªã£ã¦ãRuby 2.6ã§åä½ãã¦ããã¨ã®ãã¨ã§ãããRuby 2.6ã¯2018å¹´ã«åçãªãªã¼ã¹ããããã®ã«ãªãã®ã§ãç¸å½å¤ãã©ã³ã¿ã¤ã ã使ãç¶ãã¦ããããã§ããã
ãããªç¶æ³ã«çºããåããã¦ãã2023å¹´ã«Homebrewã¯ç¬èªãã«ãã®Rubyï¼Portable Rubyï¼ã«åãæ¿ããæããã¾ããåãæ¿ãå½åã¯Ruby 3.1ã§ããããã¡ããã©RubyKaigiã®æéä¸ã«Ruby 3.3ã«å¯¾å¿ããã¨ã®ãã¨ã§ãã ð
ã³ãã³ãã®åºåãè¦ãã¨ã確ãã«Rubyãæ´æ°ããã¦ãã¾ããèªåãã¡ã®é½åã«åããã¦ã©ã³ã¿ã¤ã ã®ãã¼ã¸ã§ã³ãå¶å¾¡ã§ããããã«ãªã£ãç¹ã¯ãã¡ã³ããã³ã¹ã®é¢ã§ããªãè¯ããã¨ãªã®ã§ã¯ãªãã§ããããã
ã¾ããHomebrewã¨Rubyã¨ã³ã·ã¹ãã ã®é¢ä¿ã説æãããã¾ãããHomebrewã®ããã±ã¼ã¸å®ç¾©ã¯Formulaã¨å¼ã°ããRubyã®DSLã§è¨è¿°ããã¦ããã®ã§ããããã®è¨æ³ãã§ãã¯ããã¹ãã«RuboCopãSorbet, RSpecãå©ç¨ãã¦ããããã§ãããããã«ããPRã¬ãã¥ã¼ãä¸å®èªååã§ãã¦ããã¨ã®ãã¨ã§ãåºãèªç¥ããã¦ãããã¼ã«ç¾¤ãæ´»ç¨ããã¦ãããã¨ãåããã¾ããã
çºè¡¨ä¸ã¯Homebrew Formulaã®DSLã«ãå°ã触ãããã¦ããã®ã§ãããè¨å®ãã¡ã¤ã«ã¨ä¼¼ãå½¢ã§ç°¡åãã¤ç¶ºéºã«è¨è¿°ãã§ããç¹ãããRubyã¨ã®ç¸æ§ã®è¯ãã伺ãã¾ãã
ãããè¦ãã¨ãã¢ããªã±ã¼ã·ã§ã³çµã¿è¾¼ã¿ã®ã¹ã¯ãªããã§ãmrubyãç¨ããã°ãã£ã¨ç¶ºéºãªDSLã§æ¸ãããããããªãã¨å¸æãæãã¾ããããã®åéã§æå㪠Lua(JIT) ã®çµã¿è¾¼ã¿ãããã¨ããã©ã¼ãã³ã¹ã®é«ãã¯ãã¡ããé åçãªã®ã§ãããRubyç¹æã®ãæ¸ãããããã¯éçºå¹çã»ã¡ã³ããã³ã¹æ§ã®é¢ã§ããè¼ãã¾ããã¦ã¼ã¹ã±ã¼ã¹æ¬¡ç¬¬ã¨ã¯ããããããã¯ãã§ä½¿ããããç©æ¥µçã«æ¤è¨ãã¦ã¿ã¦ãè¯ãã®ããããã¾ãããã
ã¾ã¨ã
ä»åã¯æ²ç¸ã§ã®éå¬ã¨ãããã¨ã§ãè¬æ¼ã®æ¨æ¶ããã¯ãããï¼ãã¨æããé°å²æ°ã§ãããæµ·å¤ã®æ¹ã観å ãå«ãé常ã«æ¥½ããã§ããæ§åã§ãããéå¬å°ã楽ãããã®ãRubyKaigiã®ç´ æµãªã¨ããã§ããï¼
ã¾ããRubyKaigiã®1é±éã»ã©åã«ãå¼ç¤¾ãå ¬éãã¦ããOctoballã¨ããOSSã«PRãéã£ã¦ããã ããæ¹ã¨OfficialPartyã§å¶ç¶ãä¼ããã¾ããããããªåºä¼ããããã®ãRubyKaigiã®ããã¨ããã§ãï¼
æ¥å¹´åº¦ã¯æ¾å±±ã§éå¬ãããã¨ã®ãã¨ã§ãä»ããé常ã«æ¥½ãã¿ã§ãï¼ï¼
Â