ããã«ã¡ã¯ãé è¤ï¼@mametterï¼ã§ããRubyKaigi Takeout 2020ãç²ããã¾ã§ããã
ç¾å¨ã¯ãã¯ãããã«ã¯ããã«ã¿ã¤ã ã§Rubyã®éçºããã¦ãã人ã2人ãã¾ãï¼ç¬¹ç°ã¨é è¤ï¼ã ãããããRuby 3ã®ç®æ¨ã§ãã並åæ§ã¨éç解æã®å®ç¾ãã¡ã¤ã³ããã·ã§ã³ã«æ®ãã¦æ´»åãã¦ãã¾ãããå®ã¯ãã以å¤ã«ãRubyã®éçºãæ¯ããããã®æ´»åããããããã£ã¦ãã¾ãã
ä»åã¯ãé è¤ãé¢ãã£ã¦ããç¯å²ã§ããRubyéçºè ä¼è°ãæ¯ããæè¡ããRubyéçºã®ãªã¢ã¼ãè°è«ãæ¯ããæè¡ããRubyã®å質ãæ¯ããæè¡ãã«ã¤ãã¦ãã£ã¨ç´¹ä»ãã¦ã¿ã¾ãã
1. Rubyéçºè ä¼è°ãæ¯ããæè¡
Rubyã«å¯¾ããæ©è½ææ¡ãªã©ã®è°è«ã¯ãååã¨ãã¦ããã°ãã©ãã«ä¸ã§è¡ããã¾ãã ããããè¨è¨è ã§ããæçµæ±ºå®æ¨©ãæã¤matzã®å¤å¿ãªã©ã®çç±ã§ãããã ãã§ã¯è°è«ãåæ»ãã¦ãã¾ãã®ãäºå®ã§ãã ããã§Rubyã§ã¯ãéçºä¿é²ã®ããã«æä¾ã§éçºè ä¼è°ãè¡ã£ã¦ãã¾ãã ç§ã¯ããæ°å¹´ããã®ä¼è°ãéå¶ãããã¨ã«ã³ããããã¦ãã¾ãã
ä¼è°ã®ããã»ã¹
æ¯æã次ã®ãã¨ãè¡ã£ã¦ãã¾ãï¼æ¤è¨ä»¥å¤ã¯ã ããããã¹ã¦ç§ããã£ã¦ã¾ãï¼ã
- éå¬ã®ç´1ã¶æåã«è°é¡ãåéãããã±ãããä½ãï¼ä¾ï¼å æã®ãã±ããï¼ã
- éå¬ã®æ°æ¥åãæããããè°é¡ãmarkdownã«ã¾ã¨ããæå¿ã®ã³ããã¿ã¨ã¨ãã«äºåæ¤è¨ãããï¼æºåä¼ï¼ã
- ä¼è°å½æ¥ãmatzããã³æå¿ã®ã³ããã¿ã¨æ¬æ¤è¨ããããçµè«ã®åºãææ¡ã«ã¤ãã¦ã¯ããªãã¹ããã®å ´ã§matzã«åçãã¦ãããã
- éå¬ã®æ°æ¥å¾ãè°äºé²ãæ¸ æ¸ãã¦å ¬éããï¼ä¾ï¼å æã®è°äºé²ï¼ã
ã³ãã¥ãã±ã¼ã·ã§ã³æè¡
ä¼è°å½æ¥ã®ã³ãã¥ãã±ã¼ã·ã§ã³ã«ã¯ãã¯ãã¯ãããæä¾ã®zoomã¨ããªã³ã©ã¤ã³markdownå ±åç·¨éãã¼ã«ã§ããhackmdã使ã£ã¦ãã¾ãã ã³ãã以åã¯æ±äº¬è¿éã§ã®ãªãã©ã¤ã³ä¼å ´ãããã¾ããï¼matzã¯å¤§ä½ãªã¢ã¼ãåå ï¼ããä»å¹´ã¯å®å ¨ãªã³ã©ã¤ã³ã§ãã ã¢ã¸ã§ã³ãããã³è°äºé²ã®å ±åç·¨éã¯ãããã試ããæ«ãããªã¢ã«ã¿ã¤ã ã®å ±åç·¨éãã§ããmarkdownã§æ¸ãã¦ãã³ã¼ãæçãæ¸ãããããã¨ãããã¨ã§hackmdã«è½ã¡çãã¦ãã¾ãã
æºåä¼
å½æ¥ã®ä¼è°ã¯åå¾åæ¥ãç´5æéãããã¦ãã¾ããã20件ç¨åº¦ã®è°é¡ããã°ãã«ã¯ååã¨ã¯è¨ãããå¹çåã課é¡ã§ããã ãã®ããä»å¹´ãããæ°æ¥åã«æå¿ã§ã®äºåæ¤è¨ãè¡ã£ã¦ãã¾ãã ããã«ãããå½æ¥ã®åå è ã誰ãè°é¡ãç解ãã¦ããªããã¨ããéå¹çãåé¿ã§ããããã«ãªãã¾ãã *1 ã ã¾ããã®ãã§ã¼ãºã§ãäºåã«æ å½è ã«è©±é¡ãæ¯ã£ã¦ãããããè°é¡ãææ§ãªãã±ããã»matzå¤æãä¸è¦ãããªãã±ããã«äºåã«ãã£ã¼ãããã¯ãè¿ãããããã¾ãã ããã«ãããå½æ¥ã«è°é¡ããã°ãåããªããã¨ã¯ã ãã¶æ¸ãã¾ããã
éäºæã®å½±é¿æ¤è¨
ä»æ§å¤æ´ãè°è«ããéã«ã¯ãããªããéäºæã®å½±é¿ãè°è«ããã¾ãããã¤ã¦ã¯äºææ§ãæ°ã«ããªãè¨èªã¨ãã³ãã³æ¶æããã¦ããRubyã§ãããç¾ä»£ã§ã¯ããªãæ°ã使ãããã«ãªãã¾ããã
ãã¨ãã°å æ¥ãããset.rbãçµã¿è¾¼ã¿ã«ããã¨ããææ¡ããã³ãã³è°è«ããã¦ãã¾ãï¼çµè«ã¯åºã¦ããªãï¼ã ããããã¨ããããããã¬ãã«ã«Setã¯ã©ã¹ãèªåå®ç¾©ãã¦ãã人ã¯å®éã©ã®ããããããï¼ãã¨ãããããªçåãæµ®ãã³ã¾ãã ãã®ã¨ãå½¹ã«ç«ã¤ã®ãgem-codesearchã§ãã
gem-codesearchãã»ããã¢ããããã¦ããã³ããã¿ç¨å ±ç¨ãµã¼ãã«ãã°ã¤ã³ãã次ã®ããã«ãããã¨ã§ãå ¨ææ°çgemã«å¯¾ããé«égrepãã§ãã¾ãã
$ gem-codesearch "^class Set$" /srv/gems/ConstraintSolver-0.1/lib/extensions.rb:class Set /srv/gems/GoNodes-0.0.1/lib/monkeypatch/set.rb:class Set /srv/gems/Narnach-minitest-0.3.3/lib/set_ext.rb:class Set /srv/gems/Ron-0.1.2/lib/ron.rb:class Set /srv/gems/acapela-0.8.1/script/create_voices.rb:class Set /srv/gems/annlat-0.0.1/lib/annlat/LaRuby.rb:class Set /srv/gems/antlr4-0.9.2/lib/antlr4/base.rb:class Set ...
ãã¡ããããã®æ¤ç´¢å¯¾è±¡ã¯ããã¾ã§å ¬égemã ããªã®ã§ãéå ¬éã¢ããªã±ã¼ã·ã§ã³ã®ã³ã¼ãã§ã©ããã¯ãããã¾ãããä¸æ¹ããã§ã³ã³ããªã¯ãããä¾ã1ã¤ã§ãè¦ã¤ãã£ãã諦ããã¨ããããã§ãããã¾ãããããã§ããéäºæã®å½±é¿ã®è¦ç©ã«ã¯ããã¨ãè å¿ãã¦ãã¾ãã
ãªããgem-codesearchã¯ããã¯ã¨ã³ãã«google/codesearchãå©ç¨ãã¦ãã¾ããcodesearchã¯ã¤ã³ããã¯ã¹ãµã¤ãºã«4GBå¶éããããæè¿gemã®ã³ã¼ããµã¤ãºããã®å¶éã«è§¦ãã¦ãã¾ã£ãã®ã§ãé æåã®ã¢ã«ãã¡ããã26æåï¼éã¢ã«ãã¡ãããæåã®27åã«ã¤ã³ããã¯ã¹ãåå²ããã¨ãã延å½ãããããã¾ããï¼google/zoektã試ãã¾ããããæ¤ç´¢ã®èµ·åãããªãé ãæããã®ã§ï¼ã
ã¯ã¬ã¸ããï¼gem-codesearchã¯akrãããéçºããhsbtãããã¡ã³ããã³ã¹ãã¦ãã¾ããã³ããã¿ç¨å ±ç¨ãµã¼ãã¯Ruby Associationã®ãæä¾ã§ãgem-codesearchã¯ç§ã管çãã¦ãã¾ãã
dev-meeting-bot
è°é¡ãåéãããã±ããã¯ã³ããã¨æç·¨éã§ä½ã£ã¦ãã¾ããããæ¯æã¨ãªãã¨ãæå¤ã¨éå´åã§ããã ããã§ãSlackããããä½ãã¾ãããä¸è¿°ã®ãã±ããã¯ããã®ãããã«ãã³ã¨ä½ããã¦ãã¾ãã
ãããææ°ã®Rubyéçºè ä¼è°ã»ããã¢ããã®æ§å pic.twitter.com/hZ7RVKUAEg
— Yusuke Endoh (@mametter) 2019å¹´12æ3æ¥
ä»ã«ããææ°ã®ä¼è°ãã±ãããæãã¦ãããæ©è½ããåå è ã«zoomãhackmdã®URLãã¡ã¼ã«ããæ©è½ãä»ãã¦ãã¾ãã
ã¯ã¬ã¸ããï¼dev-meeting-botãå«ã以å¾ç´¹ä»ããSlackãããã®å¤ãã¯ç§ãéçºãã¦ãã¾ããããã±ããä½ææ©è½ã¯ yebis0942 ããã znz ããã®ã³ã³ããªãã¥ã¼ã·ã§ã³ã§ããã¾ããHerokuãè¨ç®æ©ãªã½ã¼ã¹ãæä¾ãã¦ããã¦ãã¾ãã
2. Rubyéçºã®ãªã¢ã¼ãè°è«ãæ¯ããæè¡
éçºè ä¼è°ä»¥å¤ã§ããæã ã¯æ¥ã Rubyã®éçºã®ããã®è°è«ãè¡ã£ã¦ãã¾ãã å¿ è¦ã«å¿ãã¦zoomï¼ã¯ãã¯ãããæä¾ï¼ã使ããã¨ãããã¾ãããã»ã¨ãã©ã¯Slackä¸ã§ã®è°è«ã§ãã ãã®ããRubyéçºè ã®Slackã§ã¯ãè°è«ãåæ»ã«ããããã«ãããããªããããããããã¦ãã¾ãã ãã£ã¨ãç´¹ä»ã
ã¯ã¬ã¸ããï¼Rubyéçºè ã®Slackã¯Ruby Associationã«ãæä¾ããã ãã¦ãã¾ãã
all-ruby
all-rubyã¨ã¯ãããã¾ã§ã«ãªãªã¼ã¹ãããã»ã¼ãã¹ã¦ã®rubyï¼0.49ããææ°çã¾ã§ï¼ããã«ãããã¹ã¯ãªãããããã³ãã®çæå®è¡ãã¡ã¤ã«ãéããDockerã¤ã¡ã¼ã¸ã§ãã ã¿ãªããã®ãæå ã§ãã次ã®ããã«docker pullãã¦è©¦ããã¨ãã§ãã¾ãã
$ docker pull rubylang/all-ruby $ docker run --rm -ti rubylang/all-ruby root@50d2785e9b39:/all-ruby# ./all-ruby -e 'puts "Hello"' ruby-0.49 -e:1: syntax error exit 1 ruby-0.50 -e:1: syntax error exit 1 ruby-0.51 -e:1: undefined method `puts' for "main"(Object) exit 1 ruby-0.54 -e:1:in method `puts': undefined method `puts' for "main"(Object) exit 1 ruby-0.55 -e:1: undefined method `puts' for "main"(Object) exit 1 ... ruby-0.76 -e:1: undefined method `puts' for "main"(Object) exit 1 ruby-0.95 -e:1: undefined method `puts' for main(Object) exit 1 ... ruby-1.0-961225 -e:1: undefined method `puts' for main(Object) exit 1 ruby-1.0-971002 -e:1: NameError: undefined method `puts' for main(Object) exit 1 ... ruby-1.0-971225 -e:1: NameError: undefined method `puts' for main(Object) exit 1 ruby-1.1a0 -e:1: NameError| undefined method `puts' for main(Object) exit 1 ruby-1.1a1 -e:1: NameError| undefined method `puts' for main(Object) exit 1 ruby-1.1a2 -e:1: NameError:undefined method `puts' for main(Object) exit 1 ruby-1.1a3 -e:1: NameError: undefined method `puts' for main(Object) exit 1 ... ruby-1.1a9 -e:1: NameError: undefined method `puts' for main(Object) exit 1 ruby-1.1b0 Hello ... ruby-2.7.1 Hello root@50d2785e9b39:/all-ruby#
Kernel#puts
ãå
¥ã£ãã®ã¯ruby-1.1b0ããã ã¨ãããã¾ããããã®ããã«ãRubyã®ä»æ§å¤æ´ããã°ãè°è«ãã¦ããã¨ããã©ã®ãã¼ã¸ã§ã³ããå¤ãã£ãã®ãã調ã¹ãã®ã«å½¹ã«ç«ã¡ã¾ãã
ãããããæ軽ã«ã»è°è«ä¸ã«è©¦ãããã«ãRubyéçºè ã®Slackã«ã¯ãall-rubyããããããã¾ãã
ãããã®ã½ã¼ã¹ã³ã¼ãã¯å ¬éããã¦ããã®ã§ãèå³ããã人ã¯è¨ç½®ãã¦ã¿ã¦ãã ããï¼dockerã³ãã³ããèµ·åã§ãã¦ããã¤Slackããã®Webhookãåããããè¨ç®æ©ãå¿ è¦ã§ãï¼ã
ã¯ã¬ã¸ããï¼all-rubyã¯akrãããä½ãï¼akrããã«ããçºè¡¨è³æï¼ãdockerã¤ã¡ã¼ã¸ã¯hsbtãããã¡ã³ããã³ã¹ãã¦ãã¾ããSlackãããã¯ç§ãä½ã£ã¦ãã¾ãã
rubyfarm
all-rubyã¯ãªãªã¼ã¹çãã¨ã®å®è¡ãã¡ã¤ã«ã§ããããã³ããããã¨ã®å®è¡ãã¡ã¤ã«ããããã¤ã¡ã¼ã¸ãä½ã£ã¦ãã¾ãã ãããrubyfarmã§ãã
ããã¯ãrubyfarm-bisectã¨ããgemãã使ããã¨ãæ³å®ãã¦ãã¾ãã git bisectã¯ãæåãå¤ãã£ãï¼ã¨ã³ãã°ããã»ãã°ä¿®æ£ãããï¼ã¿ã¤ãã³ã°ãã³ãããåä½ã§ç¹å®ã§ãããã¼ã«ã§ãããrubyãæ¯åãã«ãããã®ã¯æ¯è¼ç大å¤ã§ããã rubyfarm-bisectã使ãã¨ãã³ããããã¨ã«ãã«ãã§ã¯ãªãdocker pullã§æ¸ãã®ã§ãå¾ ã¡æéãå¤§å¹ ã«æ¸ãã試è¡é¯èª¤ã容æã«ãªãã¾ããèªågit bisectã¯ããããªçç±ã§å¤±æãããã¨ã§æåãªã®ã§ããã«ã失æããªãï¼è©¦è¡é¯èª¤ãããããããã¨ããã®ã¯ã ãã¶ã¹ãã¬ã¹ãä¸ãã¾ãã
ãã ãDocker Hubãã¹ãã¬ã¼ã¸ãå¶éããæ¹éãçºè¡¨ããã®ã§ãéå ¬éãã¼ã«ã«ã®ã¬ã¸ã¹ããªã«ç§»è¡ããäºå®ã§ãã
commit-link
æåå¤æ´ã®ãã£ãã³ããããç¹å®ã§ããããããã«ã¤ãã¦Slackã§è°è«ãããã§ãããã ãã®ã¨ããã³ãããããã·ã¥ãã³ããããã ãã§ã¯ãèªã人ãèªåã§git showã«ãããããGitHubã®ãªã³ã¯ããã©ã£ããããå¿ è¦ããã£ã¦ãã¹ãã¬ã¹ãã«ã§ããã
ããã§ãRubyéçºè ã®Slackã«ã¯commit-linkã¨ãããããããã¾ãã
Rubyéçºè ã®Slackã«ã¯ãã³ãããããã·ã¥ãçºè¨ããã ãã§GitHubã¸ã®ãªã³ã¯ãæãã¦ããããããããã¾ãã pic.twitter.com/ofliXHKWeM
— Yusuke Endoh (@mametter) 2020å¹´9æ7æ¥
commit-botã¯å ¨çºè¨ãã¦ã©ãããã¦ãã¦ã10æ¡ä»¥ä¸ã®ã³ãããããã·ã¥ã£ã½ããã®ããã£ããGitHubãè¦ã¦ã³ããããå®å¨ããã確èªããçºè¦ããããªã³ã¯ãè²¼ã£ã¦ããã¾ãã å°å³ã§ãããé常ã«ä¾¿å©ã§ãã
ãã®ä»
ä»ã«ããæ¨æºæ·»ä»ã©ã¤ãã©ãªã®ã¡ã³ãããæãã¦ããã"who-is-maintainer"ããèå¼±æ§å ±åãè°è«ããå°ç¨ãã£ã³ãã«ãä½ã£ã¦ããã"h1-channel-creator"ãªã©ããããããªããããRubyéçºè°è«ãæ¯ãã¦ãã¾ãã
3. Rubyã®å質ãæ¯ããæè¡
æå¾ã«ãRubyã®å質ãé«ããããã®CIã®æ´»åã«ã¤ãã¦ã
Rubyã«ã¯ãCIãããããããã¾ãã ç§ãææ¡ãã¦ããéãã§ãGitHub ActionsãTravisãAppVeyor CIï¼Windowsï¼ãå¼ç¤¾ç¬¹ç°ã«ããç¬èªCIãããã¦rubyci.orgã§ãã ãã®ããã«ãªã£ã¦ããã®ã¯ï¼æ´å²ççµç·¯ãããã¾ããï¼ãã¹ãã®ç®çãããããããããã§ãã ãã¨ãã°ç¬¹ç°ç¬èªCIã¯ãã¾ãã«ããçºçããªããã¤ã¼ã³ãã°ï¼GCãVMæé©åå¨ãã§ãã°ãã°çºçããï¼ãæ´ãåºãããã«åãã³ããããä½åº¦ãç¹°ãè¿ããã¹ããç¶ãã¾ãã
rubyci
rubyci.orgã¯ããã¶ãRubyã§ä¸çªå¤ãããããCIã§ãã
ãã¨ãã¨ã¯ãchkbuildã¨ããRubyå°ç¨ã®ãã¹ãå®è¡ãã¼ã«ããããæå¿ãèªåã®ç°å¢ã§chkbuildãå®è¡ããçµæããã¥ã¬ã¼ã·ã§ã³ããã®ãrubyci.orgã§ããã ãããç¾å¨ã§ã¯ãé常ã®CIã¯GitHub ActionsãTravisã§ååã«ãªã£ãã®ã§ã主ãªç¹å¾´ãå¤ãã£ã¦ãã¾ãã
- GitHub Actionsã«ãªããããªããããã¤ãã¼ãªç°å¢ãã«ãã¼ãã¦ãã
- ã³ããã¿ã¯ï¼ã»ã¨ãã©ã®ï¼ãã¹ãç°å¢ã«ç´æ¥sshãã°ã¤ã³ã§ãããããã°ãã§ãã
- ãã¹ãä¸ã«è¡¨ç¤ºãããè¦åæ°ãç£è¦ãã¦ãã
ã¨ãã«ãåç¾æ§ã®ä½ããã°ã¨æ¦ããªããã°ãªããªãRubyã³ã¢éçºã«ããã¦ã¯ã2çªç®ã®ç¹å¾´ã¯éè¦ã«ãªã£ã¦ãã¾ãã
ç¾å¨ã§ã¯å¤ãã®ãã¹ãç°å¢ã¯AWS EC2ã¤ã³ã¹ã¿ã³ã¹ä¸ã§åä½ãã¦ãã¾ãããããã®ç°å¢ãã»ããã¢ããããããã³ããã¿ã®ã¢ã«ã¦ã³ããèªåå®ç¾©ãããããããã«ãmitamaeã使ã£ãèªååããªããã¦ãã¾ãï¼ruby/ruby-infra-recipeï¼ã
ã¯ã¬ã¸ããï¼chkbuildã¯akrãããä½ããrubyci.orgã¯naruseãããä½ãã¾ããããã®å¾ã®ã¡ã³ããã³ã¹ã¯ä¸»ã«hsbtããã¨ç§ãè¡ã£ã¦ãã¾ããmitamaeã«ãããããã¸ã§ãã³ã°ã¯hsbtãããæ´çãã¾ãããAWSã®è²»ç¨ã¯Ruby Associationãã«ãã¼ãã¦ããã¦ãã¾ããä»ã«ããä¸é¨ã®ç°å¢ã¯ãæä¾ãåãã¦ãã¾ãï¼rubyci.orgæ«å°¾ã®ã¹ãã³ãµã¼ãªã¹ããåç §ã®ãã¨ï¼ã
alerts-emoji
CIã®çµæãç£è¦ããã®ã¯è¦è¡ãªã®ã§ãã¿ããªSlackãªã©ã¸ã®éç¥ãæ´»ç¨ãã¦ããã¨æãã¾ãã ãããRubyã«ã¯å¤æ°ã®CIãããããããã好ãåæãªãã©ã¼ãããã§éç¥ãæãã¦ããã®ã§ããã®ãã£ã³ãã«ãçºãã¦ç解ããã ãã§ãè¦è¡ã¨ãªã£ã¦ãã¾ããã
ã¾ãããã¹ãå®è¡ã«æ°æéãããç°å¢ãªã©ããããããã¡ãã£ã¨å¤ãã³ãããã«å¯¾ããéç¥ãé ãã¦ãããã¨ãå¤ããä¸ä½ã©ã®ã³ãããã«å¯¾ããéç¥ãªã®ãããã¨è¦ã§ããããªããã¨ããåé¡ãããã¾ããã
ããã§ããã¹ã¦ã®éç¥ãéç´ããçµ±ä¸ãã©ã¼ãããã§éç¥ããããã«ãã¾ããã ã¾ããã©ã®ã³ãããã«å¯¾ããéç¥ããè¦è¦çã«ãããããããããããã³ãããã«é©å½ãªå¹¾ä½å¦å³å½¢ãå²ãå½ã¦ããã¨ã«ãã¾ããã
Rubyã«ã¯CIããã£ã±ãããã®ã§ãçµæãéç´ããçµ±ä¸ãã©ã¼ãããã§éç¥ãã¦ãããSlackãã£ã³ãã«ãç¨æããã¦ãã¾ãã
— Yusuke Endoh (@mametter) 2020å¹´9æ7æ¥
é»è²ãæãç·ã®ä¸è§ã¯ãã³ãããã«é©å½ã«æ¯ã£ãè¨å·ãã©ã®ã³ãããã«å¯¾ããéç¥ããè¦è¦çã«è¡¨ç¾ãã¦ãã¾ããã³ãããããã·ã¥ãç®ã§æ¯è¼ããã®ã¯è¦è¡ã ã£ãã®ã§â¦â¦ã pic.twitter.com/FvffV33sij
ãªããçµµæåã«ã¤ãã¦ã¯é常ã«è°è«ãããã¾ããã ç§ã¯10æ¡ç¨åº¦ã®16é²æ°ãããã¨è¦ã§æ¯è¼ããã®ãè¦æ *2 ãªã®ã§ãã©ã³ãã ã«é¸ãã çµµæåãæ¯ãããã«ãã¾ããï¼çµµæåã®ã»ããè¦è¦çã«æ¯è¼ããããï¼ã ãããããããã¨ãçµµæåããæå³ãèªã¿åã£ã¦ãã¾ã人ãããéã«èªç¥ã³ã¹ããä¸ãã£ãã¨ããå対ã®å£°ããããã¾ããï¼ãã¨ãã°ã¹ãã¤ã«ãã¼ã¯ããã®ããã«æå³ã®ããçµµæåï¼ã è°è«ã¨è©¦è¡é¯èª¤ã®æ«ãè²éãã®å¹¾ä½å¦å³å½¢ã®çµµæåã使ãããã«ãããã¨ã§ãã ãããã®äººãæºè¶³ã§ããããã«ãªãã¾ããã
ã¯ã¬ã¸ããï¼ã¾ã笹ç°ãç¬èªCIç¨ã®éç¥ãã£ã³ãã«ãä½ãã¾ããããã®ãã£ã³ãã«ã«å種éç¥ãåå ¥ãã¦ç ´ç¶»ããã®ã§ããã®çµ±ä¸ãã£ã³ãã«ãé è¤ãä½ãããã®å¾k0kubunãããããæãã«æ´çãã¦ããã¾ããã
ã¾ã¨ã
Rubyéçºã¯ãå¤æ°ã®æè¡ãããã³ï¼èªåãå«ãã :-ï¼å¤æ°ã®äººã ã«ãã£ã¦æ¯ãããã¦ãã¾ãã
ããã«ä¸ãããã®ã¯ããã¾ã§é è¤ããããã£ã¦ãããã®ã®ä¸é¨ã ãã§ãä¸ããããªãã£ããã®ãããããããã¾ãï¼ãã¿ã¾ããï¼ãã¿ãªããã«æè¬ããªãããã£ã¦ãã¾ã *3 ã
*1:æ£ç¢ºã«ã¯ãå»å¹´ãç§ããã¹ã¦ã®è°é¡ãç解ããããã«åªãã¦ããã®ã§ããã丸ä¸æ¥æ¶è²»ãã¦ãã¾ããã¨ã«å ããä¸äººã§ã¯è°é¡ã誤解ããããè«ç¹ãæ´ãåºããªãã£ãããã¦ããã¾ãã¡ã ã£ãã®ã§ã笹ç°ã¨ç¸è«ãã¦æºåä¼ã«ãã©ã¤ãããã¨ã«ãªãã¾ããã
*2:ããã·ã¥ã®æ¡æ°ããGitHub Actionsã¯7æ¡ãrubyciã¯10æ¡ãã¨ããããã«éç¥ãã¨ã«ãã©ãã©ã ã£ãã®ãç¹ã«ææªã§ããã
*3:ç¹ã«CIã®AWSè²»ç¨ããªããªã大å¤ãªã®ã§ããã®è²»ç¨ãã«ãã¼ãã¦ããã¦ããRuby Associationã«å¯ä»ãããã ããã¨ãããããã§ã :-ï¼