1. Rubyãšã¯
ããã°ã©ãã³ã°ã®äžçã§ã¯å€ãã®é»åæ å ±ãããžã¿ã«ããŒã¿ã®å¶åŸ¡ãããããã«æ§ã ãªããã°ã©ãã³ã°èšèªãååšããŸããããããã®ããã°ã©ãã³ã°èšèªã«ã¯ãããããã®ç¹æ§ãå©ç¹ããããŸãããã®ã»ã¯ã·ã§ã³ã§ã¯ãããã°ã©ãã³ã°èšèªã®äžã€ã§ããRubyã«ã€ããŠèª¬æããŸãã
1-1. ããã°ã©ãã³ã°èšèªRubyã«ã€ããŠ
Rubyã¯ããŸã€ããšããã²ãæ°ã«ãã£ãŠèšèšãããéçºããããªããžã§ã¯ãæåã¹ã¯ãªããèšèªã§ããã¹ã¯ãªããèšèªãšã¯ç°¡åã«èšããšãããã°ã©ã ãæžãããã®æ段ã®äžã€ã§ãããã«çµæãåŸãããšãã§ããããã°ã©ãã³ã°èšèªã®ããšãèšããŸãã
RubyãåããŠå ¬ã«ãããã®ã¯1995幎ããã®åŸ20幎以äžã«ããããäžçäžã®éçºè ã«å©çšããç¶ããŠããããœãããŠã§ã¢éçºãããäžã§éåžžã«æå¹ãªããŒã«ãšãããŠããŸãã
ç¹ã«ãRubyã®ç¹åŸŽãšããŠèªã¿ããã人éã«ãšã£ãŠç解ããããæ§æãããããããã®æ±çšçãªç¹æ§ãå€ãã®ããã°ã©ããŒã«ãšã£ãŠéåžžã«é åçãªèŠçŽ ãšãªã£ãŠããŸãã
1-2. Rubyã®ç¹åŸŽã»ã¡ãªããã»ãã¡ãªãã
Rubyã¯éåžžã«çŽæçãªã³ãŒãã£ã³ã°ãå¯èœã§ãããããã³ãŒãã®å¯èªæ§ãé«ããšãããŸããããã¯ãä»ã®äººãæžããã³ãŒããç解ãããããªããšããæå³ã§ããã©ã¹ãšèšããã§ãããã
ãŸããRubyã¯ããªããžã§ã¯ãæåã«ãã¹ãŠãåºã¥ããŠããããã¹ãŠã®æäœããªããžã§ã¯ããšã¡ãœããåŒã³åºãã«ãããã®ãªã®ã§ãäžè²«æ§ã®ããã³ãŒãã£ã³ã°ãå®çŸããããšãã§ããŸãã
ããã«ãRubyã¯ã¡ã¿ããã°ã©ãã³ã°ã容æã§ãåçãªã³ãŒãçæãããã®ã«é©ããŠããŸããããã¯ãã³ãŒããä»ã®ã³ãŒããæžããšããé«åºŠãªæè¡ã§ãRubyã®ç¹åŸŽãšããŠããèšåãããŸãã
äžæ¹ã§ãã¡ãªãããšããŠã¯ãä»ã®ããã°ã©ãã³ã°èšèªãšæ¯èŒãããšåŠçã®é床ãé ããšãããç¹ããããŸããç¹ã«å€§éã®èšç®ãå¿ èŠãªããã°ã©ã ã«ã¯åããªããšãããŠããŸãã
ãŸããRubyã®ç¯å²å ã§ãã䜿ããªãç¬èªã®æ©èœãå€æ°ååšãããããä»ã®èšèªãžã®ç§»è¡ãé£ããå ŽåããããŸãã
ãããããããã®ãã¡ãªãããç解ããäžã§äœ¿ãããšã§ãRubyã¯éåžžã«äŸ¿å©ã§åŒ·åãªããã°ã©ãã³ã°èšèªãšãªãã¯ãã§ãã
2. Rubyç°å¢æ§ç¯ã®å¿ èŠæ§
ãŸãã¯ãRubyã®ç°å¢æ§ç¯ãäœã®ããã«å¿ èŠãªã®ããç解ããŸããããå ·äœçãªææ³ã«ã€ããŠè§Šããåã«ã倧ããªèŠç¹ã§èŠãŠã¿ããšè¯ãã®ã§ãã
2-1. ç°å¢æ§ç¯ãå¿ èŠãªçç±
ã³ãŒããæžãããã«ã¯ãããã°ã©ã ãæ£ããåäœããç°å¢ãå¿ èŠã§ããããã¯ãã³ãŒããæžãããããå®è¡ããçµæã確èªããããã®ç°å¢ãã€ãŸããéçºç°å¢ããæ§ç¯ããå¿ èŠãããããšãæå³ããŸãã
éçºãå§ããåã«éçºç°å¢ãçšæããŠãããšããã®ç°å¢äžã§ã³ãŒããå®è¡ããããšãå¯èœã«ãªããŸããããã«ãããéçºè ã¯èªåã®æžããã³ãŒããæ³å®éãã®åäœããããè©Šãããšãã§ããŸãã
å®ã¯ããã®ãããªç°å¢ãçšæããããšã¯ãéçºã®å質ãæ ä¿ããããä»ã®éçºè ãšã®å ±åäœæ¥ãã¹ã ãŒãºã«ãããããããããã«ãéèŠã§ããäŸãã°ãåãç°å¢ã䜿çšããŠããå šãŠã®éçºè ãåãçµæãèŠãããšãã§ããŸãããç°å¢ãéãã°ãæå³ããªãäžå ·åãèµ·ããå¯èœæ§ããããŸãããã®ããã«ãå ±åäœæ¥ãåæ»ã«ããããã«ããç°å¢æ§ç¯ã¯å¿ é ãšãããŸãã
2-2. éçºç°å¢ãšãããã¯ã·ã§ã³ç°å¢
ããŠãããããRubyã®ç°å¢æ§ç¯ã«ã€ããŠèª¬æããŠãããŸããããã®åã«ãéçºç°å¢ããšããããã¯ã·ã§ã³ç°å¢ãã®éãã«ã€ããŠèª¬æããŸãã
ãŸãã¯éçºç°å¢ã§ããéçºç°å¢ã¯ãã³ãŒããæžããŠåäœç¢ºèªãè¡ãããã®ç°å¢ãæããŸããã€ãŸããéçºè ãèªç±ã«ã³ãŒããæžãããã¹ããè¡ãããã®ç°å¢ã§ããããã¯äž»ã«éçºè ã®ããœã³ã³äžã«æ§ç¯ãããŸãã
äžæ¹ããããã¯ã·ã§ã³ç°å¢ãšã¯ãå®éã«ãŠãŒã¶ãŒã䜿ãã¢ããªã±ãŒã·ã§ã³ãåããããã®ç°å¢ãæããŸããéçºãäžæ®µèœãããŠãŒã¶ãŒã«æäŸããã¿ã€ãã³ã°ã§å©çšããŸãããããã¯ã·ã§ã³ç°å¢ã¯éåžžã«å³æ Œãªç°å¢ã§ãããããã§çºçãããšã©ãŒã¯çŽæ¥çãªãŠãŒã¶ãŒäœéšã«åœ±é¿ãåãŒããããéåžžã«æ éã«æ±ããªããã°ãªããŸããã
éçºç°å¢ã§ã®äœæ¥ãšãããã¯ã·ã§ã³ç°å¢ã§ã®äœæ¥ã¯ãç®çãæ±ããããèŠä»¶ãç°ãªãããããã®æ§ç¯æ¹æ³ãç°ãªããŸãã次ã«é²ãåã«ãããã®éããç解ããé©åãªç°å¢ãæ§ç¯ããããšã倧åã§ãã
3. Rubyã®ããŒãžã§ã³ç®¡çãšã¯
ããã°ã©ãã³ã°ã®äžçã§ã¯ãåžžã«æ°ããããŒãžã§ã³ã®èšèªããã¬ãŒã ã¯ãŒã¯ãåºç¶ããŠããŸãããã®äžã§ãéçºè ã¯æ§ã ãªãããžã§ã¯ãã§ããããç°ãªãããŒãžã§ã³ã®Rubyã䜿ãããšãäžè¬çã§ãããã®ãããªå Žåã«ãã©ã®ããŒãžã§ã³ã®Rubyã䜿ã£ãŠéçºãé²ããã¹ããã管çããã®ãRubyã®ããŒãžã§ã³ç®¡çã§ãã
3-1. Rubyã®ããŒãžã§ã³ç®¡çãšãã®éèŠæ§
Rubyã®ããŒãžã§ã³ç®¡çã¯ãéçºè ã䜿ãããRubyã®ããŒãžã§ã³ãèªç±ã«åãæ¿ããããšãå¯èœãšãªããããããã®ãããžã§ã¯ãã«å¯Ÿå¿ããéçºç°å¢ãæ軜ã«æ§ç¯ã§ããããã«ãªããŸãããŸããæ°ããæ©èœãè¿œå ããã°ä¿®æ£ãè¡ãããææ°ããŒãžã§ã³ã®Rubyãè©ŠãããããªããŸãã
ããããªããšãå€ãããŒãžã§ã³ã®Rubyã§äœããããããžã§ã¯ããææ°ããŒãžã§ã³ã®Rubyã§åãããšäºæãã¬ãšã©ãŒãçºçããå¯èœæ§ããããŸãããŸããæ°ããRubyã®ããŒãžã§ã³ãè©Šãããã«ã¯ãæ¢åã®ããŒãžã§ã³ãã¢ã³ã€ã³ã¹ããŒã«ããŠæ°ããããŒãžã§ã³ãã€ã³ã¹ããŒã«ããšããæéãçºçããŠããŸããŸãããã®ãããªäœæ¥ãç¹°ãè¿ããŠãããšãæéã®ç¡é§ã«ãªããŸãããäœããããšã©ãŒã®åå è¿œåãå°é£ã«ãªã£ãŠããŸããŸãã
3-2. rbenvãšRVMã®äœ¿ãæ¹ãšéã
ãã®åé¡ã解決ããããã«çãŸããã®ããRubyã®ããŒãžã§ã³ç®¡çããŒã«ãrbenvããšãRVMãã§ãããããã®ããŒã«ã®ç®çã¯åãã§ãããŸããããã®äœ¿ãæ¹ãšéããç解ããããšã§ãããå¹ççãªéçºãå¯èœãšãªããŸãã
rbenvã¯ã·ã³ãã«ãªRubyã®ããŒãžã§ã³ç®¡çããŒã«ã§ãåãã£ã¬ã¯ããªã«èšå®ããRubyã®ããŒãžã§ã³ãèªåçã«åãæ¿ããŠäœ¿çšããŸããèšå®æ¹æ³ã¯
.ruby-version
ãšãããã¡ã€ã«ã«äœ¿çšãããRubyã®ããŒãžã§ã³ãèšè¿°ãããã®ãã£ã¬ã¯ããªã«å ¥ããšèªåçã«è©²åœã®ããŒãžã§ã³ã®Rubyã䜿çšããããåãæ¿ããŸãã
äžæ¹ãRVMã¯rbenvãããæ©èœãè±å¯ã§ãgemsetsãšããæ©èœãéããŠãããããã®RubyããŒãžã§ã³ããšã«ç°ãªãgemç°å¢ãäœãããšãå¯èœã§ãããŸããRVMã¯ã·ã§ã«ãæžãæããããšã§åäœãããããã³ãã³ããè±å¯ã§é«åºŠãªèšå®ãå¯èœã§ãã
ã©ã¡ããéžã¶ãã¯éçºè ã®åã ã®ããŒãºã奜ã¿ã«ãããšããã倧ããã§ãããäžè¬çã«ã¯rbenvã¯ãã®ã·ã³ãã«ãããåå¿è ã«ãRVMã¯ãã®é«æ©èœæ§ããçµéšè±å¯ãªéçºè ã«éžã°ããããšãå€ãã§ãã
4. Rubyç°å¢æ§ç¯æé
Rubyã®ç°å¢æ§ç¯æé ã¯éåžžã«ã·ã³ãã«ã§ãäž»ã«ä»¥äžã®4ã€ã®ã¹ãããã§å®äºããŸãã
4-1. éçºç°å¢ã®æºåïŒå¿ èŠãªãœãããŠã§ã¢ã«ã€ããŠ
ãŸãæåã«ãéçºç°å¢ã®æºåãšããŠãããã¹ããšãã£ã¿ãã³ãã³ãã©ã€ã³ããŒã«çã®ãœãããŠã§ã¢ã®ã€ã³ã¹ããŒã«ãå¿ èŠã§ããããã¹ããšãã£ã¿ã«ã¯ãããã°ã©ãã³ã°ã«é©ããSublime TextãVisual Studio Codeãªã©ããããŸããããããã€ã³ã¹ããŒã«ããŠããããšã§ãã³ãŒãã®ç·šéããã¡ã€ã«ã®ç®¡çã容æã«ãªããŸããã³ãã³ãã©ã€ã³ããŒã«ã«ã¯ãTerminal(ã¿ãŒããã«)ãiTerm2ãªã©ããããããããéããŠã³ã³ãã¥ãŒã¿ã®ã·ã¹ãã ãæäœããŸãã
4-2. rbenvã®ã€ã³ã¹ããŒã«ãšèšå®
次ã«rbenvã®ã€ã³ã¹ããŒã«ãšèšå®ãå¿ èŠã§ããrbenvã¯Rubyã®ããŒãžã§ã³ã管çããããŒã«ã§ããããžã§ã¯ãããšã«Rubyã®ããŒãžã§ã³ãåãæ¿ããããšãå¯èœã§ããrbenvã®èšå®æ¹æ³ã¯OSã«ããç°ãªããŸãã®ã§ãé©åãªæé ãæ¢ãããšãæ±ããããŸãã
4-3. Rubyã®ã€ã³ã¹ããŒã«
rbenvã®èšå®æ¬¡ç¬¬ã§ãRubyã®ã€ã³ã¹ããŒã«ã«åãæãããŸããã€ã³ã¹ããŒã«æ¹æ³ã¯äž»ã«ïŒã€ãããŸããïŒã€ã¯ã¿ãŒããã«ã«çŽæ¥ã³ãã³ããæã¡èŸŒãæ¹æ³ã§ããããïŒã€ã¯ãrbenvã䜿ã£ãŠRubyãã€ã³ã¹ããŒã«ããæ¹æ³ã§ããã©ã¡ãã®æ¹æ³ãéžã¶ãã¯ãäž»ã«ãèªèº«ã®ãããžã§ã¯ãã®é²è¡å ·åãå€ã管çããŠããRubyã®ããŒãžã§ã³ã«ãããã®ã§ãã
4-4. BundlerãšGemfileã®èª¬æãšäœ¿ãæ¹
æåŸã«ã BundlerãšGemfileã«ã€ããŠèª¬æããããšæããŸããBundlerã¯Rubyã®ã©ã€ãã©ãªã管çããããã®ããŒã«ã§ããããããžã§ã¯ãããšã«å¿ èŠãªã©ã€ãã©ãªã®ããŒãžã§ã³ã管çå¯èœã§ããGemfileã¯ããããžã§ã¯ãã§äœ¿çšããã©ã€ãã©ãªïŒgemïŒãèšè¿°ãããã¡ã€ã«ã§ããBundlerãšGemfileã䜿çšããããšã§ãéçºç°å¢ãçµ±äžããéçºäœæ¥ã®é²è¡ãåæ»ã«è¡ããŸãã
以äžãRubyã®ç°å¢æ§ç¯ã®åºæ¬çãªæé ãšãªããŸããçå®ã«é²ããŠãããŸãããã
5. Rubyã®éçºç°å¢èšå®
ããã°ã©ã ãæžãããã®éå ·ç«ãŠãæŽããããšããå¹ççãªéçºäœæ¥ã«ã¯æ¬ ãããŸãããããã§ã¯ããŸãã«éçºã«æ¬ ãããªããã¬ãŒã ã¯ãŒã¯ãRuby on Railsã®å°å ¥ãã«ã€ããŠããã®ããã§ãå¿ èŠãªããŒã«ããšãã£ã¿ã®èšå®æ¹æ³ã解説ããŸãã
5-1. Ruby on Railsã®å°å ¥
Ruby on Railsãé称ãRailsãã¯Rubyçšã®Webã¢ããªã±ãŒã·ã§ã³ãã¬ãŒã ã¯ãŒã¯ã§ããããŒã¿ããŒã¹ãçšãããŠã§ããµã€ãæ©èœãæ軜ã«äœæã§ããã®ãç¹åŸŽã§ãçŸåšã®Webéçºã«ã¯å¿ é ã®ãšãããã¡ã³ããšãèšããŸãã
ãŸãã¯ãRailsã®å°å ¥ã§ãã以äžã«ãã®æé ã瀺ããŸãã
$ gem install rails
äžè¿°ã®ã³ãã³ããå®è¡ãããšãææ°ããŒãžã§ã³ã®Railsãã€ã³ã¹ããŒã«ãããŸããããŒãžã§ã³ãæå®ããŠã€ã³ã¹ããŒã«ãããå Žåã¯ã以äžã®ããã«ããŒãžã§ã³çªå·ãä»ããŠå®è¡ããŸãã
$ gem install rails -v '5.2.3'
ã€ã³ã¹ããŒã«ãçµãã£ããã以äžã®ã³ãã³ãã§Railsã®ããŒãžã§ã³ã確èªããŸãããã
$ rails -v
5-2. éçºããŒã«èšå®ïŒãšãã£ã¿ãªã©
次ã«ãå¹ççã«ã³ãŒããæžãããã®ãšãã£ã¿ã玹ä»ããŸããããã°ã©ãã³ã°ã®äžçã§ã¯æ§ã ãªãšãã£ã¿ãå©çšãããŠããŸãããããã§ã¯ãVisual Studio CodeãïŒVS CodeïŒãåãäžããŸãã
VS Codeã¯ãMicrosoftãæäŸããç¡æã®ã³ãŒããšãã£ã¿ã§ãéåžžã«å€æ©èœãã€é«éãªåäœãé åã§ããããã«ãæ¡åŒµæ©èœãå°å ¥ããããšã§ãRubyãRailsãå¹çè¯ã䜿çšããããšãå¯èœãšãªããŸãã
VS Codeã®ã€ã³ã¹ããŒã«èªäœã¯ãå ¬åŒãµã€ãããããŠã³ããŒãããæ瀺ã«åŸã£ãŠã€ã³ã¹ããŒã«ããã ãã§ããå ¬åŒãµã€ããã芧ãã ããã
ã€ã³ã¹ããŒã«åŸãRubyéçºãå¹çåããããã«ã¯ãVS Codeã®ãšã¯ã¹ãã³ã·ã§ã³ãRubyããå°å ¥ããããšãããããããŸãããRubyããšã¯ã¹ãã³ã·ã§ã³ã¯ã³ãŒãã®èªåãã©ãŒãããããã·ã³ã¿ãã¯ã¹ãã€ã©ã€ããªã©ã®æ©èœãæäŸããŠãããRubyã³ãŒãã®èªã¿æžããå©ããŠãããŸãã
ãã¡ããããšãã£ã¿ã®éžæã¯ãVS Codeãã«éããŸãããèªåã«ãšã£ãŠæžãããããèŠããããšæãããšãã£ã¿ãéžã¶ããšãèå¿ã§ãããã®ä»äººæ°ã®ãšãã£ã¿ãšããŠã¯ãSublime TextãAtomãEmacsãVimçãæããããŸãã
6. Rubyç°å¢æ§ç¯ãå©ããããŒã«
ãããŸã§ãåºæ¬çãªRubyã®ç°å¢æ§ç¯æ¹æ³ã«ã€ããŠèª¬æããŠããŸãããããããRubyã®ç°å¢æ§ç¯ã«ã¯ç¹å®ã®ããŒã«ã䜿ãããšã§ãããå¹ççãã€å®å®ããæ¹æ³ãååšããŸãããã®ä»£è¡šçãªãã®ãDockerãšVagrantã§ãã
6-1. Dockerã䜿ã£ãç°å¢æ§ç¯
Dockerã¯ãéçºç°å¢ãã³ãŒãåããã³ã³ãããšãã圢ã§è€è£œãå ±æãå¯èœãªããŒã«ã§ããèªèº«ã®PCã«çŽæ¥ç°å¢ãæ§ç¯ããã®ã§ã¯ãªãã軜éã®ä»®æ³ç°å¢ïŒã³ã³ããïŒãäœãåºãããšã§ãç°å¢æ§ç¯ãè¡ããŸãã
ããã«ãããä»ã®PCããµãŒããŒã«ãç°¡åã«ç°å¢ã移è¡ã§ããŸãããè€æ°ã®ãããžã§ã¯ããè¡ãéã«ãç°å¢ãæ··åšããåé¡ã解決ããŸãããŸããDockerã®èšå®ãã¡ã€ã«ã§ããDockerfileãdocker-compose.ymlãçšããããšã§ãç°å¢æ§ç¯ã®éçšãã³ãŒããšããŠèšè¿°ã§ããŸãã
# Dockerfile ã®äžäŸ FROM ruby:2.7.0 RUN apt-get update -qq && apt-get install -y build-essential libpq-dev nodejs WORKDIR /myapp COPY Gemfile /myapp/Gemfile COPY Gemfile.lock /myapp/Gemfile.lock RUN bundle install COPY . /myapp
ããã¯Rubyãšå¿ èŠãªã©ã€ãã©ãªãã€ã³ã¹ããŒã«ããã¢ããªã±ãŒã·ã§ã³ã®ã³ãŒããã³ã³ããã«ã³ããŒããDockerfileã®äžäŸã§ããäžèšã®æ¹æ³ã§ãDockerã䜿ã£ãŠRubyã®ç°å¢æ§ç¯ãè¡ãããšãã§ããŸãã
6-2. Vagrantã䜿ã£ãç°å¢æ§ç¯
VagrantããDockeråæ§ã«ä»®æ³çãªç°å¢æ§ç¯ããŒã«ã§ãããä»®æ³ãã·ã³ãåæãšãããã®ã§ããVirtualBoxãVMwareãªã©ã®ä»®æ³åãœãããŠã§ã¢ã掻çšããŠãäžã€ã®PCäžã§å®å šã«åé¢ããè€æ°ã®OSãåããããšãå¯èœã§ãã
Dockerãã¢ããªã±ãŒã·ã§ã³ã®å®è¡ç°å¢ãè€è£œããã®ã«å¯ŸããŠãVagrantã¯å šãŠã®ç°å¢ïŒOSãããã«ãŠã§ã¢ãã¢ããªã±ãŒã·ã§ã³ïŒãåçŸããããšãã§ããŸããããã«ãããéçºè éã§ã®ç°å¢å·®ç°ãããèªåã®PCã§ã¯åãããä»ã®PCã§ã¯åããªãããšããåé¡ãé²ãããšãã§ããŸãã
# Vagrantfileã®äžäŸ Vagrant.configure("2") do |config| config.vm.box = "bento/ubuntu-16.04" config.vm.network "private_network", ip: "192.168.33.10" config.vm.synced_folder ".", "/vagrant_data" config.vm.provider "virtualbox" do |vb| vb.memory = "1024" end end
Vagrantfileã¯Vagrantã®èšå®ãã¡ã€ã«ã§ãããã«ããä»®æ³ãã·ã³ã®OSããããã¯ãŒã¯ãå ±æãã©ã«ããªã©ãèšå®ããŸãããã®ããã«Vagrantã䜿ã£ãŠç°å¢æ§ç¯ãè¡ãããšã§ãç°å¢ã®åçŸæ§ãšç§»è¡æ§ãé«ããããšãã§ããŸãã
7. Rubyç°å¢æ§ç¯ãã©ãã«ã·ã¥ãŒãã£ã³ã°
ããã°ã©ãã³ã°ãè¡ãªã£ãŠãããšãå¿ ããšèšã£ãŠããã»ã©ãã©ãã«ã«åºéããŸããåå¿è ã®é ã¯ããã®åé¡ã解決ããããã«æéãè²»ããããšãããã§ããããããã§ã¯ãRubyã®ç°å¢æ§ç¯ã§é »çºããåé¡ãšãã®è§£æ±ºçãæããŠãããŸãã
7-1. ããããåé¡ãšè§£æ±ºç
ãlibffiã©ã€ãã©ãªãèŠã€ãããªãã
libffiã©ã€ãã©ãªãèŠã€ãããªããšãããšã©ãŒã¡ãã»ãŒãžã衚瀺ãããå Žåãlibffiãã€ã³ã¹ããŒã«ãããŠããªãããšãåå ãšãªããŸããlibffiã¯ãå€éšé¢æ°ã€ã³ã¿ãŒãã§ãŒã¹ã®äžçš®ã§ãããåçã«ãªã£ãŠããããRubyã§å¿ èŠãšãªããŸãããã®åé¡ã¯ãã·ã¹ãã ã«libffiãã€ã³ã¹ããŒã«ããããšã§è§£æ±ºããŸãã以éã¯å ·äœçãªã³ãã³ãäŸãæããŠãããŸãã
$ sudo apt-get install libffi-dev ïŒUbuntuã®å ŽåïŒ $ brew install libffi ïŒmacOSããã³Homebrewã®å ŽåïŒ
ãrbenv: version `2.6.3′ is not installedã
ãã®ãšã©ãŒã¯ãæå®ããRubyã®ããŒãžã§ã³ãã€ã³ã¹ããŒã«ãããŠããªãããšãåå ã§ããããããã®ãããžã§ã¯ãã§ç°ãªãRubyã®ããŒãžã§ã³ã䜿ããããšãã«ããŒãžã§ã³ãæå®ãããšçºçããããšãããã§ãããã解決çã¯äžèšã®ããã«ã察象ã®ããŒãžã§ã³ãçšæããããšã§ãã
$ rbenv install 2.6.3
7-2. é©åãªæ å ±ã®æ¢ãæ¹
ãšã³ãžãã¢ã®ä»äºã®äžã€ãšããŠãå°ã£ãåé¡ãèµ·ããæã«é©åãªè§£æ±ºçãèŠã€ããããšããããšããããŸãããã®ãããæ å ±ãæ¢ãåºãèœåã¯ãšãŠãéèŠãšãªããŸãã
ãšã©ãŒã¡ãã»ãŒãžã¯ãåé¡ãäœã§ãããã瀺ããŠãããŸãããã®ããããŸãã¯ãšã©ãŒã¡ãã»ãŒãžãèªãã®ãå 決ã§ããæ¥æ¬èªã§ãªããŠã倧äžå€«ãæ°å¹Žåãããè±èªãžã®ææå¿ã¯èãã€ã€ãããŸããããšã©ãŒã¡ãã»ãŒãžããã®ãŸãŸGoogleããã°ãåãåé¡ã«ééãã人ã解決çãèšèŒããŠãããWebããŒãžãèŠã€ããããšãå¯èœã§ãã
ãŸããStack OverflowãGitHubã®Issueã«ç®ãéãã®ãè¯ãã§ãããå ¬åŒããã¥ã¡ã³ããŒã·ã§ã³ãããã°èšäºãåèã«ãªãã§ãããããã®éãæ å ±ãæŽæ°ãããŠãããã©ããã確èªããã®ãéèŠã§ããæ§ãæ å ±ã«åŒã£ããããšãçŸåšãšã¯ç°ãªã解決çãæšå¥šãããŠããããšããããŸãã
ããã«ãããäžã€ã®åé¡ã«å¯Ÿãã解決çãäžã€ã§ãããšã¯éããŸãããè€æ°ã®è§£æ±ºçã«ã€ããŠèª¿æ»ããèªåã®ç¶æ³ãç解床ã«åã£ãæ¹æ³ãéžã³ãŸããããããããã®æ å ±ãåæšéžæããèªåãæãé©ãã解決çãèŠã€ãåºãããšãéèŠã§ãã
8. ãŸãšã
ãã®èšäºã§ã¯ãããã°ã©ãã³ã°èšèªRubyã®ç°å¢æ§ç¯ã«ã€ããŠè§£èª¬ããŠããŸãããããã§ã¯ãç°å¢æ§ç¯ã®å¿ èŠæ§ãããŒãžã§ã³ç®¡çã®éèŠæ§ããããŠå®éã®æé ãªã©ã詳ããèŠãŠããŸããããŸããéçºããŒã«ã®èšå®ããç°å¢æ§ç¯ãå©ããããŒã«ã®äœ¿çšæ¹æ³ãªã©ã解説ããŸãããç°å¢æ§ç¯ãã©ãããŠãããŸããããªãå Žåã®ãã©ãã«ã·ã¥ãŒãã£ã³ã°ã«ã觊ããŸããã
8-1. Rubyç°å¢æ§ç¯ã®ãã¹ããã©ã¯ãã£ã¹
Rubyã®ç°å¢æ§ç¯ã«ã¯ãrbenvã䜿ãã®ããã¹ããã©ã¯ãã£ã¹ãšãããŠããŸããç¹å®ã®ãããžã§ã¯ãã§ç°ãªãããŒãžã§ã³ã®Rubyã䜿ãå¿ èŠãããå Žåãããã容æã«ç®¡çããããšãã§ããã®ã倧ããªã¡ãªããã§ãããŸããBundlerã䜿ã£ãŠäŸåé¢ä¿ã管çããGemfileã«ãã®æ å ±ãæèšããããšãéèŠã§ãã
éçºããŒã«ã®èšå®ã«ã€ããŠãã奜ã¿ãå¿ èŠæ§ã«å¿ããŠã«ã¹ã¿ãã€ãºå¯èœã§ãããã ãããšãã£ã¿ã§ããã°ãRubyã®ã³ãŒããæžãããã®ã·ã³ã¿ãã¯ã¹ãã€ã©ã€ãæ©èœããããã®ãéžã¶ããšãããããããŸãã
8-2. Rubyç°å¢æ§ç¯ã®åŠã³ãšãã®å ãž
Rubyç°å¢æ§ç¯ã¯ãåããŠè©Šã¿ããšèºãéšåããããããããŸããããããããã®éçšã§åŠã¹ãããšã¯éåžžã«å€ããããã¯ããã°ã©ãã³ã°ã¹ãã«å šäœã®åäžã«ã€ãªãããŸããå¿ èŠãªããŒã«ã®ã€ã³ã¹ããŒã«ããèšå®ããã©ãã«ã·ã¥ãŒãã£ã³ã°ãŸã§ãèªåã§è¡ãããšã§ãRubyã ãã§ãªããä»ã®ããã°ã©ãã³ã°èšèªã®ç°å¢æ§ç¯ã«ã察å¿ã§ããããã«ãªããŸãã
ãã®èšäºãéããŠåŠãã ç¥èã掻ãããäžæ©äžæ©ç¢ºå®ã«ã¹ãã«ã¢ããããŠãããããšãé¡ã£ãŠããŸããæåŸãŸã§ãèªã¿ããã ããããããšãããããŸããã