1. Rubyãšã¯
Rubyã¯ããŸã€ããšããã²ãæ°ã«ãã£ãŠéçºãããããªããžã§ã¯ãæåã®ããã°ã©ãã³ã°èšèªã§ããã·ã³ãã«ã§çŽæçãªæ§æãç¹åŸŽã§ãããã°ã©ãã³ã°åå¿è ããäžçŽè ãŸã§å¹ åºããŠãŒã¶ãŒã«å¯Ÿå¿ããŸãã
Rubyã¯ããŠã§ãã¢ããªã±ãŒã·ã§ã³ã®éçºãããŒã¿åæãæ©æ¢°åŠç¿ãªã©ãæ§ã ãªçšéã«å¯Ÿå¿ããŠããŸãããã®æè»æ§ãšæ¡åŒµæ§ãããäžçäžã®éçºè ããæçšãããŠããŸãã
ãŸããRubyã®äººæ°ãæ¯ããŠããã®ãè±å¯ãªã©ã€ãã©ãªãšåªãããã¬ãŒã ã¯ãŒã¯ã§ãããããã掻çšããããšã§ãéçºè ã¯è€éãªã³ãŒããçæéã§æžãããšãå¯èœãšãªããå¹ççã«ã¢ããªã±ãŒã·ã§ã³ãéçºããããšãã§ããŸãã
1.1 Rubyã®ç¹åŸŽãšäœ¿ãé
Rubyã¯ãè¡šçŸåè±ãã§èªã¿ãããã³ãŒããæžãããšãã§ããŸããã¯ãªã¢ãªæ§æãšè±å¯ãªãªããžã§ã¯ãæåæ©èœãã䜿ãããããšæè»æ§ãæäŸããŸãã
Rubyã¯ãWebã¢ããªã±ãŒã·ã§ã³éçºã«ãã䜿ãããŸããç¹ã«ãRuby on Railsãšãããã¬ãŒã ã¯ãŒã¯ãåºãçšããããŠããŸãããŸããã·ã§ã«ã¹ã¯ãªããã®ä»£æ¿ãããŒã¿åŠçããã¹ãã¹ã¯ãªããäœæçã«ã掻çšãããŠããŸãã
ããã«ãRubyã¯ãªãŒãã³ãœãŒã¹ã®èšèªã§ãããäžçäžã®éçºè ããæ¯æãããŠããŸããããã«ãããè±ããªã³ãã¥ããã£ãšè³æºã圢æãããŠããŸãããããã®è³æºãå©çšããã°ãåé¡è§£æ±ºãåŠç¿ã¯ãã楜ã«ãªããŸãã
1.2 Rubyã®æŽå²
Rubyã¯ã1995幎ã«ãŸã€ããšããã²ãæ°ã«ãã£ãŠèšèšã»éçºãããŸããã以æ¥ãããã°ã©ãã³ã°èšèªã®äžã§äžå®ã®å°äœã確ç«ããŠããŸããã
Rubyã®æåã®ããŒãžã§ã³ã¯PerlãSmalltalkãã圱é¿ãåããŠèšèšãããŸãããããã®åŸãé²åãç¶ããŠããŸããçŸåšãRubyã®ææ°ããŒãžã§ã³ã¯è±å¯ãªæ©èœãšãããŸã§ã«ãªãããã©ãŒãã³ã¹ãæäŸããŠããŸãã
ãŸããRubyã®æåã¯ãRuby on Railsãšãããã¬ãŒã ã¯ãŒã¯ã®ç»å Žã«ãã£ãŠå€§ããå éãããŸããããã®ãã¬ãŒã ã¯ãŒã¯ã¯ãRubyã®è¡šçŸåãšæè»æ§ãæ倧éã«åŒãåºããWebã¢ããªã±ãŒã·ã§ã³éçºã®å¹çãé£èºçã«åäžãããŸããã
1.3 Rubyã®åºæ¬çãªã³ãŒãã®æžãæ¹
Rubyã®ã³ãŒãã¯ãä»ã®å€ãã®ããã°ã©ãã³ã°èšèªãšæ¯èŒããŠéåžžã«ã·ã³ãã«ã§çŽæçã§ãããputsãã䜿ãã°ãæååãåºåããããšãã§ããŸããäŸãã°ããputs “Hello, World!”ããšæžãã°ã”Hello, World!”ãšåºåãããŸãã
Rubyã§ã¯ãææ«ã«ã»ãã³ãã³(;ïŒãä»ããå¿ èŠã¯ãããŸããããŸããå€æ°ã®å®£èšã«ç¹å¥ãªããŒã¯ãŒãã¯äžèŠã§ãã
ã«ãŒããæ¡ä»¶åå²ãç°¡åã«æžãããšãã§ããŸãããeachãã䜿ã£ãç¹°ãè¿ãããifãã䜿ã£ãæ¡ä»¶åå²ã§ãããããã¯ãšåŒã°ããæ§é ãçšããŠãäžé£ã®åäœãã°ã«ãŒãåããããšãã§ããŸãã
1.4 Rubyã®éçºç°å¢æ§ç¯
Rubyã®éçºç°å¢ãæ§ç¯ããããã«ã¯ããŸãRubyã®ã€ã³ã¹ããŒã«ãå¿ èŠã§ããå ¬åŒãŠã§ããµã€ãããããŠã³ããŒãããæé ã«åŸã£ãŠã€ã³ã¹ããŒã«ããŠãã ããã
次ã«ãããã¹ããšãã£ã¿ãèšå®ããŸããVS CodeãSublime Textãªã©ã人æ°ã§ãããRubyã®ãã€ã©ã€ããã€ã³ãã³ããªã©ããµããŒããããšãã£ã¿ãéžã¶ãšè¯ãã§ãããã
æåŸã«ãRubyã®ããã±ãŒãžç®¡çã·ã¹ãã ã§ãããgemããèšå®ããŸãããgem installãã³ãã³ãã䜿çšããŠãå¿ èŠãªã©ã€ãã©ãªããã¬ãŒã ã¯ãŒã¯ãã€ã³ã¹ããŒã«ããŸãã
2. Rubyã®ãã¬ãŒã ã¯ãŒã¯ãšã¯
Rubyãã¬ãŒã ã¯ãŒã¯ãšã¯ãRubyãšããããã°ã©ãã³ã°èšèªã䜿ã£ãWebã¢ããªã±ãŒã·ã§ã³éçºãå¹çåããããã®ããŒã«ã®ããšãæããŸããéçºã楜ã«ããé床ãåäžãããããã®äžé£ã®ã¬ã€ãã©ã€ã³ãšå ·äœçãªããŒã«ãå«ãŸããŠããŸãã
Rubyãã¬ãŒã ã¯ãŒã¯ã¯ãå¿ èŠãªã³ãŒãã®äžéšãçæããéçºè ãå šãŠããŒãããäœæãã代ããã«ãæ¢åã®ã³ãŒãã«åºã¥ããŠæ°ããã³ãŒããäœæãŸãã¯ä¿®æ£ããããšãå¯èœã«ããŸãã
ãŸããRubyãã¬ãŒã ã¯ãŒã¯ã¯ãç¹ã«å€§èŠæš¡ãªãããžã§ã¯ãã§ã¯ãã³ãŒãã®åå©çšãšã¡ã³ããã³ã¹ã容æã«ãããããã³ãŒãã®å¹çãšäžè²«æ§ãåäžãããã®ã«åœ¹ç«ã€ãšãããŸãã
2.1 ãã¬ãŒã ã¯ãŒã¯ã®åºæ¬çãªæŠå¿µ
ãã¬ãŒã ã¯ãŒã¯ãšã¯ãäžè¬çã«ãœãããŠã§ã¢éçºã®åºæ¬çãªã¹ã±ã«ãã³æ§é ã®ããšã§ããããçšåºŠäºåã«çšæããããã¬ãŒã ïŒæ çµã¿ïŒãã®ããšãæããŸããããŒã¯ãŒã㯓åå©çšå¯èœæ§”ãš“äžè²«æ§”ã§ãã
ããã¯ããœãããŠã§ã¢éçºã§é »åºã®åé¡ã解決ããããã«ãäºåã«èšèšãããã¯ã©ã¹ãšã©ã€ãã©ãªã®ã»ãããæäŸããŸãããã®çµæãéçºè ã¯ã¢ããªã±ãŒã·ã§ã³åºæã®æ©èœã«çŠç¹ãåãããããšãã§ããæéãšåŽåãç¯çŽã§ããŸãã
ãã¬ãŒã ã¯ãŒã¯ã¯ãŸããã¢ããªã±ãŒã·ã§ã³ã®èšèšãšå®è£ ã®ãã¹ããã©ã¯ãã£ã¹ãä¿é²ããããšã§ãã³ãŒãã®å質ãšäžè²«æ§ãåäžãããã¡ã³ããã³ã¹ã容æã«ããŸãã
2.2 Rubyã®ãã¬ãŒã ã¯ãŒã¯ã®å¿ èŠæ§ãšå©ç¹
Rubyã®ãã¬ãŒã ã¯ãŒã¯ã䜿çšããæ倧ã®å©ç¹ã¯ãæéãšåŽåãå€§å¹ ã«ç¯çŽã§ããããšã§ããéçºè ã¯è€éãªæ©èœããŒãããäœæããå¿ èŠããªãããã®ä»£ããã«ãã¬ãŒã ã¯ãŒã¯ãæäŸããã³ãŒãããŒã¹ãšããŒã«ã掻çšããããšãã§ããŸãã
ãŸããRubyãã¬ãŒã ã¯ãŒã¯ã¯ãã¢ããªã±ãŒã·ã§ã³ã®ä¿¡é Œæ§ãšã»ãã¥ãªãã£ãåäžãããŸãããããã®ãã¬ãŒã ã¯ãŒã¯ã¯äžè¬çã«ãéçºè ãç¹°ãè¿ãåããšã©ãŒãç¯ãã®ãé²ãããã®ãã«ãã€ã³ãã§ãã¯ãšãã©ã³ã¹ãæäŸããŸãã
ããã«å€ãã®ãã¬ãŒã ã¯ãŒã¯ã¯ãå®æçã«æŽæ°ãããææ°ã®ã»ãã¥ãªãã£è匱æ§ããéçºè ãä¿è·ãããããã¢ããªã±ãŒã·ã§ã³ã®ç¶ç¶çãªä¿è·ãæäŸããŸãã
2.3 Rubyã®ãã¬ãŒã ã¯ãŒã¯ã®çš®é¡
Rubyã®ãã¬ãŒã ã¯ãŒã¯ã«ã¯ãããŸããŸãªçš®é¡ããããŸãããæã人æ°ããããåºãæ¡çšãããŠãããã®ã«ã¯ãRailsãSinatraãHanamiãªã©ããããŸãã
Railsã¯ãç¹ã«å€§èŠæš¡ãªWebã¢ããªã±ãŒã·ã§ã³éçºã«äœ¿çšããã匷åãªãã¬ãŒã ã¯ãŒã¯ã§ãä»ã®ãã¬ãŒã ã¯ãŒã¯ã«ã¯ãªãæ°å€ãã®æ©èœãæäŸããŸããäžæ¹ãSinatraã¯è»œéãªãã¬ãŒã ã¯ãŒã¯ã§ãå°èŠæš¡ãªã¢ããªã±ãŒã·ã§ã³ããã€ã¯ããµãŒãã¹ã«é©ããŠããŸãã
Hanamiã¯ãRailsãšåãããã匷åã§ãããªãããããæŽç·Žãããã¢ãŒããã¯ãã£ãšããã©ãŒãã³ã¹ãæäŸããŸãããããã®ãã¬ãŒã ã¯ãŒã¯ã¯ãããªãã®ãããžã§ã¯ãã®ããŒãºãšã¹ãã«ã»ããã«ãã£ãŠç°ãªããŸãã
2.4 ãã¬ãŒã ã¯ãŒã¯ã®éžã³æ¹
ãã¬ãŒã ã¯ãŒã¯ã®éžã³æ¹ã¯ãéçºè ã®ãããžã§ã¯ããã¹ãã«ã»ããã奜ã¿ã«å€§ããäŸåããŸããæåã«èæ ®ããã¹ãã¯ããããžã§ã¯ãã®èŠæš¡ãšè€éãã§ãã倧èŠæš¡ãªãããžã§ã¯ãã«ã¯ãããå æ¬çãªãã¬ãŒã ã¯ãŒã¯ãé©ããŠããŸãããå°èŠæš¡ãªãããžã§ã¯ãã§ã¯ã軜éã§ã·ã³ãã«ãªãã¬ãŒã ã¯ãŒã¯ãè¯ãã§ãããã
ãŸãããã¬ãŒã ã¯ãŒã¯ã®åŠç¿æ²ç·ãéèŠãªèŠçŽ ã§ããæ°ãã«åŠç¿ãå§ãããã¬ãŒã ã¯ãŒã¯ãæã«è² ããªãã»ã©è€éã§ããå Žåããã®ãã¬ãŒã ã¯ãŒã¯ã¯æåã®éžæã§ã¯ãªããããããŸããã
æåŸã«ããã¬ãŒã ã¯ãŒã¯ã®æç¶å¯èœæ§ãèæ ®ããããšãéèŠã§ããã€ãŸãããã¬ãŒã ã¯ãŒã¯ãæ°å¹Žéã¡ã³ããã³ã¹ãã芪ããŸãç¶ããã¢ããããŒããããæ°ããæ©èœãè¿œå ããç¶ããŸããïŒ ãããã®èŠçŽ ãã¹ãŠãããã¬ãŒã ã¯ãŒã¯ã®éžæã決å®ããéèŠãªèŠçŽ ã«ãªããŸãã
3. Ruby on Railsã®è©³çŽ°è§£èª¬
Ruby on RailsãåºãRailsãšåŒã°ãããRubyèšèªã§äœããããã¬ãŒã ã¯ãŒã¯ã«ã€ããŠè©³ããèŠãŠãããŸãããã
ãã®å®çŸ©ãç¹åŸŽãå©ç¹ãéçºææ³ããããŠéçºç°å¢æ§ç¯ã«è³ããŸã§ãããªããRailsãç解ããããã«å¿ èŠãªãã¹ãŠã®æ å ±ãæäŸããŸãã
ãã¬ãŒã ã¯ãŒã¯ã«ã€ããŠæ·±ãæãäžããåã«ãããªããRailsãå©çšããéã®æºåãããããã«ããã®äžéšã説æããŸãã
3.1 Ruby on Railsãšã¯
Ruby on Railsã¯ãWebã¢ããªã±ãŒã·ã§ã³ã®éçºãç°¡åãã€å¹ççã«ããããã®ãã¬ãŒã ã¯ãŒã¯ã§ããRailsãååšããããã«ãRubyãé«éã§æè»ãªWebéçºèšèªãšããŠåºãèªèãããŸããã
ãã®ãã¬ãŒã ã¯ãŒã¯ã¯ãããã°ã©ãã³ã°ã®ååãšããŠãèŠçŽã«ããèšèš(Convention over Configuration)ããšãDRY(Don’t Repeat Yourself)ããå°éããŠããŸãã
ãããã®ååã®ãããã§ãRailsã¯ã³ãŒãã®éãæå°éã«æããè€æ°ã®éçºè ãäžç·ã«åãéã®èª¿æŽãã·ã³ãã«åããŸãã
3.2 Ruby on Railsã®ç¹åŸŽãšå©ç¹
Ruby on Railsã®äž»ãªç¹åŸŽã¯å°å ¥ã容æã§ãããããçš®é¡ã®Webãããžã§ã¯ãã«é©å¿ããããããšã§ãããã®ãã¬ãŒã ã¯ãŒã¯ã¯ããããžã§ã¯ãã®åæèšå®ãæ¡åŒµãã¡ã³ããã³ã¹ã容æã«ããŸãã
Railsã®å¥ã®å€§ããªå©ç¹ã¯å ¶ã ã®éšåãã·ãŒã ã¬ã¹ã«é£æºããŠåããããéçºããã»ã¹å šäœãè¿ éãã€å¹æçã«è¡ãããããšã§ãã
ãŸããRuby on Railsã¯å€§èŠæš¡ãªã³ãã¥ããã£ãæã£ãŠãããæ°å€ãã®ãžã§ã ïŒè¿œå æ©èœïŒãååšããŸãããããã¯ãããžã§ã¯ãã®ç¹å®ã®åé¡ã解決ããã®ã«åœ¹ç«ã¡ãŸãã
3.3 Ruby on Railsã§ã®éçºææ³
éçºææ³ã«ã€ããŠã¯ãRuby on Railsã§ã¯MVCïŒModel-View-ControllerïŒã¢ãŒããã¯ãã£ã匷ãæšå¥šãããŸããããã«ãããã¢ããªã±ãŒã·ã§ã³ã®äž»èŠãªéšåãæŽçããä»ã®éšåãšçµã¿åãããããšãå¯èœã«ãªããŸãã
ããã«ãTDDïŒTest-Driven DevelopmentïŒãBDDïŒBehavior-Driven DevelopmentïŒãšãã£ããã¹ãé§åã®éçºã¹ã¿ã€ã«ããã£ãããšãµããŒããããŠããŸãã
ããã«ãããéçºè ã¯æ©ã段éã§ãã°ãçºèŠããã³ãŒãã®å質ãä¿ã€ããšãå¯èœã«ãªããŸãã
3.4 Ruby on Railsã®éçºç°å¢æ§ç¯
éçºç°å¢ã®æ§ç¯ã¯ãåããŠRailsãè©Šã人ã«ãšã£ãŠã¯ããé£ãããããããŸãããããããäžåºŠã»ããã¢ãããå®äºããã°ãä»åŸã®éçºãå€§å¹ ã«å®¹æã«ãªããŸãã
Railsãããžã§ã¯ãã®æ§æã¯äžè²«æ§ãããããã¬ãŒã ã¯ãŒã¯èªäœããã£ã¬ã¯ããªãšãã¡ã€ã«æ§æã®ã¬ã€ãã©ã€ã³ãæäŸããŠãããããéçºè ã¯å®¹æã«æ £ããããšãå¯èœã§ãã
ãŸããéçºç°å¢ã®æ§ç¯ã§ã¯ãRuby Version Manager (RVM)ãBundlerãšãã£ãããŒã«ã䜿çšããŸãããããã®ããŒã«ã䜿ãããšã§ããããžã§ã¯ãããšã«ç°ãªãRubyã®ããŒãžã§ã³ããžã§ã ã管çããããšã容æã«ãªããŸãã
4. Sinatraã®è©³çŽ°è§£èª¬
ããã§ã¯ãRubyã®ãã¬ãŒã ã¯ãŒã¯ã®äžã€ã§ããSinatraã«ã€ããŠè©³çŽ°ã«è§£èª¬ããŠãããŸããåå¿è ããäžçŽè ãŸã§ã©ã®ã¬ãã«ã®ããã°ã©ããŒã«ãåããããã説æãå¿ãããŠããŸãã
Sinatraã¯ããã®ã·ã³ãã«ãããæããç¶ããŠãããã¬ãŒã ã¯ãŒã¯ã®äžã€ã§ããã®ç¹åŸŽãšå©ç¹ãéçºææ³ããããŠéçºç°å¢ã®æ§ç¯æ¹æ³ãªã©ãåŠã³ãŸãã
ããã§ã¯ãŸããSinatraãšã¯äœãããèŠãŠãããŸãããã
4.1 Sinatraãšã¯
Sinatraã¯ãRubyã§æžãããDSLïŒDomain Specific LanguageïŒã¹ã¿ã€ã«ã®Webãã¬ãŒã ã¯ãŒã¯ã§ããRubyãæäŸããDSLã®äžã€ã§ãèšå®ãæå°éã«æããããããã匷åã§ãã
èšå®äžèŠã§èµ·åå¯èœã§ãããå°ãªãã³ãŒãã§é«æ©èœãªã¢ããªã±ãŒã·ã§ã³ãäœæããããšãå¯èœãªãããææ©ãããŸãåãã¢ããªã±ãŒã·ã§ã³ãäœæãããããã°ã©ãã«éžã°ããŸãã
ãŸãã匷倧ãªæ©èœãäžæãæäŸããäžæ¹ã§ãè€éããé¿ããããã«å¿ èŠæäœéã®ããšã ããè¡ããšããå²åŠãæã£ãŠããŸãã
4.2 Sinatraã®ç¹åŸŽãšå©ç¹
Sinatraã®æ倧ã®ç¹åŸŽã¯ãã®ã·ã³ãã«ãã§ããæ©èœãéå®ãããŠãããããã³ãŒãã¯ççž®ãããæåããæåŸãŸã§ã³ã³ãããŒã«ã§ããç°å¢ãæäŸãããŸãã
Sinatraã¯ã倧èŠæš¡ãªã¢ããªã±ãŒã·ã§ã³ãè€éãªã«ãŒãã£ã³ã°ãå¿ èŠãšããªãã·ã³ãã«ãªWebã¢ããªã±ãŒã·ã§ã³ã«ç¹ã«é©ããŠããŸããå¿ èŠæäœéã®æ©èœã ããæã€ããšã§ãèµ·åé床ãéåžžã«éãããããããªã³ããå°ãããªããŸãã
å ããŠãSinatraã¯æè»æ§ãæã£ãŠããŸããä»»æã®Rackããã«ãŠã§ã¢ãçµã¿åãããããšãåºæ¥ãã®ã§ãèªåã ãã®ã«ã¹ã¿ã ã¹ã¿ãã¯ãäœãäžããããšãå¯èœã§ãã
4.3 Sinatraã§ã®éçºææ³
Sinatraã§ã¯ãåºæ¬çã«HTTPã®ã¡ãœãã(GETãPOSTãªã©)ãšURLã«åºã¥ããã«ãŒãã£ã³ã°ãçšããŸãããŸããRubyã®ãããã¯ã䜿ã£ãŠã¬ã¹ãã³ã¹ãçµã¿ç«ãŠããããªã¹ã¿ã€ã«ãæ¡çšãããŠããŸãã
ãã®éçºææ³ã¯ãèŠæš¡ã倧ããã¢ããªã±ãŒã·ã§ã³ãéçºããæã«ã¯äžèŠå¶éçã«èŠãããããããŸããããäžæ¹ã§å°èŠæš¡ãªã¢ããªã±ãŒã·ã§ã³ãAPIãéçºããéã«ã¯ãéåžžã«ç°¡æœã§æ軜ã«å®è£ ã§ããå©ç¹ããããŸãã
ããã«ãSinatraã§ã¯MVCã¢ãã«(Vã¯ãªãã)ãšRESTã®ååãåºæ¬ãšããŠããŸããããã«ãããä»ã®ãã¬ãŒã ã¯ãŒã¯ãã移è¡ããããã°ã©ãããæãã€ãããããã®ãšãªã£ãŠããŸãã
4.4 Sinatraã®éçºç°å¢æ§ç¯
Sinatraã®éçºç°å¢ã®æ§ç¯ã¯ãRubyãã€ã³ã¹ããŒã«ãããŠããã°éåžžã«ç°¡åã§ããgem install sinatraãšããã³ãã³ãäžã€ã§ãã©ã€ãã©ãªãã€ã³ã¹ããŒã«ãããããã«å§ããããšãåºæ¥ãŸãã
ãã ããæ¬æ Œçã«éçºãå§ããåã«ãBundlerãRackãªã©ã®ããŒã«ã䜵çšããããšã§ãããã¹ã ãŒãºãªéçºãå¯èœã«ãªããŸãããããã®ããŒã«ã䜵çšããããšã§ãäŸåé¢ä¿ã管çãããããªããè€æ°ã®ç°å¢ã§ã®äºææ§ã確ä¿ã§ããŸãã
以äžãSinatraã®éçºç°å¢ã®åºæ¬çãªæ§ç¯æ¹æ³ãšãªããŸããããããåºã«ãèªèº«ã«ãã£ãéçºç°å¢ãæ§ç¯ããŠãããŸãããã
5. Hanamiã®è©³çŽ°è§£èª¬
HanamiïŒã¯ãªã¿ïŒãšããååãèããããšããããŸããïŒ ããRubyã®ãã¬ãŒã ã¯ãŒã¯ãšããŠè³ã«ããããšããªããã°ãåœèšäºã§ãã®é åãšè©³çŽ°ã解説ããŸããã¢ãã³ãªãã¬ãŒã ã¯ãŒã¯ãšããŠéçºè éã«æ¥éã«æããã€ã€ãããããã«ã¯çç±ããããŸããã
5.1 Hanamiãšã¯
Hanamiã¯ãRubyåãã®è»œéãªãŠã§ãã¢ããªã±ãŒã·ã§ã³ãã¬ãŒã ã¯ãŒã¯ã§ãå šææ€çŽ¢ãçµ±åãã¹ããã»ãã¥ãªãã£å¯Ÿçãªã©ãçµã¿èŸŒãŸããŠããŸãããã®èšèšã¯ãã¢ããªã±ãŒã·ã§ã³ã®äžå¿ã«ããžãã¹ããžãã¯ã眮ãããã®ä»ã®éšåããã®ããžãã¯ãæ¯æŽãããšãããã¯ãªãŒã³ã¢ãŒããã¯ãã£ã®ååã«åºã¥ããŠããŸãã
5.2 Hanamiã®ç¹åŸŽãšå©ç¹
Hanamiã®ç¹æ§ãšå©ç¹ãäœã§ãããèå³æŽ¥ã ã§ãããããŸã第äžã«ãHanamiã¯ã·ã³ãã«ã§ç°¡æœã§ããRailsã®ãããªéããæãããäžæ¹ã§å¿ èŠãªå šãŠã®æ©èœãæäŸããŸãããŸãããã®èšèšååã«åŸã£ãŠäœãããŠãããããã³ãŒãã®å質ãç¶æããªãã巚倧ãªã¢ããªã±ãŒã·ã§ã³ãæ§ç¯ããããšãå¯èœã§ãã
5.3 Hanamiã§ã®éçºææ³
Hanamiã§ã¯ãã¹ãé§åéçºãã¹ã ãŒãºã«è¡ãããšãå¯èœã§ããçµã¿èŸŒã¿ã®ROuterãAssetsãMailerãšçµ±åããããšã«ããããªãããªãŠã§ãã¢ããªã±ãŒã·ã§ã³ãå¹ççã«äœãäžããããŸããããã«ãHanamiã¯SQLãJavaScriptã®ãããªä»ã®ããã°ã©ãã³ã°èšèªãšãç°¡åã«çµ±åããããšãå¯èœã§ãããããçš®é¡ã®ãããžã§ã¯ãã«å¯Ÿå¿ã§ããŸãã
5.4 Hanamiã®éçºç°å¢æ§ç¯
ããã§ã¯ãHanamiã®éçºç°å¢ãæ§ç¯ããæ¹æ³ãèŠãŠã¿ãŸãããããŸããRubyã®ã€ã³ã¹ããŒã«ãå¿ èŠã§ããRubyã®ããŒãžã§ã³ç®¡çããŒã«ã§ããrbenvãRVMã䜿çšããŠRubyãã€ã³ã¹ããŒã«ã§ããŸãã次ã«ãHanamiã®ã€ã³ã¹ããŒã«ãè¡ããŸããã¿ãŒããã«ã«”gem install hanami”ãšå ¥åããŠå®è¡ããŸããããããã§ã¯ãããããHanamiã§ã®éçºãã¹ã ãŒãºã«è¡ããããšãé¡ã£ãŠããŸãïŒ
6. ãŸãšãïŒã©ã®ãã¬ãŒã ã¯ãŒã¯ãéžã¶ã¹ãã
äžèšã§èšã£ãŠããŸãã°ãã©ã®ãã¬ãŒã ã¯ãŒã¯ãéžã¶ã¹ããã¯ããã®ãã¬ãŒã ã¯ãŒã¯ãæäŸããæ©èœãšãã®çšéã«ãããŸããRubyèšèªã®ãã¬ãŒã ã¯ãŒã¯ã«ã¯æ§ã ãªçš®é¡ããããŸãããæé©ãªéžæãããããã«ã¯çšéãšå©ç¹ãç解ããããšãéèŠã§ãã
åãã¬ãŒã ã¯ãŒã¯ã¯ãé²è¡äžã®ãããžã§ã¯ããšå°æ¥ã®èšç»ã«å¯Ÿå¿ããããã®ç°ãªãç¹æ§ãšèšèšææ³ãæã£ãŠããŸãããããã£ãŠã䜿çšãããã¬ãŒã ã¯ãŒã¯ãæ éã«éžã¶ããšã¯ãããªãã®ãããžã§ã¯ãã®æåã«ãšãŠãéèŠã§ãããšèšããŸãã
æçµæ±ºå®ã¯åžžã«ãããžã§ã¯ãã®ç®æšãèŠæš¡ãã³ãŒãã®å質ãããŒã ã®ã¹ãã«ã»ããããããŠéçšäžã®æ€èšäºé ãèæ ®ãã¹ãã§ãã
6.1 çšéã«å¿ãããã¬ãŒã ã¯ãŒã¯ã®éžã³æ¹
Rubyèšèªã®ãã¬ãŒã ã¯ãŒã¯ãéžã¶éã«ã¯ããŸãã¯ãã®çšéãæ確ã«ããããšã倧åã§ããäŸãã°ã倧èŠæš¡ãªãŠã§ãã¢ããªã±ãŒã·ã§ã³ãéçºããå Žåããã«ã¹ã¿ãã¯ãã¬ãŒã ã¯ãŒã¯ã®Ruby on Railsãé©ããŠããŸãã
+äžæ¹ãAPIãµãŒãã¹ã®äœæãæ³å®ããŠããå Žåã¯ãSinatraãHanamiãåªããéžæè¢ãšãªããŸãããããã®ãã¬ãŒã ã¯ãŒã¯ã¯è»œéã§ãããæè»ãªèšå®ãå¯èœã§ãããããAPIã®çšéã«ã¯éåžžã«é©ããŠããŸãã
ãŸããå°èŠæš¡ãªãããžã§ã¯ããæè²ç®çã§ããã°ãã·ã³ãã«ã§åŠç¿æ²ç·ã®äœããã¬ãŒã ã¯ãŒã¯ãéžã¶ããšãæå¹ã§ãã
6.2 ãã¬ãŒã ã¯ãŒã¯åŠç¿ã®ãã€ã³ã
ãã¬ãŒã ã¯ãŒã¯ãç¿åŸããéã«ã¯ãå ¬åŒææžã®èªã¿èŸŒã¿ãšå®éã®ã³ãŒãã£ã³ã°ãç©æ¥µçã«è¡ãããšã倧åã§ãã
ãŸãããã¬ãŒã ã¯ãŒã¯ããšã®ç¹åŸŽãèšèšææ³ãç解ããããšã§ãã©ã®ããã«ãã¬ãŒã ã¯ãŒã¯ãå©çšããããèŠããŠããŸããRubyã®ãã¬ãŒã ã¯ãŒã¯ã§ã¯ããããããç¹æã®èšèšãã¿ãŒã³ãæèæ³ãæã£ãŠããã®ã§ããã®ç¹æ§ãææ¡ããããšãéèŠã§ãã
ããã«ãå®éã®ãããžã§ã¯ããéããŠåŠãã ãšã¯ã¹ããªãšã³ã¹ãšç¥èãå ±æããããšã«ãããããè¯ãã³ãŒããæžãããã®ãã¹ããã©ã¯ãã£ã¹ãæŽãããšãã§ããŸãã
6.3 ãã¬ãŒã ã¯ãŒã¯ã®æ¯èŒè¡š
以äžã®æ¯èŒè¡šã§ã¯ãRubyã®äž»èŠãªãã¬ãŒã ã¯ãŒã¯ã®ç¹æ§ãå©ç¹ãé©çšå¯Ÿè±¡ããŸãšããŸããããã®è¡šã¯ãããªããæé©ãªãã¬ãŒã ã¯ãŒã¯ãéžã¶æå©ããšãªãã§ãããããŸããæ¯èŒè¡šã掻çšããããšã§ãããªããèæ ®ãã¹ããã€ã³ããæ確ã«ããããšãã§ããŸãã
â»æ¯èŒè¡šã¯ããã«å ¥ããŸãâ»
Tableã䜿çšçŠæ¢ã®ãããå ·äœçãªæ¯èŒè¡šã¯çç¥ããŸããããã®ç®æã«ãã¬ãŒã ã¯ãŒã¯ã®æ¯èŒè¡šãæ¿å ¥ããŸããäŸãã°ããã¬ãŒã ã¯ãŒã¯ã®ååãç¹æ§ãé©çšå¯Ÿè±¡ãå©ç¹ãªã©ããªã¹ãã¢ããããŸãã
6.4 Rubyã®ãã¬ãŒã ã¯ãŒã¯ã掻çšããéçºã®ã¹ã¹ã¡
Rubyã®ãã¬ãŒã ã¯ãŒã¯ã¯ãéçºå¹çã®åäžãä¿å®æ§ã®é«ããã³ãã¥ããã£ã®è±ããçãå€ãã®é åãå®çŸããŠããŸãããã®ãããªãã¬ãŒã ã¯ãŒã¯ã掻çšããããšã§ãããªãã®éçºã¯ãŒã¯ãããŒã¯å€§ããæ¹åãããã§ãããã
ãŸãããã¬ãŒã ã¯ãŒã¯ãæäŸããè±å¯ãªã©ã€ãã©ãªãšã¢ãžã¥ãŒã«ã掻çšããããšã§ãè€éãªæ©èœãç°¡åã«å®è£ ã§ããŸããããã«ãããéçºæéã®ççž®ãšå¹ççãªã³ãŒãã®äœæãå¯èœãšãªããŸãã
æåŸã«ããã¬ãŒã ã¯ãŒã¯ã¯äžé£ã®ãã¹ããã©ã¯ãã£ã¹ãšèšèšãã¿ãŒã³ãæäŸããŸãã®ã§ãã³ãŒãã®å質ã確ä¿ããªãããå®å®æ§ãšã¹ã±ãŒã©ããªãã£ã®é«ãã¢ããªã±ãŒã·ã§ã³ãæ§ç¯ã§ããŸãã