DRYååã¨DRYãããªãæ¹æ³
SmartHR Advent Calendar 2024 ã·ãªã¼ãº1 ã®3æ¥ç®ã§ãã
åæ¥ã¯alpaca-tcããã®Railsã§ä»»æã®ãã£ãã·ã¥ã¹ãã¢ã移è¡ãã - alpaca-tcã§ããã
ãã¦ã12æã§ãããçããä¹¾ç¥ãã¦ãã¾ããï¼ç§ã¯å¬å ´ã®å¯ãã«èããããã¨ã¢ã³ã³ã使ãã¾ãã£ã¦ãã¾ãã®ã§å½ç¶ã®ããã«ä¹¾ç¥ãã¾ãã£ã¦ãã¾ãã
å°ãåã¾ã§ç©ºæ°æ¸ æµæ©å ¼å 湿å¨ã使ã£ã¦ããã®ã§ãããã¿ã³ã¯ã®å½¢ç¶ãè¤éã§æ±ããã¡ã ã£ããå 湿ãååãªã®ããããããã¨ããç¶æ ã§ããã
ãããªããã§2023å¹´ã«è±¡å°ã®ããããéæ³ç¶çãªå 湿å¨ãè²·ã£ã¦å©ç¨ããããã«ãªã£ãã®ã§ãããããªã潤ã£ã¦ãæãããã¦ãã¦ããªããªãå 湿å¨ã«è¿ãé¨åã®å¸å£ã¯è¥å¹²æ¹¿ã£ã¦ããããªå¢ããªã®ã§ä¹¾ç¥å¯¾çã¯ã§ãã¦ããã¨èãã¦è¯ãããã
ã¡ãªã¿ã«ãè²·ã£ãæ©ç¨®ã¯ããã§ãã www.zojirushi.co.jp
給水ã®ããã«ã¯æ¬ä½ãã¨æã£ã¦è¡ããªãã¨ãããªãã®ã§å°ã éãã£ããããã«ãã®ã§é¢¨åå ´ã§ã·ã£ã¯ã¼ãããã使ã£ã¦çµ¦æ°´ãããã¨ã«ãªã£ã¦ãã¾ãããé¨åãå¤ãæéãªã©ããªãã®ã§æ¥½ã¨è¨ãã°æ¥½ã§ããã·ã³ãã«ãªååãæ±ãããããããªã¹ã¹ã¡ã§ãã
ãããDRYãããªãæ¹æ³ã£ã¦ï½ºï¾!? ã¼ã¼ããã ãï¼
ã¨ããããã§é話ä¼é¡
DRYåå
è¯ããæªããDRYååãããèãã¾ãããããDRYã«ãããã¨ãã£ã¦åãä»æ§ã§ã¯ãªãåãã³ã¼ããã¾ã¨ãã¡ãã£ã¦PRã§ããåããããããªãã¦ããã®ã¯ä¸çã«ä¸åº¦ã¯çµé¨ãã¦ãããã®ããããã¾ããã
ã§ãå¾ ã£ã¦ãã ããããããããã¼ããã¯DRYååã«ã¤ãã¦ä½ãç¥ã£ã¦ããã®ã§ããããï¼ããè¨åãããååã§ã¯ããã¾ããã大çã¯ãããã¨æãã®ã§ããåå ¸ã§ã¯ã©ã®ããã«æ¸ããã¦ããã®ã§ãããï¼
æã ã¯åå ¸ãæ¢ããããAmazonã®å¥¥å°ã¸ã¨åãã£ã
DRYååã®åå ¸
Wikipediaã«ããã¨ãé人ããã°ã©ãã¼ãåºå ¸ã¨æ¸ãã¦ããã¾ãã
ããã俺ãã¡ã®é人ããã°ã©ãã¼ãåå ¸ã ã£ãã®ãã大æã«èªãã æ°ããããã©å ¨ãè¦ãã¦ããªãã
æ¹ãã¦èªãã§ã¿ã¦ãè¯ããããããªãâ¦â¦ã¨èããã¨ããã§æãå½ãã£ãã®ã§ãããé人ããã°ã©ãã¼ã¯åçã¨ç¬¬äºçãåºçããã¦ãã¾ãã
åçã¨ãããã20å¹´ã®æ³æãçµã¦åºçããã第äºçã§å 容ãè¦æ¯ã¹ã¦ã¿ãã¨ãå½æã¨ç¾ä»£ã§æ°ãã¤ãã¦ãããã¤ã³ããç°ãªããããããªããããã®äºã¤ãè¦æ¯ã¹ã¦ã¿ãã¨é¢ç½ããããããªãã
ã¨ããããã§è¦æ¯ã¹ã¦ã¿ã¾ãããã¨ããã®ãæ¬ã¨ã³ããªã¼ã®è¶£æ¨ã§ã*1ã
DRYååã«é¢ããåçã¨ç¬¬äºçã®éã
ã¾ããç®æ¬¡ã®ã¿ã¤ãã«ãããã¦éãã¾ãããªãã¨åçã§ã¯DRYååã¨ããååãã¤ãã¦ãªãï¼æ¬æä¸ã«åºã¦ããï¼ã
åç | 第äºç |
---|---|
1ç« 7 äºéåã®éã¡ | 1ç« 9 DRYåå - äºéåã®éã¡ |
ãã®æç¹ã§ã20å¹´ã®æãçµã¦DRYååãæ¦å¿µã¨ãã¦ç¢ºç«ããæ°é ãæãã¾ããã
ã§ã¯ããå°ãè¦ã¦ã¿ã¾ãããã
æµç³ã«æ¬æã丸ã è¼ããããã«ã¯ãããªãã®ã§ããã£ã¨è¦åºããæãåºãã¦ã¿ã¾ãã
åç
- ã©ã®ããã«äºéåãçºçããã®ãï¼
- ãããå¾ãªãäºéå
- ä¸æ ®ã®äºéå
- ææãã«ããäºéå
- éçºè éã®äºéå
第äºç
- DRYååã¯ã³ã¼ã以å¤ã«ãé©ç¨ããã
- ã³ã¼ãã®äºéå
- ã³ã¼ãã®äºéåãã¹ã¦ãç¥èã®äºéåã¨ããããã§ã¯ãªã
- ããã¥ã¡ã³ãã«äºéå
- ãã¼ã¿ã«ãããDRYååã®éå
- 表é¢ä¸ã®äºéå
- å é¨APIã®éã§ã®äºéå
- å¤é¨APIã®éã§ã®äºéå
- ãã¼ã¿ã½ã¼ã¹ã®äºéå
- éçºè éã®äºéå
æ¯ã¹ã¦ã¿ã¦
ã·ã³ãã«ãªè©±ã§ããã第äºçã«ãªã£ã¦åéãå¢ãã¦ãã¾ããããã¯ãªããã¨ããã¨ã第äºçã«ãã®ãããªè¨è¿°ãããã®ã§ãã
ãã¾ãæåã«è¿°ã¹ã¦ãããããã¨ãããã¾ããæ¬æ¸ã®åçã§ã¯ãã DRYååããæå³ãããã¨ã«ã¤ãã¦æ¸ã足ããªãé¨åãããã¾ãããå¤ãã®äººã ã¯ãããã³ã¼ãã®è©±ã ã¨åãåã£ã¦ãã¾ã£ãã®ã§ããã¤ã¾ãã DRYããã½ã¼ã¹ã³ã¼ãã®ã³ãã¼ï¼ãã¼ã¹ãããã¦ã¯ãããªããã¨è§£éãã¦ãã¾ã£ãã®ã§ããããã DRYååã®ä¸é¨ã§ãããã»ãã®äºç´°ãªä¸é¨ã§ããããã¾ããã DRYååã¯ãç¥èãããæå³ãã®äºéåã«ã¤ãã¦ã®ååã§ããã¤ã¾ããç°ãªã£ãå ´æï¼ããããã¯ã¾ã£ããç°ãªã£ãå ´æï¼ã«åããã¨ã表ç¾ããã¨ããåé¡ãé¿ããããã®ååã§ããã
âãé人ããã°ã©ãã¼ âçéã«åããããªãã®æ â 第2çãDavid Thomas, Andrew Huntè https://a.co/bGDC7rE
ãããã¦è¦ãã¨ãå½æã®å¾æã ã£ãã®ããã以éã®æå¢ãèªã¿åã£ãã®ãã¯åããã¾ãããã第äºçã§ä¸å¯§ãªè§£èª¬ã«ãªã£ã¦ããããã«è¦ãã¾ãã ã½ã¼ã¹ã³ã¼ãã®ä¾ãå¢ãã¦ãã¦ãããã¨ã¤ã¡ã¼ã¸ã¤ãããããªã£ã¦ããå°è±¡ãããã¾ãã
ãã ãããã¼ã¿ã½ã¼ã¹ã®äºéåãã«é¢ãã¦ã¯è¶£æ¨ã¯ãããããã©ãããã¾ãèªåã®å¥½ã¿ãããªãããããããâ¦â¦ã
ããã¯ãã¦ããã第äºçã§ã¯ãDRYååããæãã¦ãããã¨ã詳細åãããè¨ããããã¨ã誤解ãªãä¼ãããããªæ§æã«ãªã£ã¦ãããã¨ã¨åããã¦ãå é¨APIãå¤é¨APIãªã©ã«è¨åããã¦ããç¹ã¯ç¾ä»£ã£ã½ããªã¨æãã¾ããï¼ã¨ã¯ãããAPIé¢é£ã®è©±ã¯ããã¾ã§è¨è¿°ãåããªãã¦ç¡å¿µï¼ãä»ã«ããã³ãã¥ãã±ã¼ã·ã§ã³é¢ã§ã®è©±ã§ã¯ãã¤ãªã¼ã¹ã¯ã©ã ãslackãä¾ã¨ãã¦æãããããªã©ãæ¬å½ã«ã¢ããã¤ãºããã¦ãã¾ãã
詳ããã¯æ¬æ¸ãè²·ã£ã¦åã®ç®ã§ç¢ºããã¦ããï¼ã¨ãã話ãªãã§ãããæ¹ãã¦èªãã§ã¿ãææ³ã¨ãã¦ã¯åçã»ç¬¬äºçããããè¯ãããããã®ã®ãDRYååã«ã¤ãã¦ã¯ãããã°ã©ããç¥ãã¹ã97ã®ãã¨ãã®DRYååã®ã¨ãã»ã¤ãè¦ãã§ãååããããã¾ãããâ¦â¦ã
xn--97-273ae6a4irb6e2hsoiozc2g4b8082p.com
ããã¯ããã¨ãã¦ãæ¹ãã¦é人ããã°ã©ãã¼ã«ç®ãéãã¦ã¿ã¦å確èªããã®ã§ãããã¼ãã¯é人ããã°ã©ãã¼ã®ãã¾ããããã¨ã第ä¸ç« ãã好ãããããããããªããèªåã®ããã°ã©ãã¼ã¨ãã¦ã®èãæ¹ã®ååã¯ããã«ãããªã¨å確èªãã¾ãã*2ã ç¹ã«ãã¾ããããã§æ¸ããã¦ãã "ãåãªãç³ãåãåºãã®ãæã ã®ä»äºã§ãã£ãã¨ãã¦ãã常ã«å¿ã«èå ãæãæããªããã°ãªããªãã" ãæ¬å½ã«å¥½ãããããã§ããã
ããªãã®ç³åå·¥ã¯ã©ãããï¼ã¨èãããããé人ããã°ã©ãã¼ï¼ãã¨çããããã好ããªã®ã§â¦â¦
æçµçã«DRYååã¨ããããã¯é人ããã°ã©ãã¼å¥½ããããã¨ãã話ãªãã§ãããèªãã§ãªã人ã¯ã¿ããªèªãã§ï¼ï¼ï¼ï¼ï¼
Kaigi on Rails 2024ã¸ã®åå ã¨ãããã¼ã¶ã«ãåºããçµæå¾ããããã®
1ã¶æçµã£ã¦ãã¾ãã¾ãããããããã£ã¨ãã®æç« ãæ¸ãã¦ãã¾ã
Kaigi on Rails 2024ã大å¤æ¥½ããã¾ãããæ®æ®µä¼ããªãRubyistãªçããã¨ã交æµã§ãã¦ã¨ã¦ã楽ããã¾ãã
ã¡ãªã¿ã«ãããã¯ä¼å ´ã¸ã®ã«ã¼ãé¸æã誤ã£ã¦ããã°ãµã¤ãã«çãã¦ãã¾ã£ãäºä¾ã§ã
#kaigionrails ä¼å ´ãã±ã§ï¼ pic.twitter.com/l6VFpVB4Kd
— sugamasao (@sugamasao) 2024å¹´10æ25æ¥
Kaigi on Rails ã§å¾ãã½ããã¦ã§ã¢ã¨ã®åãåãæ¹
èªåããããããã¼ã¯ãè¦ã«ãã£ããããã¨ãããã¨ãããã¾ããâ¦â¦
以ä¸ã®ãã¼ã¯ãè¦ã¦ãæ¹ãã¦æããã®ã¯ã½ããã¦ã§ã¢éçºãã©ãã¾ã§æ·±ãã¬ãã«ã«æ½ã£ã¦è¨è¨ã»éçºã§ãããã ãªãããã¨æãã¾ããã表層çã«è§£æ±ºãããã¨ããã¨çãç®ãè¦ãã®ã¯çµé¨ãã¦ãããã®ã®ããããé«ãã¬ãã«ã§è§£æ±ºããããã«ã¯ç·´åº¦ãå¿ è¦
Railsã®ææ³ãRailsãæä¾ãã¦ãããã®ãç解ãã¦ä¸æã«ä½¿ããã¨ãããã®ããã¼ã¹ã«ããã¤ã¤ããã¢ããªã³ã°ãRailsã®æ¡å¼µãéãã¦ãã©ãç ´ç¶»ããªãããã«äºæ¥æé·ãæ¢ãããã¨ãªãã½ããã¦ã§ã¢éçºãç¶ãããããã質ã¨ã¹ãã¼ãã®ä¸¡æ¹ãç¶æãã¦ãããããã¨ããã®ã¯ãã¯ãWebã¢ããªã±ã¼ã·ã§ã³ã¨ã³ã¸ãã¢ã¨ãã¦ã®è ã®è¦ãæã ãããããæ·±ãèãããã人ã¯å°æ¬ãã¦ãã¾ãã¾ããâ¦â¦
speakerdeck.com speakerdeck.com speakerdeck.com
ä»åã¯ãããã¼ã¶ã«ãåºãã
ããã¯ããã¨ãã¦ãä»åã¯Kaigi on Railsã«ãããã¼ã¶ã«ãåºãã¾ãããäºã®æãè¡ãã¯âã®ååæ°ãæ¸ããããã°ãè¦ã¦ããã ãã¨ãã¦
はじめてのKaigi on Rails 2024 ── 初プロポーザルから登壇までの道のり - SmartHR Tech Blog
èªèº«ã§ãããã¼ã¶ã«ãåºããã®ã¯ï¼ãã¶ãï¼äººçã§2åç®ãä»ã®ã¨ãããããã¼ã¶ã«âç»å£ã¨ããæµãã¯çµé¨ãããã¨ããªãã®ã§ãã¤ãã¯éæããããã®ã§ãã
ä»åã¯ãè¯ãã³ã¼ãã®æ¸ãæ¹ãçãªããªãæ½è±¡åº¦ã®é«ããã¼ãã§å¿åããããããããRailsã¨é¢ä¿ãããããã¨ããåãã«å¯¾ãã¦è¯ãé£ã£ãæã¡è¿ããã§ããªãã¦è½é¸ããã®ããªã¨æã£ã¦ãã¾ã
ãã¼ãçã«ããã¯ãããã¨ãã話ã§ã¯ãããã®ã®è¦ãæ¹ãä¼ãæ¹æ¬¡ç¬¬ã§ãããã¨ãæã£ã¦ãã¦ããã£ã¨Railsã§ããããã³ã¼ãããããï¼ã¨ããæèãã»ããã§æ¸ããã°ããã¡ãã£ã¨è¯ãç·è¡ããããããªããã¨ãæ³åãã¦ãããããã®å ´ï¼Kaigi on Railsï¼ã§ãããªãã話ãã¹ãçç±ã¯ä½ã§ããï¼ãã¨ãã観ç¹ããã£ã¨å¼·ããããã¼ã¶ã«ã«ä¹ããããããã«ãã¹ãã ã£ããªã¨åçãã¦ãã¾ã
ã¨ã¯ããããããã¼ã¶ã«ãåºãã¨ãããã¨ã§èªèº«ããã³ã¤ãªèãã¦ãããã¨ãä½ç³»çã«ä¼ããã«ã¯ã©ããããè¯ããï¼ãªã©èãããã£ããã«ããªã£ããããããã¼ã¶ã«ãåºãéã®è¦³ç¹ãï¼çµæããèããã°å½ããåã®è©±ã§ã¯ããããã©ï¼ãã£ããåãæ¢ããããã®ã§è¯ãã£ããªã¨æãã¾ãã
ã¡ãªã¿ã«ãç»å£ã§ããæã«ã¯Joel Spolskyæ°ã®ãééã£ãã³ã¼ãã¯ééã£ã¦è¦ããããã«ããããããã¯ã«ãã¦è©±ãäºå®ã§ãããã³ã¼ãèªä½ã¨ããããã¯ã³ã¡ã³ããªã©ãå«ããå°ãå¹ åºããã¼ãã§ã¯ããã¾ãã ð ï¼ãããã¼ã¶ã«æåºåã®ä»®ã¿ã¤ãã«ã¯ã令åææ° ééã£ãã³ã¼ãã¯ééã£ã¦è¦ããããã«ãããã§ããï¼
間違ったコードは間違って見えるようにする - The Joel on Software Translation Project
Kaigi on Railsã®ä¼ç»ã»éå¶ãã¦ããã ããã¹ã¿ããã®çãããç»å£è ãã¹ãã³ãµã¼ãªã©é¢ãã£ãå ¨ã¦ã®çããã®ãããã§æ¥½ããéããã¾ããããããã¨ããããï¼
ç¥èã®æ¢æ±ã¨åã³ #RubyKaigi 2024
ï¼ã¿ã¤ãã«ã¯AIã«èãã¦ãããã¾ããã確ãã«ããã ãªï¼ï¼ã¨æã£ãã®ã§æ¡ç¨ãã¾ããï¼
æ²ç¸éå¬
å æ¥åºä¸ç²¾ã§ã¨ã«ãã家ã«å± ãããã¼ã½ã³ãªã®ã§ããããªãã¨ãä¸å¿µçºèµ·ãã¦æ²ç¸ã«è¡ããã¨ã«ãã¾ãã
ããã¦ããã£ããè¡ãã®ã§ããã°ããç¨åº¦è¦³å ããã¨ãããã¨ã§å¦»ã¨ä¸ç·ã«åä¹ããã¦5/11-5/13ã¯å®¶ææ è¡ã5/14-5/18(day0ããday3ã®ç¿æ¥ã¾ã§)ã¯RubyKaigiã¨ããã¹ã±ã¸ã¥ã¼ã«ã«ãã¾ãã
RubyKaigi - ã¯ãã¾ãã¯ãã¾ã
ããæ°å¹´ã¯ä¼ç¤¾ã®ãéã§åå ããã¦ããã ãã¦ãããä»å¹´ã¯ããªã³ã¯ã¢ããã¹ãã³ãµã¼
SmartHR Drink Up at RubyKaigi 2024 Day2 (5/16) - connpass
ããã£ããè²¢ç®ã§ããå¹ ãå¢ãã¦ãã¦ããã®ã¯å¬ããã§ã
ããã¯åãªã社å äºæ ã§ãããDevRelã®ç«ã¡ä¸ããèµ·ç¹ã¨ãã¦ç¤¾å ã§ã®ã¹ãã³ãµã¼æã®ä½å¶ããã£ãããããã®ã«ãªã£ã¦ãã¦ã社å ã§ã®ã¢ããã¼ã·ã§ã³ãç±éããã¾ãä¼ç»ã«æè¯ããããããã¨ã«ããäºååå¼·ä¼ã»äºå¾åå¼·ä¼ã»ããªã³ã¯ã¢ããã®å®æ½ãªã©ããæãã«ä¼ç»ã»éå¶ãã§ãã¦ãã¦çµç¹åã®é«ã¾ããæãã¾ã
day0 - ãã§ã«ç²å´
åä¹ãã®æ è¡ã§ãã§ã«ç²å¼ãã¦ããã®ã§ãday2ã«è¡ãããããªã³ã¯ã¢ããã®ä¸è¦ã§å°ã飲ãã§çµäº
ã¡ãªã¿ã«ããã±ããããã¨ã¯ãå風ããæ²ç¸ã®æ¹è¨ã§èªãè¨èã ããã§ããåå¼·ã«ãªãã¾ãã
day1 - åæãããããã
Writing Weird Code
PEN sanã®ãã¼ãã¼ãã¯æ¬å½ã«ãããããããªãï¼è¤ãè¨èã§ãï¼ããç¡éã«æµ´ã³ãã¦ããã®ã§ãããã®ä¸ã§ä»ã®ã»ãã·ã§ã³ãç´¹ä»ãã¦ããæµããç¾ãããã¦æ¬å½ã«ç·´åº¦ã®é«ããã¼ã¯ã§ãããTRICKã¨ãå ¨ãã§ããæ°ã¯ããªããã®ã®ãã ãã ãèå³ã湧ãã¦ãã¾ããâ¦â¦
The grand strategy of Ruby Parser
å®è³ªparserã®ãã¼ãã¼ãã ãªã¨æãã¾ãããparser.yã«ã¤ãã¦ã¯éå»ã®RubyKaigiãªã©ãéãã¦ãªãã¨ãªãç¥ã£ã¦ãããã®ã®ãåãå·»ãç°å¢ãªã©ã¯ã¾ã£ããããã£ã¦ããªãã£ãã®ã§ãé¢é£æè¡è¦ç´ ããããã³ã°ããã¦èª¬æããã¦FF3ã®é£ç©ºèãæã«å ¥ãã¦ããã®ãããªæè¦*1*2ãå¾ã¾ãã
ããã¯ããã¨ãã¦è©±ãã¦ããkaneko sanãã¨ã¦ã楽ãããã ã£ãã®ãå°è±¡çã§ã
Namespace, What and Why
Namespaceãããããå®ç¾ã§ããã¤ã¡ã¼ã¸ã湧ãã¦ãªãã£ãã®ã§ããæ¬å½ã«åãã¦ãâ¦â¦!!ã¨ããæåãããã¾ãã
Namespaceã§è§£æ±ºãã話ã§ã¯ãªããããªæ°ããããã©Rubyã§ã¯ require ããã¿ã¤ãã³ã°ã§requireå ã®å®æ°ãªã©ãã°ãã¼ãã«ã«å±éããã¦ãã¾ãã®ã¯å¶å¾¡ã§ãããªãã·ã§ã³ãããã¨å¬ãããªãã¨ããã®ã¯ãã£ã¨æã£ã¦ãã¾ã
Ruby 3.1ãã load
ã®ç¬¬äºå¼æ°ã«ã¢ã¸ã¥ã¼ã«ã渡ããããã«ãªã£ããã¤ãrequire ã§ãã§ãããäºåã«ã¢ã¸ã¥ã¼ã«ãå®ç¾©ããã®ã§ã¯ãªãä½ããã®ã·ã³ã¿ãã¯ã¹ã·ã¥ã¬ã¼ã§ã·ã¥ãã¨ãããã¨å¬ããã¨è¨ãã¾ããâ¦â¦
update: âã§æ¸ããå 容ã¯Matzã®è©±ãã¦ããpackageã«ç¸å½ããã¨ã®ãã¨ã§ã
ãããMatzã®ãã¼ãã¼ãã§è¨ããã¦ããPackageç¸å½ã®ãã®ã ã¨æãã¾ã âäºåã«ã¢ã¸ã¥ã¼ã«ãå®ç¾©ããã®ã§ã¯ãªãä½ããã®ã·ã³ã¿ãã¯ã¹ã·ã¥ã¬ã¼ã§ã·ã¥ãã¨ãããã¨å¬ããã¨è¨ãã¾ããâ¦â¦â / https://t.co/8U4xN9GjQT
— tagomoris (@tagomoris) 2024å¹´5æ22æ¥
å¤ã®é¨
å¤ã¯RubyKaigi 2024 Official Partyã¸è¡ããBBQã楽ãã¿ãªããæ¬å½ã«ãã¾ãã¾ãªãä¹ ãã¶ãã®äººã¨è©±ãã¦ããã£ãããäºãã®è¿æ³ã§ããã¨ããè¥è ã«ããªã¼ã ãã£ã¹ãã£ã¦ãªãã§ããï¼ã¨èããããªã©æéãæããä¸æ¥ã§ãããð
day2 - 話ãèãã¨è奮ãã¦ãã
Leveraging Falcon and Rails for Real-Time Interactivity
ãªã¢ã«ã¿ã¤ã éä¿¡ï¼ã¨ããã®ãï¼ï¼ã®æ´å²ã¨Falconã§Flappy Birdãä½ããã¢
ãµã¼ãã¼ãµã¤ãã§è¨ç®ãã¦ããã®çµæãæç»ãã¦ãããã ã¨æããã©ãããªã«æ»ããã«åããããã®ãªãã ãªããã¨ããã®ã¨ããããã¤ã³ã¿ã©ã¯ãã£ããªæä½ã¨ãã¯æã«Flashã§ãã£ã¦ããã®ãæãèµ·ãããã
Embedding it into Ruby code
soutaro sanã®RBSãã³ã¡ã³ãã«åãè¾¼ããããã«ãã話ãç¾å¨ã®IDEãGitHubãªã©ã®ç¶æ³ã ã¨ãã¯ãrbsãã¡ã¤ã«ãå¥ã«ããç¶æ ã§ã®ã¡ã³ããã³ã¹ãé£ããã®ã¯ãããªã®ã§ãã³ã¡ã³ãã«åãè¾¼ãã¨ããã®ã¯è¯ãããããããã¨æãã¾ãã
Reducing Implicit Allocations During Method Calling
ã¡ã½ããå¼ã³åºãæã«ä½è¨ãªãªãã¸ã§ã¯ããçæããªãããã«ãã¦ãã話ãã¡ã¢ãªã®ã¢ãã±ã¼ãç¶æ³ãè¦ãªãããã¥ã¼ãã³ã°ãã¦ããæµãã¯åèï¼ä½ã®ã ããï¼ã«ãªãã¾ãã
ãã®ã»ãã·ã§ã³ãè¦ã¦ããªãã£ãååã«è©±ãã¨ãããç é½Rubyã«æ¸ãã¦ããå 容ãè¿ãã£ã½ãã§ãããç é½Rubyãç©èªãã¦ããã®ããã¬ã¦ãã¾ã£ãâ¦â¦
Good first issues of TypeProf
æ¯å¹´ãTypeProfã®ãã¼ã¯ã¯æ¥½ãã¿ã«ãã¦ããã®ã§ãããä»å¹´ã¯ã³ã³ããªãã¥ã¼ãããããããããã®ãã¥ã¼ããªã¢ã«çãªè©±ã§ãã
TypeProfã¯æ¯å¹´ãæå¾ ãã¦ãã¾ãï¼ãã¨ããæ°æã¡ãæã£ã¦ããã®ã§ãããä»åã®ãã¼ã¯ã§ã1人ã§éçºãã¦ãã®å¤§å¤ã¹ãã¨ãã話ãèãã¦èªåãä½ããã®ãæä¼ããã§ããã°ããã¨ããæ°æã¡ã«ãªã£ã¦ãã¾ãï¼ãªã£ã¦ããã ããããã¡ãªã®æãåããã¾ãããï¼
å¤ã®é¨
day 2ã¯ä¼ç¤¾ã®ããªã³ã¯ã¢ããæºåã®ããLTã®éä¸ã§æãã¦äºåæºåã¸
ããªã³ã¯ã¢ããã§ã¯å ¥å£ã®æ¡å ãã¼ã½ã³ã¨ãã¦é段ãä¸ãã£ãã¨ããã§ãåºè¿ãããå½¹ãããã¾ãããæ¥å ´ãã¦ããã ããã¿ãªããæ¬å½ã«ãããã¨ããããã¾ã
ããªã³ã¯ã¢ããå¾ã¯é©å½ãªãåºã§ä¼ç¤¾ã®äººã¨é£²ã¿ã¤ã¤ã@kwappa san / @tagomoris san / @tompng san / @gachacomplete san ã¸è¿æ³ããã¼ã¯ã®ææ³ãªã©ãä¼ãã§ãã¦ããã£ãã§ããã¬ãã£ãã³å çã¯mallocåç»ã®ããããã®ãã¡ã³ã ã£ãã®ã§ã¡ããã¨ã話ã§ããã®ããã¡ããã¡ãå¬ããã£ãã§ãð
æ²ç¸ã®ç· ãã¯ã¹ãã¼ããã¨èãã¦ããã®ã§ä¸æ¥ã®æå¾ã«ã¹ãã¼ããé£ã¹ã«è¡ã£ãã®ãè¯ãçµé¨ã§ããããããã«40æ³éã & 24æéãã«ã¹ãã¼ããé£ã¹ãã®ã¯ããããããã£ãã®ã§ããã赤身ã®ã¹ãã¼ãã ã¨æå¤ã¨ã·ã¥ãã¨è¡ãã¦æ°ããæ¦å¿µãç²å¾ãã¦ãã¾ãã¾ããâ¦â¦
ç· ãã®ã¹ãã¼ãã赤ã¿ã®èã ã¨ã¤ã±ãã¨ãããã¨ãç¥ã£ã¦ãã¾ã£ã #rubykaigi pic.twitter.com/g1Lw80cSdW
— sugamasao (@sugamasao) 2024å¹´5æ16æ¥
day3 - æ¥å¹´ã®RubyKaigiã楽ãã¿ããã
åæ¥ãIVRy社ããããããã£ãé 豪ä¼èª¬ã飲ãã§ãããããããããã¨å æ°ã«èµ·åºãé 豪ä¼èª¬ãã ããâ¦â¦
Ruby Committers and the World
ä¾å¹´ãè±èªã§ã®ããªã¼ãã¼ã¯ã«ãªãã¨20%ãããããç解ã§ããªãã¦ã楽ãããã©ãããããããã¨ããæãã«ãªããã¡ã ã£ãã®ã§ãããä»å¹´ã¯ãã¼ã¯ãã¼ããªã©ãããæãã«æ´çãã¦ããããããããã ãã¶ç解ã§ããæ°ããã¾ããã³ããã¿ã¼é£ã®ä¸ã§ãæè¦ãåãããããã¦ããã®ã¯å´ããèãã¦ãã¦é¢ç½ãã£ãã§ã
soutaro sanãã³ã¡ã³ãã«è¨è¼ããRBSã®è¨æ³ã«ã¤ãã¦æ¥å ´è ã«èãã¦ãã¦ãèªåãæãæããã»ãããã¡ãå°æ°æ´¾ã ã£ãããã¦ãããããã¨ãªã£ãããã¾ãã
ããã¯ã³ã¡ã³ãã«è¨è¼ããäºã ã¨ãã話ã§ã¯ãªãã¨æããã§ãããåã«ãããµãã¼ããå¼·ããªãã°ãªãã»ã©ãclassï¼ãããã¯Dataãªã©ï¼ã§ã®ãªãã¸ã§ã¯ãã®å®ç¾©ãéè¦ã«ãªã£ã¦ããããªãã¨æã£ãããã¦ãã¾ããä¾ãã° Integer ã§ããã ãã§ã¯ãªããã1ã10ã¾ã§ã®Integerã§ããããªã©ã表ç¾ã§ãã¦åæ å ±ã§äºåæ¡ä»¶ï¼ã¨è¡¨ç¾ããã®ãæ£ãããããããªããã©ï¼ãæ示ã§ããããã«ãªãã¨å¬ããâ¦â¦ãã¨ãããããã¯åã«unionã§åãå®ç¾©ãããã¨ãã話ãªæ°ããã¦ãã¾ãããå¿ãã¦ãã ããâ¦â¦ï¼ï¼ï¼
Speeding up Instance Variables with Red-Black Trees
ã¡ãã£ã¨äºæ ããã£ã¦ãã¼ã¯ã«é ãã¦ãã¾ã£ãã®ã§ããã赤é»æ¨ã®èª¬æããã¤ã¤ãããRubyã§æ´»ç¨ãã¦ããå®ä¾ã«å±éããæµãã¯ãã¡ããã¡ãé¢ç½ãã£ãã§ããObject Shapesãæ¯å¹´è©±ãèãã¦ãã¦ã¡ãã£ã¨ãã¤ãããå ·åãé«ããªã£ã¦ããæ°ããã¾ã
ERB, ancient and future
é¢ãããã¡ã³ãªã®ã§ä»å¹´ãè´ãã¾ãããERBã®è©±ãèãã¦ãã¦ãããã¯CGI!!ãã¨è奮ãã¦ããããCGIã ããã¨ããå±éã«ãªã£ã¦æ¥½ããã£ãã§ã
èªåãæ¬å½ã«æåéãé§ãåºãã¨ã³ã¸ãã¢ã ã£ãé 㯠print ã§ãããããã®ãåºåãã¦ãããã®ã§ããããã®æ代ã«ERBã®ã¢ã¼ããã¯ãã£ãæ¤è¨ã§ããã®ã£ã¦æ¬å½ã«ããããªããä»è¦ãã¨ãããã¯ãããã¨ãªããããããªãã§ããâ¦â¦
Matz Keynote
Ruby2ï¼2.0ã§ã¯ãªãï¼ã®æ§æ³ã¨ç¾å¨å®ç¾ããã¦ããæ©è½ã®è©±ããNamespaceãå ¥ã£ã¦Ruby2æ代ã®æ§æ³ãä¸éãå®è£ ã§ãããRuby 4ã«ãããããªã¨ããå 容
Namespaceã®ä»æ§ãªã©ã¯ããããããè©°ãã¦ãã段éã ã¨æãã¾ããããã¡ããã¡ã夢ã®ãã話ã§ããã£ããæ¯å¹´ãRubyKaigiã§Matzã®è©±ãèãã¨æªæ¥ã«å¯¾ãã¦ã¯ã¯ã¯ã¯ããããã¦ããããªãã¨æãã¾ãï¼å°ä¸¦æï¼
å¤ã®é¨
RubyKaigiã®æå¾ã¯mov社ããã®After Partyã¸
@kamipo sanã¨äººçã«ã¤ãã¦è©±ãããã@masaya_dev san ã¨ä¹ ãã¶ãã«ã話ããããLeSS ã«ã¤ãã¦è©±ãããã¨ãããããªè©±ãã§ãã¦æºè¶³ã§ããä¼å ´ã®å°ç·ãªã©ãªãã¬ã¼ã·ã§ã³ããã£ãããã¦ãã¦ã¨ã¦ãéããããã空éã§ãã
day4 - ã¾ãæ¥å¹´
é£è¡æ©ã®æä¹æéã¾ã§æéããã£ãã®ã§ããããã®åæ¥ã§ãããããé£ã¹ãããæ³¢ã®ä¸ãã¼ãã§æµ·ãæããããã¦è§£æ£
RubyKaigi Day 4ãã£ã¦ãããhttps://t.co/ov3aiPF4HT pic.twitter.com/JKjMWZMT1N
— sugamasao (@sugamasao) 2024å¹´5æ18æ¥
#rubykaigi ãã£ã¦ãããï¼ pic.twitter.com/Wq2BMYdHGN
— sugamasao (@sugamasao) 2024å¹´5æ18æ¥
ãã ï½ç²ãã¾ããw ããã«ã¦ã¯ã¤ã® #rubykaigi ã¯å®çµã§ãï¼ pic.twitter.com/JVxiiBZ0Cr
— sugamasao (@sugamasao) 2024å¹´5æ18æ¥
ãã¯ãæ¹ã ã§è¨ããã¦ããã®ã§è¨èªåããã¤ã¤ãã話ã§ã¯ããã¾ãããRubyKaigiã£ã¦ãææ¥ä½¿ãã便å©ãã¯ããã¯ãå¾ã¾ããï¼ãã¨ãã§ã¯ãªãããªãã»ã©ããããããç©ã¿éãã¦åãã¼ã¯ã®é¢é£ãRubyã¨ããè¨èªã®ã¢ã¬ã³ã¬*3ãç¥ã£ã¦ãããã¨ã§ç¹ãããçã¾ãã¦ããå¿«æãé«æãããããã§ãããï¼(èªåã®æ§æ ¼ã¨ãã¦"ç©äºãç¥ã"ã¨ãããã¨ã好ãã£ã½ã)ï¼ãããã¦ã¾ãããããªããã¨ãå¢ãã¦ãããç¡éãï¼
ããã«ããã«ããããä½ã£ã¦ããã»ãã¼ã¯ãã¦ãã人ãç®ã®åã«ããããªããªãé£ã§é ã飲ãã§ãçãªãã¨ãæ®éã«çºçããã
ãã®"è¯ã"ãæªçµé¨ã®äººã«ä¼ããã®ã¯é£ããã®ã§ãããç§ã¯ä»å¹´ãRubyKaigiãåäºåã«æ¥½ããã¾ããï¼RubyKaigiã®Speakerã®ã¿ãªãããRubyKaigiã¹ã¿ããã®ã¿ãªãããã¹ãã³ãµã¼ãã¼ã¹ã®çããããä¹ ãã¶ãã«/ã¯ããã¾ãã¦ã§ã話ã§ããã¿ãªããããããã人ã®ãé°ã§ä»å¹´ãç´ æ´ãããä½é¨ããããã¨ãã§ãã¾ããï¼
ã¾ãæ¥å¹´ãæ¾å±±ã§ä¼ãã¾ããããããâºï¸
*1:ä¾ããå¤ã
*2:ä»ãªãæé»å¤§é¸ã¨è¨ã£ãã»ããè¯ãã§ããï¼ï¼ï¼
*3:ãã¼ãµã¼ã®æ¦å¿µã¨ãã¡ã¢ãªã®èãæ¹ãæ¼ããã¦ããã¦ä»ã®è¨èªã触ãã¨ããç¹è²ãç解ãããããªã£ã¦ã¨ã¦ããå¾ãªãã§ãããããããæ¥æ¬èªã§èãã¡ããã®ä¾¿å©ãããã
èªç¥è² è·ã®ç¨®é¡ã¨å¯¾çã¨çµç¹æåã«ã¤ãã¦
ãã®ã¨ã³ããªã¯ãSmartHR Advent Calendar 2023 ã·ãªã¼ãº1ã®3æ¥ç®ã§ãã
- ã·ãªã¼ãº1ã®åæ¥ã®ã¨ã³ããªã¯alpaca sanã®ä½æ¸¡å³¶ã®ç©ä»¶æ å ±ãéããæ¹æ³ - alpaca- tcã§ãã
- ã·ãªã¼ãº2ã®åæ¥ã®ã¨ã³ããªã¯asonas sanã®E03ã¨ã®æ¦ãã§ãã
ããã¯ä½
å½åãRubyãåãå·»ãåæ å ±ã«é¢ãããã¼ã«ã®é¢ä¿æ§ã«ã¤ãã¦ã¾ã¨ãããã¨æã£ãã®ã§ãããæ¢ã«è¯ãããã¥ã¡ã³ãããããèªåãæºè¶³ãã¦ãã¾ã£ãã®ã§å¥ã®è©±é¡ã¨ãã¦èªç¥è² è·ããã¼ãã«çãã¨ã£ã¦ããã¾ãã
ãã¼ã«ã®é¢ä¿æ§ã«ã¤ãã¦ã¯âã®ã¨ã³ããªãã覧ãã ãã
é話ä¼é¡
èªç¥è² è·ã¨ããè¨èãããèãã¾ããããç§ãããè¨ããã¡ã§ããããããããèªç¥è² è·ãã¨ããè¨èããµããµããªèªèã®ã¾ã¾ããªãã大å¤ãã¨ããè¨èã®è¨ãæãã«ãã¦ããã®ã¯ãã£ããã®æ°ã¥ãããã¯ãã¨ãããã¾ã¾ã«ãªã£ã¦ãã¾ãã®ã§ãæ£ããæ¦å¿µãç解ãã¦ãç«ã¡åãããåä½ã«åå²ã§ããã¨ããææã«ç¹ããããã¨æãã¾ãããï¼æãã¾ããããæã£ã¦ãã ããã
ãã¦ããããªè©±é¡ã«ã¤ãã¦ã¯ ãå¢æ ï¼ãDevelopers Meetup æ¥æé·ãã³ãã£ã¼ãåãåããéçºçç£æ§ã - connpass ã¨ããã¤ãã³ãã§ç»å£ãã¦ã話ãããã¦ããã ãã¾ããã
ä¸æ¹ã§ãã¿ã¤ãã«ãã¸ã¡ãããã¦å 容ãæ³åã§ããªãã¨ããæè¦ãæ³åã«é£ããªããããã¡ãã§å°ãè£è¶³ãã©ã¹ã¢ã«ãã¡ãæ¸ãã¦ãããã¨æãã¾ãã
èªç¥è² è· is ãªã«
èªç¥è² è·ã¨ã¯è¨æ¶ã«é¢ããã¢ãã«ã®ãã¡ãã¯ã¼ãã³ã°ã¡ã¢ãªãã¨å¼ã°ãããä½ããã®ä½æ¥ãããªã£ã¦ããã¨ãã«ä½¿ç¨ããè¨æ¶ã«é¢ããè² è·ã§ãã
ããã¦ããã®ãè² è·ãã«ã¯ããã¤ãã®ç¨®é¡ãããããããå æ¬ãããã®ãèªç¥è² è·ã¨å¼ã°ãããã®ã§ãã
èªç¥è² è·ã®ç¨®é¡
èªç¥è² è·çè«ã¨ãã¦æè²å¿çå¦è ãã¸ã§ã³ã»ã¹ã¦ã§ã©ã¼æ°ã«ãã£ã¦ç¢ºç«ãããçè«ã§ã3ã¤ããã¾ã
- 課é¡å å¨æ§è² è·
- 課é¡å¤å¨æ§è² è·
- å¦ç¿é¢é£è² è·
ããããã¯ä»¥ä¸ã®ã¹ã©ã¤ããè¦ã¦ãã ãã
ä¸ã®ä¸ã«ã¯ç§ã調ã¹ããã¨ããä¸å¯§ãªè³æãããã®ã§ããã²ä½µãã¦ã覧ãã ããã¾ã
ã§ãããããããã¨ã©ããªããã ã£ã¦ã°ã
ããã«æ¸ãã¦ãããã¨ã¯èªç¥è² è·ã«ç§ã®ç¬èªè§£éã§ããããã諸説ããå¯è½æ§ãããã¾ããæèè ã®ãæè¦ãããã°ãã²æãã¦ãã ããð
課é¡å
å¨æ§è² è·
ã§ããã°æ¬è³ªçãªé£ãããæ¸ãããã¨ã¯ã§ããªãããã©ãåãæ±ããµã¤ãºãå°ãããããã¨ã§ç解ãããããããã¨ãã§ãã¾ãã
è¤éãªãã¸ãã¯ãå°ããªã¡ã½ããåã«åãåºãå½åãã¦ãããå¤æ°åãé©åãªãã®ã«å¤ãããï¼DDDçãªæèã§ï¼ã¦ããã¿ã¹è¨èªãå©ç¨ããããªã©ãæããããã§ãããã
課é¡å¤å¨æ§è² è·
ã§ããã°ç¶ã足ãã§è¤éã«ãªã£ã¦ãã¾ã£ãifæãã«ã¼ãå¦çããªãã¡ã¯ã¿ãªã³ã°ãããWhy Notãæ£ããã³ã¡ã³ãåããã¦ãããADRãªã©ã«ããã³ã¼ãã®è¨è¨æ¹éãè¨é²ã¨ãã¦æ®ããªã©ãã¦ãã³ã¼ããèªãã§ãã¦ãã¢ã¬ï¼ãã¨ãªãé¨åã解æ¶ã§ããããã«ãã¦ããã¨è¯ãã§ãããã
ã³ã¼ãã«ã¯ How
— Takuto Wada (@t_wada) 2017å¹´9æ5æ¥
ãã¹ãã³ã¼ãã«ã¯ What
ã³ããããã°ã«ã¯ Why
ã³ã¼ãã³ã¡ã³ãã«ã¯ Why not
ãæ¸ããã¨ãã話ããã
èªç¥è² è·ã¨ã³ã¼ãã®è©±ã¯ããããã°ã©ãã¼è³ãã¨ããæ¸ç±ããã¡ããã¡ãåèã«ãªãã®ã§ããã²èªãã§ã¿ã¦ãã ãã
ããããæ¨é²ããã«ã¯çµç¹æåãéè¦
ããã¾ã§æ¸ãã¦ãããã¨ã¯ãä¸è¬çãªã¨ã³ã¸ãã¢ã§ããã°ãã¾ãåå¥ã«ã¯æ°ã«ãªã£ãã対å¿ããããªãã¨ãããã®ãå¤ãã§ãããããããããããããæ°ã«ãªã£ãå人ãé§åã§ãããã¯ãå ¨ä½ã«ä¸å®ã®è¦å¾ãããããã®ã¯ã¨ã¦ãé£ãã*1ããããã¼ã ãçµç¹ã®æã¾ããæ¯ãèãã¨ãã¦æµ¸éã»å¾æ¼ããã¦ããå¿ è¦ããããã§ãããã
ããã«ãçµç¹æåã ãã§ã¯ãªããããã¯ãã«å¯¾ãã¦ãªã¼ãã¼ã·ãããæã¦ã¦ãããï¼ã¨ãããã¨ãéè¦ãªè¦³ç¹ã«ãªãã¾ãã ä»ãã®ç¬éã¯ã¡ãã£ã¨å¦¥åã§ãã¦ããåå¹´å¾ãä¸å¹´å¾ã«ãã®ã³ã¼ããèããããã¯èæ ®ã§ããç¶æ ã«ãªã£ã¦ãã¦ã»ããããæ¢ã«é£ãããªã£ã¦ãã¾ã£ãã³ã¼ãã«ããã¡ãã¨ç«ã¡åãããç°å¢ã§ããå¿ è¦ãããã¾ãã
ãããã£ã観ç¹ã§ããããã£ãæåãããå¼·åºã«ãã¦ããããã®åãçµã¿ã¯ç¤¾ã®ããã¯ããã°ã«æ¸ãã¾ãã ãã¼ã å ã«ããã¯ãªè©±é¡ã話ãå ´ãä½ã£ã¦ãããåå¹´ãçµã¡ã¾ãã - SmartHR Tech Blog
ãã¦ãããã¾ã§æ¸ããè² è·ãæ¸ããã¨ãã話ã¨ä¼¼ãæ¦å¿µã¨ãã¦æè¡çè² åµï¼ã®è§£æ¶ï¼ã¨ããã¯ã¼ãããããã¨æãã¾ãããããã«é¢ãã¦ã¯ããããç®ã«ããâã®è³æãè¯ããã¦è¡ã®æ¶ãæµãã¾ããã
ãã®ã¨ã³ããªã§ã¯ã©ã¡ããã¨è¨ãã°å人ãã©ã®ããã«èªç¥è² è·ãæãããï¼ã¨ãã話é¡ãæ¸ããã®ã§ãããä¾ãã°ããã¼ã ãããã¸ã¼ãã®ãããªçµç¹æ§é ã¨èªç¥è² è·ã®è©±ãããã¾ãããå人ã¨ãã¦ãçµç¹ã¨ãã¦ã両æ¹ã§ç«ã¡åãã£ã¦ãããªãã¨ãããªããã§ããããã¤ã¾ããããµãè¨ã¡ã®å½¢ã«ãªããªâ¦
èªç¥è² è·ã®è©³ç´°ãææ¡ãã¦ããåé¡ãè¦ãã¨ããã¯ãã¯ãªèª²é¡ã®è¼ªéãæãããããªã
ããã¾ã§æ¸ãã¦ãããã¨ã¯ã身ãèããªããã¨ãè¨ãã¨ä½ããã®èª²é¡ãåå²ããããã«ã©ã®ãããªå°ºåº¦ã使ã£ã¦æãããã¨ãã話ã§ããã ãã¡ããããèªç¥è² è·ãã§å ¨ã¦ã®èª²é¡ãåé¡ã§ããããã§ã¯ãªãã¨æãã¾ãããæé·ãã¦ããã½ããã¦ã§ã¢ãçµç¹ã«æºãã£ã¦ããã¨æç¨ãªã·ã¼ã³ãå¤ãã¨æãã¾ãã
å¼ãç¶ãé å¼µã£ã¦ããã¾ãããã
*1:ãã¡ãããååã¹ãã«ãã«ã§å°äººæ°ãªãã¼ã ã§ããã°å´ããéæã§ããå¯è½æ§ã¯ããã¾ã
rustã§gemããã±ã¼ã¸å ã®ã³ã¼ããæ¸ãæ¹æ³ã®ã¡ã¢
Ruby 3.2ã«å梱ãããBundlerã§ã¯ã bundle gem
ã« --ext=rust
ã¨ãããã¨ã§rustã§gemã®ã³ã¼ããæ¸ããããã«ãªãã¾ãã
æ°ãããã®ã¯ã¨ãããã触ã£ã¦ã¿ããã®ã§ã試ãã¦ã¿ã¾ãããï¼å®å ¨ã«nçªç ããªã®ã§ãããèªåç¨ã®åå¿é²ã§ãï¼
äºåæºå
- rustã®ãã«ãç°å¢
- Ruby 3.2.0ï¼æ£ç¢ºã«ã¯Bubdler 2.4.0以ä¸ï¼
ãã£ã¦ã¿ã
rust_gem_sample
ã¨ããååã®ã©ã¤ãã©ãªãä½ã£ã¦ã¿ãã¨ãã¾ãããã
$ bundle gem rust_gem_sample --ext=rust : # å ´åã«ãã£ã¦ã¯ãã¾ãã¾ãªè³ªåãããã®ã§é©å½ã«çãã
ããã§éå½¢ãã§ããã
ä½æããã rust_gem_sample
ãã£ã¬ã¯ããªã¸ç§»åããã³ã¼ããããã£ã¨çºãã¦ã¿ã¾ãããã
rustã®ã³ã¼ãã¯Cè¨èªã®å ´åã¨åãããã« ext ãã£ã¬ã¯ããªå ã«çæãããã
$ tree ext ext âââ rust_gem_sample âââ Cargo.toml âââ extconf.rb âââ src âââ lib.rs
ã¡ãªã¿ã«ãçæããããµã³ãã«ã³ã¼ãã¯ãããªæã
# ext/rust_gem_sample/src/lib.rs use magnus::{define_module, function, prelude::*, Error}; fn hello(subject: String) -> String { format!("Hello from Rust, {}!", subject) } #[magnus::init] fn init() -> Result<(), Error> { let module = define_module("RustGemSample")?; module.define_singleton_method("hello", function!(hello, 1))?; Ok(()) }
define_singleton_method
ã§ã¡ã½ãããå®ç¾©ããã¦ããã¨ãããã¨ã¯ãRustGemSample.hello
ã§å¼ã³åºãã¦ã1ã¤ã®å¼æ°ãåãåãã³ã¼ãã£ã¦ãã¨ã§ããã
ãã¦ããã«ãããããã«ã¯äºåæºåãå¿ è¦ãªã®ã§ã以ä¸ãä¿®æ£ãã¾ãï¼ããã¯rusté¢ä¿ãªããbundle gemããæã«å¿ è¦ãªä¸è¬çãªãã®ï¼ã
rust_gem_sample.gemspec
- TODOãURLã£ã½ãå¤ã«æ¸ãæãã¦ããï¼ãããããªãã¨ãã«ãæã«ã¨ã©ã¼ã«ãªãï¼
- testãçæãã¦ããå ´åãèªåçæããã test ã³ã¼ã
- ããã©ã«ãã®ã³ã¼ãã¯å¤±æãããããªã³ã¼ãã«ãªã£ã¦ããã®ã§ãä¿®æ£ãããªãæ¶ããªãããå¿ è¦ããã
ããã¯ä½è«ã§ãããä¹
ãã¶ãã«gemspecã®ä¸èº«ãè¦ã¦ source_code_uri
ã changelog_uri
ã¨ããã®ãè¨å®ã§ããã¨ãããã¨ãç¥ãã¾ãããRubyGemsã®ããã¥ã¡ã³ããè¦ãã«ãè¨å®ãã¦ããã¨rubygems.orgã®ãµã¤ããã¼ã«ããæãã«è¡¨ç¤ºãã¦ãããã£ã½ãã§ããâ¦â¦ï¼
$ ./bin/setup
$ bundle exec rake
ããã§ç¡äºã«ãã«ãã§ããã¯ãã§ãã
ã§ã¯ã試ãã§å®è¡ãã¦ã¿ã¾ãããã
$ ./bin/console Ignoring rust_gem_sample-0.1.0 because its extensions are not built. Try: gem pristine rust_gem_sample --version 0.1.0 irb(main):001:0> RustGemSample.hello("hoge") => "Hello from Rust, hoge!" irb(main):002:0>
ãã¼ãããããï¼
ãã£ãããªã®ã§ããã°ã«ãã¦ã¿ãã¼ã¨æã£ã¦æ¸ãå§ããã®ã§ããããªãããæã£ãããä½ãããåãã¦ãã¾ã£ãâ¦â¦ï¼ãã話ï¼ã
2021å¹´ã«èªãã æ¬
2021å¹´ã¯æ¯è¼çæ¬ãèªãã æ°ããã¾ãã
ããèããã¨ãã²ã¼ã ãã§ã³ã¸ãèµ·ãã£ããã¨ãå½±é¿ãã¦ããããããã¾ãããã
ãããµã¬RSã¨ãã¼ã¢ãããã¦ä»¥æ¥ãã¾ãã§ã空ãæéã¯å¨åãã®åªããã解ãæ¾ããã¦ããã§ããæ¬ãèªããããªã©ã®æ°æã¡ãçã¾ãã¦ãã
— sugamasao (@sugamasao) 2021å¹´4æ7æ¥
èªã¿åã£ãæ¬
ããã«ãã¦ã¢ã¼ãµã¼çã¯æ¥æ¬ã§å容ãããµãã«ã«ãã£ã¼çã«åè¨ããã
ã¢ã¼ãµã¼çã¨ãã¨ã¯ã¹ã«ãªãã¼ã¨ããå°ããé ããæ £ã親ããã§ããããã©ããããæ¥æ¬ã§ã©ã®ããã«å容ããã¦ãããã®è©±ãã©ã®ããã«ç·¨çºããã¦ããããå«ãã¦èªã¿ç©ã¨ãã¦ãã¡ãé¢ç½ããããã¨ããããã«ãã¦ããã¯ããããããæ§æã¯ã¢ã¼ãµã¼çä¼èª¬ãç·¨çºãããã¢ã¼ãµã¼çã®æ»ãã®ç« ã¿ã¤ãã«ã«ç±æ¥ãã¦ããã¨ãããã¨ãç¥ããã®ã¯çµæ§ãªã¢ãä½é¨ã
ãã¨ãã³ã©ã ã¨ãã¦æ¬æã®éä¸ã«å·®ãè¾¼ã¾ãã¦ããä¾å©ããã¨ããæ¹ã®ã³ã©ã ãå®å ¨ã«ãªã¿ã¯ç¹æã®æ©å£æä½ãªãã ãã©èªã¿ãããã¦ããªãã¨ãããçåãæãã¦ãããã
#ããã¢ãµ ããããèªã¿å§ãã¦ããã§ãããã¡ããã¡ãèªã¿ãããã¦è¯ãããæ¥æ¬ã§å容ããã¦ããæ´å²é¢ç½ã(å¤ç®æ¼±ç³ãè¤é²è¡ã¨ããã¢ã¼ãµã¼çä¼èª¬ã®åµä½æ¬ãåºãã¦ãã¨ãããããç¥ãã¾ããã§ãã) https://t.co/8pKw6SvIbt
— sugamasao (@sugamasao) 2021å¹´1æ10æ¥
æ®å¿µãªããkindleçã¯ãªãã®ã§ãããamazonã§ãç©çæ¬ã¯è³¼å ¥ã§ãã¾ããkindleçãããã°ãªããã¨æãã¤ã¤ãããã®æ¬ã¯è£ ä¸ããã¡ããã¡ãåã£ã¦ããã®ã§æ¬ã§è³¼å ¥ããæ¹ãè¯ãä½é¨ãå¾ãããã¨æãã¾ãã
ç¼ã®èªç
é²åã®éç¨ã§ã©ã®ããã«çç©ãç¼ã¨ããå¨å®ãçºçããããã¨ãã話ãæ¨çå°èª¬ã®ãããªæ¸ãã£ã·ãã§ã表é¡ã«å°éããã¾ã§ã¯ãããªãã«èªã¿é²ããªãã¦ã¯ãããªãããã©ãå ã¨çç©ã®é¢ä¿ã«ã¤ãã¦ãã£ãã説æãã¦ããã®ã§ãããã¯ããã§èªã¿ç©ã¨ãã¦é¢ç½ãã
ç¼ãçºçããã®ã¯å ãæ¤ç¥ãã¦å¤æµãçºè¦ãããªã©ããå å容ä½ãããçºéããã¦ãã£ããã®ã¨ããå 容ã段éãçµã¦ç解ã§ããæ§æã«ãªã£ã¦ãã¦è¯ãã£ãã®ã¨ãä¸èè«ãç®ãç²å¾ãã¦ãã£ã話ã¨ãã¯èªã¿å¿ãããã¾ããã
ãããç©çæ¬ãããªãã£ãã
ã¦ãã³ã¼ã³ä¼æ¥ã®ã²ã¿ã¤
ããããã¹ã¯ã©ã ã®ãããª1ãã¼ã ã§ææãåºãè¦æ¨¡ãè¶ ãã¦ãã¾ã£ãã¨ãã«ãSpotifyã¯ã©ãããã¢ããã¼ãã§ã¹ã±ã¼ã«ããã¦ãã£ããï¼ã¨ãããã¨ãæ¸ãã¦ãããLeSSã®ãããªã¹ã¯ã©ã ãã¼ã ãã¹ã±ã¼ã«ãããææ³ãã¨ã£ã¦ããå ´åãããããã¢ããã¼ãã¯ç°ãªããã©ç®æãæ¹åã¯ä¼¼ã¦ãã¯ããªã®ã§ãSpotifyãã©ãããåãçµã¿ããã¦ãããã¯è§£å度ãé«ããããã®åèã«ãªããããªæ°ããã¦ãã¾ãã
詳ããã¯ãã£ã¡ã«æ¸ããã
OKR
OKRãé°å²æ°ã§ããããã£ã¦ãªãã£ãã®ã§åèã«ãªã£ããã¨ã¯ãããã¨ã³ã¸ãã¢ã®è©ä¾¡è»¸ã«åãããã®é£ãããªããã¨ããä»é±ã®ç®æ¨ç¢ºèªãã¦ã£ã³ã»ãã·ã§ã³ãªã©ã®ã¤ãã³ããã¨ãã¹ã¯ã©ã ãåãå ¥ããçµç¹ã ã¨ã³ã³ããªã¯ããããã ããªãããªã©ã®ææ³ãå¾ããæåå®è¦ãªOKRã¨ã¹ã¯ã©ã ã®ä½µç¨ã¯é£ããã ãããªãï¼å°å ¥ãããªããããªãã«å¼·ãæå¿ã§ã¢ã¬ã³ã¸ãã¦ãããªã¨ãããªãããï¼ã¨ããã®ã¯ã°ã°ãã¨ãã©ãã©è¦ããã¾ããã
ã¨ã©ã¹ãã£ãã¯ãªã¼ãã¼ã·ãã
以åèªãã§ããã®ãåèªããã
ææ³ã¨ãã¦ã¯ãã¾ã大ããå¤ãããªãããã©ãå½æããã¯è§£å度ãé«ãç¶æ ã§èªãã¦è¯ãã£ãã
ã¤ã¾ã¿é£ãã§èªãã§ãã·ãªã¼ãº
æãåãããªããå¦ã¶TypeScript
ååãå·çããTypeScriptã®æ¬ã #æTypeScriptã¨ããããã·ã¥ã¿ã°æµè¡ãããããã§ãããå ¨ãæµè¡ã£ã¦ãã¾ããð
ã¾ã èªã¿é²ãã¦ããéä¸ã§ãããå人çã«ã¯æ°å¹´åãå½æå¨ç±ãã¦ããä¼ç¤¾ã§JS -> TSã¸ã®ã³ã³ãã¼ãããã£ãã¨ãã«ãã®æ¬ãããã°â¦â¦!! ã¨ããæ°æã¡ãããã¾ãã
é人ããã°ã©ã㼠第2ç
ãã¾ããèªããã¨ã¯ç¡ãè¯æ¬ã§ãããæè¿ã«ãªã£ã¦èªã¿ç´ãããã©ãã£ã±ãè¯ããã¨æ¸ãã¦ããã¾ããã
æåã¯æ°ã ã®å¼ã£è¶ãã¤ãã³ããçµã¦æå ã«æ®ãã¦ããåçãèªãã§ããã®ã§ãããå§ããã£ãã®ã§2çãè²·ãã¾ããï¼ã®ã¡ã«æ°ãä»ãããã§ãããkindleçã§ã¯ãªãã©ããã®PDFçãè³¼å ¥æ¸ã¿ã ã£ãï¼ã
ãªãæ°ããã»ããèªã¾ãªãã®ã
— Kakutani Shintaro (@kakutani) 2021å¹´10æ24æ¥
ã¢ã¸ã£ã¤ã«ãªè¦ç©ããã¨è¨ç»ä½ã
èªç¤¾ã§ã¯ã¹ã¯ã©ã ããã¼ã¹ã¨ããéçºããã¦ãããããããã©ãèãããè¯ããã ã£ãï¼ãã¨ããã¨ãã«è¦ç´ãã¦ãã¾ãã
Clean Agile
ãã£ã¡ã®æ¬ã¯ã»ã¼èªãã ã¨æããã©ãã¢ã¸ã£ã¤ã«ãªè¦ç©ããã¨è¨ç»ä½ãã¨åãããèãæ¹ãåèã«ãããã¨ãã«èªã¿ç´ãã¦ãã¾ãã
ã¨ã³ã¸ãã¢ãªã³ã°çµç¹è«ã¸ã®æå¾
ããã¯ã¾ã èªãã§ããéä¸ãªã®ã§ããã2021å¹´ã®å¾åã¯ãã¼ã å ã®ãã¼ãã¨ãããã¼ã«ããããã¨ã«ãªã£ãã®ã§1on1ãããæ©ä¼ããããã¡ã³ã¿ãªã³ã°ã«ã¤ãã¦èå³ããã£ã¦èªãã§ãã¾ãã ããã¯1on1ãããå§ãã¦ããèªãã¹ãã ã£ããªãããã¨ãããããè¯ãæ¬ã§ãããã¾ã èªã¿ããã¦ãªããã©â¦â¦ã
ã¨ã³ã¸ãã¢ã®ããã®ããã¸ã¡ã³ããã£ãªã¢ãã¹
ã©ãããå 容ãã¯ãã®ã£ã¤ããã®ææ³ãèªãã¨ããããããã§ãããã²ã¨ã¾ãèªåã®ç®ã®åã«ãããã¼ã ã®ããã¸ã¡ã³ãæèã»ããã§5ç« ã¾ã§èªãã ã
èªç¤¾ã®ãã¼ãã¨ãããã¼ã«ã¯ãã¬ã¤ã³ã°ããã¼ã¸ã£ã¼ãªã®ã§ãåèãç®æ¨ã«ã
ããã¯kindleçãç¡ãã®ãæãã
ãããã«
èªãã ãã³ã¬ã¨ããæ¸ããã¨æã£ããã©åéããã¡ãå¤ããªããããªã®ã§ããã§çµããã¾ãã
ã¨ããã¤ã¤ããã¾ä¸çªè¯ããªã¨æã£ã¦ããã®ãæ¸ãã¦ããã¨ããã¤ãã¼ã¤ã³ãã¬ã¼ã·ã§ã³ã§ãï¼æåã¯ã¤ãã¢ãçãªãã³ã¬ããªã¨æã£ããã©ãå®å ¨ã«ã·ãªã¢ã¹ãªç¬ããçã£ã¦ãã¦ãã¦å¼ãè¾¼ã¾ããè¯ããããï¼ã shonenjumpplus.com
RubyMineã§ãã使ã£ã¦ãæ©è½
ãã®è¨äºã¯ SmartHR AdventCalendar ã®2æ¥ç®ã§ãã
20代ã®é ã¯Vimã使ã£ã¦ããã®ã§ãããèã«ç¢ãåãã¦ãã¾ãIDEã使ãããã«ãªã£ã¦ãã¾ãã¾ããã
ãã¦ããããªãããªã§æ®æ®µä½¿ããã¦ããRubyMineã§ããããã®ä¸ã§ãã使ãæ©è½ã«ã¤ãã¦å°ãæ¸ãã¦ã¿ããããªã¨æãã¾ãã
ã¨ããããã§æ¸ãã¦ããã¾ããããã¡ã¤ã«ãéãã¨ãæ¤ç´¢ããã¨ãã¯ã¡ã¸ã£ã¼ã ã¨æãã®ã§ãã以å¤ã«ã¤ãã¦æ¸ãã¦ããã¾ãã
ã³ã¼ããè¦ã¦ããã¨ãã«ä¾¿å©ãªãã¤
ãã£ããã£ãåå¾ããéã®ãµã³ãã«ã¨ãã¦rubygems.orgã®ã³ã¼ããRubyMineã§éãã¦ãã¾ãã
cmd + click
ã§é¢æ°ã¸ã£ã³ããããå¾ãcmd + [
ã§æ»ã
ã¡ã½ãããæ¢ç´¢ãã¦ãã¦ããä»è¦ã¦ããã¡ã½ãããå¼ã³åºãã¦ããé¨åãèªã¿ãããã¨ããã¨ãã«æ»ãã¦ä¾¿å©ã
ããã«ãcmd + ]
ã§æ»ã£ãç¶æ
ããé²ããã¨ãã§ãããããã®ã§ãããä½ããã®ã¢ããªã«ã·ã§ã¼ãã«ãããå¸ããã¦ãã¦ä½¿ãã試ãç¡ãð
éãã¦ãããã¡ã¤ã«ããProjectãã¿ãå ã§é¸æç¶æ ã«ãã
èªã¿é²ãã¦ãããã¡ã¤ã«ã¨åãé層ã®å¥ãã¡ã¤ã«ãéãå ´åãªã©ã«ãã·ã¥ãã¨å¨è¾ºãã¡ã¤ã«ãæ¢ããã¨ãã§ãã¦ä¾¿å©ã
ãStructureãã§æ¦è¦ãè¦ã
åç´ã«ã¡ã½ããä¸è¦§ã表示ãããã ãã§ã便å©ãªã®ã§ãããRSpecãªã©ããã¹ããæ¸ãã¦ããã¨ãã«ã©ã®ãããªãã¹ãã±ã¼ã¹ãæ¸ããã¦ãããææ¡ããã®ã«ä¾¿å©ï¼RSpecã ã¨é層æ§é ãææ¡ããªãã¨ãã¹ãã®å ¨ä½åãææ¡ã§ããªãã£ããããã®ã§ï¼ã
RSpecã«é¢ãã¦ã¯--dry-runãå®è¡ããã¨ããæãããã¾ãããç·¨éããªãã横ã«è¡¨ç¤ºã§ããã®ã便å©ãªãã§ããããããã
With Coverageã§ã³ã¼ãã«ãã¬ãã¸ãè¦ã
ãã¹ããå®è¡ããã¨ãã«ãã'With Coverage'ããé¸æããã¨ãã¹ãå®è¡å¾ã«ã«ãã¬ãã¸ã表示ã§ãã¾ãã ç¶²ç¾ çãã©ãããã¨ããããããã¹ã対象ã¨ãããã³ã¼ãã«å¯¾ãã¦æ£ãããã¹ããéã£ã¦ãããã確èªããã®ã«ä¾¿å©ã
便å©Plugin
ã´ãã´ãå ¥ããã®ã¯å¥½ãã§ãªãã®ã§ããã¾ãå ¥ãã¦ã¾ãããâ¦â¦ã
GitLink
Open in GitHubã®ã·ã§ã¼ãã«ããã追å ãããã¤ãã«ã¼ã½ã«ãããè¡ã«å¯¾å¿ããGitHubã®ãã¼ããªã³ã¯ãåå¾ã§ããã®ã§ä¾¿å©ã
https://plugins.jetbrains.com/plugin/8183-gitlink
Find Pull Request
該å½è¡ãå¤æ´ããã§ãããPRãæ¢ãã¦ããããããã·ã¹ãã èå¤å¦ãã¦ãã¨ã便å©ã
https://plugins.jetbrains.com/plugin/8262-find-pull-request
Railways
rails routeãã·ã¥ãã¨è¦ãç¨ã§ããçµãè¾¼ã¿ãã§ããã®ã§ä¾¿å©ã