ããã°ã©ãã³ã°ã«ãããŠæéã¯è²Žéã§ããç¹ã«å¿ããããžãã¹ããŒãœã³ã«ãšã£ãŠãçæéã§é«å¹çãªã¹ãã«ç¿åŸã¯å¿ é ã§ãããããã§ãRubyã®åºç€ãçæéã§ç解ããããã®å®ç§ãªã¬ã€ãããçšæããŸããããã®èšäºã§ã¯ãRubyãšã¯äœããåå¿è åãã«è§£èª¬ãããã®æŽå²ãèšèšææ³ãç¹åŸŽãåºæ¬ã®æ§æãå€æ°ãã¡ãœãããã¯ããããªããžã§ã¯ãæåããã°ã©ãã³ã°ãããã«Ruby on RailsãçšãããŠã§ãéçºãŸã§å¹ åºãã«ããŒããŸããå®çšçãªã¹ã¯ãªããäœæãå«ãããã®äžé£ã®å ¥éã¬ã€ãã§ããžãã¹ã®çŸå Žã«å³æŠåãšãªãRubyã®åãæã«å ¥ããŸãããã
1. Rubyãšã¯ïŒåå¿è ãç解ããããã®å ¥éã¬ã€ã
Rubyã¯ãã·ã³ãã«ããšé«ãçç£æ§ãéèŠããããã°ã©ãã³ã°èšèªã§ããæ¥æ¬äººã®ãŸã€ããšããã²ãïŒé称MatzïŒã«ãã£ãŠéçºããã䜿ãããããšç解ãããããã³ã¢ã«èšèšãããŠããŸãã
ãã®èšäºã§ã¯ãåå¿è ã§ãRubyãšãã®é åãçæéã§åŠã¶ããšãã§ããããã«ãã€ã³ããçµã£ãŠè§£èª¬ããŸããç®æ¬¡ã«æ²¿ã£ãŠRubyã®äžçã«è§ŠããŠã¿ãŸãããã
ç¬ç¹ãªã³ãã¥ããã£æåãšè±å¯ãªã©ã€ãã©ãªãRubyãåŠã¶ã¢ãããŒã·ã§ã³ãé«ããããã°ã©ãã³ã°ã®æ¥œãããæããŠãããŸããããã§ã¯ãRubyã®åºç€ããèŠãŠãããŸãããã
1.1 Rubyã®æŽå²ãšèšèšææ³
1995幎ã«å ¬éãããRubyã¯ããªããžã§ã¯ãæåã®ããã°ã©ãã³ã°èšèªãšããŠåå¿è ããäžçŽè ãŸã§å¹ åºãæ¯æãããŠããŸããMatzããããã°ã©ãã³ã°ã®åã ã¡ããšè¡šçŸããããã«ãéçºè ã®ææ§ãéãããèšèªã§ãã
Rubyã¯äººéæ¬äœã®èšèªèšèšãç®æããã³ãŒããèªã¿ããããèªç¶ãªèšèªã«è¿ãææ³ãæã£ãŠããŸããããã°ã©ãã³ã°åå¿è ã«ãšã£ãŠåŠã³ãããç解ããããã®ãæ倧ã®ç¹åŸŽã§ãã
ãŸããRubyã¯å€ãã®ãã¬ãŒã ã¯ãŒã¯ãã©ã€ãã©ãªãæäŸãããŠããããŠã§ãã¢ããªã±ãŒã·ã§ã³ã®éçºãªã©ã«åºãå©çšãããŠããŸããRuby on Railsã¯ãã®æãæåãªäŸã§ãã
1.2 Rubyã®ç¹åŸŽãšèšèªã®ã¹ãã«ã»ãã
Rubyã®å€§ããªç¹åŸŽã¯ãã®è±ããªè¡šçŸåã§ãããªããžã§ã¯ãæåããã°ã©ãã³ã°ãå®å šã«ãµããŒãããããšã§ãã³ãŒãã®åå©çšæ§ãšç®¡çã®ãããããå®çŸããŠããŸãã
ãããã¯ãšåŒã°ããæ©èœã¯ãç¹°ãè¿ãåŠçãæ¡ä»¶åå²ãç°¡æœã«æžãããããã³ãŒããçŽæçã§èªã¿ããããã®ã«ããŠããŸããããã«ãããããŒã¿åŠçãããã¹ãåŠçãå¹ççã«è¡ããŸãã
Rubyã®ã¹ãã«ã»ããã«ã¯ãWebã¢ããªã±ãŒã·ã§ã³ã®éçºãããŒã¿åæããªãŒãã¡ãŒã·ã§ã³ã¹ã¯ãªããã®äœæãªã©ããããŸãããŸãããã¹ãé§åéçºãããã€ãã¢é§åéçºã容æã«è¡ãããšãã§ããŸãã
1.3 äž»èŠãªRubyã®æ§æãšã³ãŒãã£ã³ã°ã®åºç€
Rubyã®æ§æã¯ãã·ã³ãã«ã§ç解ããããããšãç¹åŸŽã§ããå€æ°ã®å®£èšã«ç¹å¥ãªããŒã¯ãŒããäžèŠã§ãã¡ãœããå®çŸ©ãç°¡æœã§ãã
æ¡ä»¶åå²ã§ã¯ãifãããunlessããç¹°ãè¿ãåŠçã§ã¯ãwhileãããforãããããŠãããã¯ã掻çšãããeachããªã©ãé »ç¹ã«çšããããŸãã
ãŸããé åãããã·ã¥ã®æäœãRubyã§ã¯éåžžã«çŽæçã§ããããã«ã¯åŒ·åãªçµã¿èŸŒã¿ã¡ãœãããçšæãããŠãããããŒã¿æäœãç°¡åã§æ¥œãããšè©ãããæ以ã§ãã
1.4 Rubyã®ã€ã³ã¹ããŒã«ãšç°å¢æ§ç¯
Rubyã®ã€ã³ã¹ããŒã«ã¯ç°å¢ããšã«ç°ãªããŸãããWindowsãŠãŒã¶ãŒã§ãLinuxãmacOSã䜿ãæ¹ã§ãç°¡åã«ã§ãããããªã€ã³ã¹ããŒã©ãçšæãããŠããŸãã
ç°å¢æ§ç¯ã§éèŠãªã®ã¯ãRubyã®ããŒãžã§ã³ç®¡çã§ããrbenvãRVMã®ãããªããŒãžã§ã³ç®¡çããŒã«ã䜿çšããããšã§ããããžã§ã¯ãããšã«ç°ãªãRubyã®ããŒãžã§ã³ãç°¡åã«åãæ¿ããããšãã§ããŸãã
ããã«å§ããããIDEããšãã£ã¿ãè±å¯ã«ãããŸããVisual Studio CodeãRubyMineãæåã§ã匷åãªã³ãŒãè£å®ããããã°æ©èœãåããRubyéçºãå¹ççã«è¡ãããšãå¯èœã§ãã
2. Rubyã®åºç€ç¥è: å€æ°ãããŒã¿ã¿ã€ããæŒç®å
2.1 å€æ°ãšä»£å ¥ã®åºæ¬
Rubyã«ãããå€æ°ã¯ãããŒã¿ã«ååãã€ããŠä¿åããããã®å®¹åšã§ããå€æ°ã«ã¯å€ãä»£å ¥ãããã®åŸã§ãã®å€ãåç §ã§ããŸããå€æ°åã¯è±å°æåãŸãã¯ã¢ã³ããŒã¹ã³ã¢ã§å§ããæ°åãæåãã¢ã³ããŒã¹ã³ã¢ãå«ãããšãã§ããŸãã
代å
¥ã¯ ‘=‘ èšå·ã䜿çšããŠè¡ãããŸããäŸãã°ãnumber = 10
ã¯ãå€æ° number ã«æŽæ° 10 ã代å
¥ããŸãããã®ä»£å
¥æ¹æ³ã«ãããå€æ°ã¯åŸããã§ãæ°ããå€ã§æŽæ°ããããšãå¯èœã§ãã
å€æ°ã¯åçåä»ããããŠãããåã®å®£èšã¯äžèŠã§ããã€ãŸããã©ã®ã¿ã€ãã®ããŒã¿ãå€æ°ã«æ ŒçŽã§ããåãå€æŽãããããšããããããŸããäŸïŒdata = 'Hello'
ãã data = 20
ãžã®å€æŽã¯èªç¶ã«è¡ãããŸãã
2.2 ããŒã¿ã¿ã€ããšãã®æäœæ¹æ³
Rubyã«ã¯ããã€ãã®äž»èŠãªããŒã¿ã¿ã€ãããããŸããããã«ã¯æ°å€ãæååãé
åãããã·ã¥ãã·ã³ãã«ãªã©ããããŸããæ°å€ã«ã¯æŽæ°ããã³æµ®åå°æ°ç¹ãããã3
ã4.5
ã®ããã«è¡šçŸãããŸããæååã¯äºéãŸãã¯åäžã®åŒçšç¬Šã§å²ãŸããããã¹ãããŒã¿ãæ±ããŸãã
é
åã¯é åºä»ããããããŒã¿ã®ã³ã¬ã¯ã·ã§ã³ã§ãããä»»æã®ããŒã¿ã¿ã€ããå«ãããšãã§ããŸããäŸïŒarray = [1, 'two', 3.0]
ãããã·ã¥ã¯ããŒãšå€ã®ãã¢ã®éåã§ãããhash = {'name' => 'Alice', 'age' => 30}
ã®ããã«äœ¿çšããŸãã
ã·ã³ãã«ã¯è»œéãªæååã®ããã§ããã:name
ã®ããã«ã³ãã³ã§å§ãŸããŸããæ¯èŒçå€æŽãããªãååãã©ãã«ã«é »ç¹ã«äœ¿çšãããŸããæååãããå¹ççãªãããããã·ã¥ã®ããŒãšããŠããçšããããŸãã
2.3 æŒç®åã®çš®é¡ãšãã®äœ¿çšäŸ
æŒç®åã䜿ãããšã§ãæ°å€ãããŒã¿æ§é ã«å¯ŸããŠç¹å®ã®æäœãè¡ããŸããç®è¡æŒç®åã«ã¯å ç®ïŒ+
ïŒãæžç®ïŒ-
ïŒãä¹ç®ïŒ*
ïŒãé€ç®ïŒ/
ïŒãå°äœïŒ%
ïŒããããŸãã
æ¯èŒæŒç®åã«ã¯çããïŒ==
ïŒãçãããªãïŒ!=
ïŒã倧ãªãïŒ>
ïŒãå°ãªãïŒ<
ïŒã倧ãªãã€ã³ãŒã«ïŒ>=
ïŒãå°ãªãã€ã³ãŒã«ïŒ<=
ïŒãªã©ããããŸãããããã¯æ¡ä»¶åå²ã§ãã䜿çšãããŸãã
è«çæŒç®åã«ã¯ANDïŒ&&
ïŒãORïŒ||
ïŒãNOTïŒ!
ïŒã®3ã€ããããçåœå€ãæäœããéã«äœ¿çšããŸããäŸïŒtrue && false
ã¯false
ãè¿ããtrue || false
ã¯true
ãè¿ããŸãã
2.4 æ¡ä»¶åŒãšæµãå¶åŸ¡
æ¡ä»¶åŒã¯ç¹å®ã®æ¡ä»¶ãçãåœããè©äŸ¡ããããã«åºã¥ããŠç°ãªãã³ãŒããããã¯ãå®è¡ããããã«äœ¿çšãããŸããæãåºæ¬çãªæ¡ä»¶åŒã¯if
æã§ãããã«ã¯elsif
ãelse
ãçµã¿åãããããšããããŸãã
äŸãšããŠãif temperature > 30
ã¯ã枩床ã 30 床ãè¶
ããå Žåã«ç¹å®ã®ã¢ã¯ã·ã§ã³ãåããŸããå Žåã«ãã£ãŠã¯ããã«ããªæŒç®åïŒæ¡ä»¶ ? çã®å Žå : åœã®å Žå
ïŒã䜿ã£ãåäžè¡ã®æ¡ä»¶ãæå¹ã§ãã
ãã®ä»ã®æµãå¶åŸ¡ã®æ§é ã«ã¯ãwhile
ã«ãŒããfor
ã«ãŒããuntil
ã«ãŒãããããç¹°ãè¿ãã®åäœãå¿
èŠãªãšãã«äœ¿çšãããŸããäŸãã°ãwhile i < 5
ã¯ãi ã5ã«ãªãåã«ç¹°ãè¿ãããã«ãŒããäœæããŸãã
3. ã¡ãœãããšãããã¯: Rubyã®æ©èœã掻çšãã
Rubyã®å¿èéšãšãèšããã¡ãœãããšãããã¯ã¯ããšã¬ã¬ã³ãã§åŒ·åãªã³ãŒãã£ã³ã°ãå¯èœã«ããŸãããã®ã»ã¯ã·ã§ã³ã§ã¯ãã¡ãœããå®çŸ©ããããã¯ãšãã®ã€ãã¬ãŒã¿ãæšæºã©ã€ãã©ãªã®è±å¯ãªæ©èœããããŠãããã°ãšãšã©ãŒåŠçã®åºç€ãåŠã³ãŸãã
3.1 ã¡ãœããå®çŸ©ãšåŒæ°ã®äœ¿ãæ¹
Rubyã§ã®ã¡ãœããå®çŸ©ã¯ãã³ãŒãã®åå©çšæ§ãšæŽçãä¿é²ããŸããã¡ãœããã¯def
ããŒã¯ãŒãã§å§ãŸããå¿
èŠã«å¿ããŠåŒæ°ãåãããšãã§ããŸãã
åŒæ°ã䜿ãããšã§ãã¡ãœããã¯æè»æ§ãå¢ããç°ãªãã³ã³ããã¹ãã§åå©çšå¯èœã«ãªããŸããåŒæ°ã¯ããã©ã«ãå€ãæãããããšãã§ããã®ã§ãä»»æã§æž¡ãããšãå¯èœã«ãªããŸãã
äŸãã°ãgreet(name="World")
ãšããã¡ãœãããäœæããããšã§ããHello, Worldããšããæšæ¶ãããHello, Aliceããšããç¹å®ã®ååã«å¯Ÿããæšæ¶ãè¡ããŸãã
3.2 ãããã¯ãšã€ãã¬ãŒã¿ã®ä»çµã¿
ãããã¯ã¯Rubyã§åŒ·åãªã€ãã¬ãŒã·ã§ã³ãå®çŸããããã®æ§é ã§ããã¡ãœããåŒã³åºããšå ±ã«ãã³ãŒãã®ãããã¯ãæž¡ãããšãã§ããŸãã
ãããã¯ãæã€ã¡ãœããã¯yield
ãçšããŠãããã¯å
ã®ã³ãŒããå®è¡ããããšãã§ãããããè€æ°åè¡ãããšã§ã€ãã¬ãŒã¿ãäœæããŸãã
äŸãã°3.times { puts "Ruby" }
ã¯ãåã«ãRubyããšããæååã3ååºåããã€ãã¬ãŒã·ã§ã³ãè¡ãã·ã³ãã«ãªãããã¯ã®äœ¿ãæ¹ã§ãã
3.3 æšæºã©ã€ãã©ãªã®æŽ»çšæ³
Rubyã«ã¯å å®ããæšæºã©ã€ãã©ãªãåãã£ãŠãããéçºè ã¯ããããå©çšããŠããè±ããªããã°ã©ã ãäœæããããšãã§ããŸãã
äŸãã°Date
, JSON
, FileUtils
ãªã©ã®ã©ã€ãã©ãªã«ã¢ã¯ã»ã¹ããããšã§ãæ¥ä»ã®æäœãJSONããŒã¿ã®è§£æããã¡ã€ã«æäœãšãã£ãæ©èœãç°¡åã«è¿œå å¯èœã§ãã
ãããã®ã©ã€ãã©ãªãå©çšããéã«ã¯ãrequireã¡ãœããã䜿ã£ãŠå¿ èŠãªã©ã€ãã©ãªããã¡ã€ã«å ã§èªã¿èŸŒãå¿ èŠããããŸãã
3.4 ãããã°ãšãšã©ãŒåŠçã®åºæ¬
å¹ççãªãããã°ãšãšã©ãŒåŠçã¯ãããã°ã©ã ã®ä¿¡é Œæ§ãšã¡ã³ããã³ã¹æ§ãé«ããäžã§éèŠã§ãã
Rubyã«ã¯puts
ãp
ã®ãããªã·ã³ãã«ãªãããã°ææ³ããããŸãããè€éãªåé¡ã«å¯ŸåŠããã«ã¯byebug
ã®ãããªãããã°ããŒã«ã圹ç«ã¡ãŸãã
ãŸãããšã©ãŒåŠçã§ã¯begin
ãrescue
ãensure
ã䜿çšããããšã§ãäŸå€ã管çãããã°ã©ã ãå®å®ãããããšãã§ããŸãã
4. ãªããžã§ã¯ãæåããã°ã©ãã³ã°ãšRubyã®ã¯ã©ã¹æ§é
ãªããžã§ã¯ãæåããã°ã©ãã³ã°ïŒOOPïŒã¯ãçŸå®äžçã®äºç©ããªããžã§ã¯ããšããŠã¢ãã«åããããšãå¯èœã«ããŸããRubyã¯çŽç²ãªãªããžã§ã¯ãæåèšèªã§ãããã¯ã©ã¹æ§é ãéããŠOOPãå®çŸããŸããããã§ã¯ãRubyã«ãããåºæ¬çãªOOPæŠå¿µãšããŠã¯ã©ã¹ãšã€ã³ã¹ã¿ã³ã¹ãç¶æ¿ãããªã¢ãŒãã£ãºã ããããŠã¢ãžã¥ãŒã«ã®ããã¯ã¹ã€ã³ã«ã€ããŠç°¡åã«è§ŠããŸãã
ã¯ã©ã¹ã¯ãªããžã§ã¯ãã®èšèšå³ã§ãããã€ã³ã¹ã¿ã³ã¹ã¯ãã®ã¯ã©ã¹ã«åºã¥ããŠçæãããå ·äœçãªãªããžã§ã¯ãã§ããRubyã§ã¯ãã¯ã©ã¹ãšã€ã³ã¹ã¿ã³ã¹ãæå¹ã«æŽ»çšããããšãéèŠã§ãã
以äžã®èª¬æã§ã¯ãRubyã«ããããªããžã§ã¯ãæåã®åºç€ã«æ·±ãæœã蟌ã¿ãå¹ççã§åå©çšå¯èœãªã³ãŒããæžãããã®ç解ãæ·±ããŸãã
4.1 ã¯ã©ã¹ãšã€ã³ã¹ã¿ã³ã¹ã®ç解
Rubyã«ãããã¯ã©ã¹ã¯ãªããžã§ã¯ããçæããããã®ãã³ãã¬ãŒãã§ããäŸãã°ãããããè»ãæã€ã¹ãå±æ§ãšåäœãå®çŸ©ããCarã¯ã©ã¹ãäœãããšãã§ããŸãããã®äžã§ãåè»ãåå¥ã®ã€ã³ã¹ã¿ã³ã¹ãšããŠè¡šçŸããŸãã
ã€ã³ã¹ã¿ã³ã¹ãçæããéã«ã¯ãã¯ã©ã¹åã®åŸãã«.newã¡ãœããã䜿çšããŸããäŸãã°car = Car.newãšããããšã§ãCarã¯ã©ã¹ã®æ°ããã€ã³ã¹ã¿ã³ã¹ãäœæãããŸãã
ã€ã³ã¹ã¿ã³ã¹ã¯ç¬èªã®å±æ§å€ãæã€ããšãã§ããäŸãã°ãcar1ãšcar2ãå ±ã«Carã¯ã©ã¹ããçæããããšããŠããè²ãã¢ãã«ãšãã£ãããããã£ã¯ç°ãªãå€ãæã€ããšãã§ããŸãã
4.2 ç¶æ¿ãã«ãã»ã«åãããªã¢ãŒãã£ãºã ã«ã€ããŠ
Rubyã§ã¯ãã¯ã©ã¹éã®é¢ä¿ãèšå®ããããšã§ãç¶æ¿ãå©çšããããšãã§ããŸããç¶æ¿ã䜿çšããããšã§ãããã¯ã©ã¹ïŒèŠªã¯ã©ã¹ïŒã®ããããã£ãã¡ãœãããå¥ã®ã¯ã©ã¹ïŒåã¯ã©ã¹ïŒã«åŒãç¶ãããšãå¯èœã«ãªããŸãã
ã«ãã»ã«åã¯ããªããžã§ã¯ãå éšã®ããŒã¿ãé èœããå€éšããã¯ã¡ãœãããéããŠã®ã¿ã¢ã¯ã»ã¹ãèš±å¯ããæŠå¿µã§ããRubyã§ã¯ã¡ãœãããå€æ°ã®ã¹ã³ãŒããå¶éããããšã§ãããå®çŸããŸãã
ããªã¢ãŒãã£ãºã ãšã¯ãç°ãªãã¯ã©ã¹ã®ãªããžã§ã¯ããåãã€ã³ã¿ãŒãã§ãŒã¹ãŸãã¯ã¡ãœãããå ±æããããããã«å¯Ÿå¿ããç°ãªãåäœãããèœåã®ããšã§ããRubyã§ã¯ã¡ãœããã®ãªãŒããŒã©ã€ããããã¯ã¿ã€ãã³ã°ãéããŠããªã¢ãŒãã£ãºã ãå®çŸã§ããŸãã
4.3 ããã¯ã¹ã€ã³ãšã¢ãžã¥ãŒã«ã®äœ¿çšæ³
ã¢ãžã¥ãŒã«ã¯Rubyã«ãããç¶æ¿ãã«ãã»ã«åãããªã¢ãŒãã£ãºã ãè£ãæ©èœçãªã³ã³ããŒãã³ãã§ãããããã¯ããã¯ã¹ã€ã³ãšããŠã¯ã©ã¹ã«å«ãŸããããšã§æ©èœãå ±æããŸãã
ããã¯ã¹ã€ã³ã¯ãã¯ã©ã¹ã«å¯ŸããŠincludeããŒã¯ãŒãã䜿ã£ãŠã¢ãžã¥ãŒã«ãè¿œå ããããšã§è¡ãããŸããã¢ãžã¥ãŒã«å ã§å®çŸ©ãããã¡ãœãããã¯ã©ã¹å ã®ã¡ãœãããšããŠè¿œå ããããã®ã¯ã©ã¹ã®ã€ã³ã¹ã¿ã³ã¹ã«ãã£ãŠäœ¿ãããããšãã§ããŸãã
ãã®ææ³ã«ãã£ãŠã2ã€ä»¥äžã®ã¯ã©ã¹éã§ã³ãŒããå ±æããããç¹å®ã®ã¯ã©ã¹ã«ç¹åããã¡ãœãããæäŸããããšãã§ããŸãããŸããã¢ãžã¥ãŒã«ã䜿çšããããšã§åå空éã®è¡çªãé²ãããšãã§ããŸãã
4.4 Rubyã§ã®ãªããžã§ã¯ãæåèšèšã®å®äŸ
Rubyã«ããããªããžã§ã¯ãæåèšèšãäŸã«ãšããšãeã³ããŒã¹ã·ã¹ãã ã§ã¯ ProductãOrderãUser ãšãã£ãã¯ã©ã¹ãååšãããããããŸãããProductã¯ã©ã¹ã¯äŸ¡æ Œã説æãç»åãªã©ã®å±æ§ãæã¡ãŸãã
Orderã¯ã©ã¹ã¯ãã®æ³šæãããååã®ãªã¹ãã泚æã®ç¶æ ã«é¢é£ããã¡ãœãããæã¡ãUserã¯ã©ã¹ã¯é¡§å®¢æ å ±ãèªèšŒé¢é£ã®ã¡ãœãããæã€ã§ãããã
ãããã®ã¯ã©ã¹ãæ£ããçžäºäœçšããããã«èšèšãããŠããã°ãæè»ã§åŒ·åãªeã³ããŒã¹ã·ã¹ãã ã®åºç€ã圢æãããŸããRubyã®åçãªæ§è³ªãšè±å¯ãªçµã¿èŸŒã¿ã©ã€ãã©ãªã«ãã£ãŠããã®ãããªè€éãªã·ã¹ãã ãæ¯èŒç容æã«éçºããããšãå¯èœã«ãªããŸãã
5. Ruby on Rails: Rubyã䜿çšãããŠã§ãéçºå ¥é
5.1 Ruby on Railsã®æŠèŠ
Ruby on Railsããã°ãã°ãRailsããšåŒã°ãããã¯Rubyããã°ã©ãã³ã°èšèªãããŒã¹ã«ãããŠã§ãã¢ããªã±ãŒã·ã§ã³ãã¬ãŒã ã¯ãŒã¯ã§ãããã®ãã¬ãŒã ã¯ãŒã¯ã¯ãéçºè ãããŒã¿ããŒã¹ããã¯ãšã³ãã®ããè€éãªWebã¢ããªã±ãŒã·ã§ã³ãè¿ éã«éçºããããšãå¯èœã«ããŸããRailsã®å²åŠã«ã¯ãConvention over ConfigurationïŒèšå®ããèŠçŽïŒãããDon’t Repeat YourselfïŒDRYãéè€ãé¿ããïŒãããããéçºããã»ã¹ãåçåãçç£æ§ãé«ããããšãç®çãšããŠããŸãã
Railsã®ç¹åŸŽã®äžã€ã«ãããžã§ã ããšåŒã°ããã©ã€ãã©ãªã®è±å¯ãªãšã³ã·ã¹ãã ããããŸããããã«ãããèªèšŒããã¡ã€ã«ã¢ããããŒãã管çè ã€ã³ã¿ãŒãã§ãŒã¹ãªã©ã®æ©èœã容æã«è¿œå ããããšãå¯èœã§ãããŸããRailsã¯RESTfulã¢ãããŒããæ¡çšããŠããããŠã§ãã¢ããªã±ãŒã·ã§ã³ã®ãªãœãŒã¹ãç°¡æœã§ç解ããããæ¹æ³ã§æ±ãããšãã§ããŸãã
å€ãã®æåãªãŠã§ããµã€ãã¯Railsã§æ§ç¯ãããŠããŸãããã®ã¢ãžã£ã€ã«ãªæ§è³ªãšæ±çšæ§ã«ãããã¹ã¿ãŒãã¢ãããã倧äŒæ¥ãŸã§å¹ åºãæ¡çšãããŠããã®ã§ãã
5.2 ã¢ãã«ã»ãã¥ãŒã»ã³ã³ãããŒã©ãŒ(MVC)ã¢ãŒããã¯ãã£
ã¢ãã«ã»ãã¥ãŒã»ã³ã³ãããŒã©ãŒïŒMVCïŒã¯ãã¢ããªã±ãŒã·ã§ã³ãäžã€ã®çžäºæ¥ç¶ãããéšåã«åå²ããèšèšã®ååã§ããRuby on Railsã§ã¯ããã®ã¢ãŒããã¯ãã£æ奜家ã®ããã«éçºãããŠããŸããã¢ãã«ã¯ããŒã¿ããŒã¹ãšã®ã€ã³ã¿ãŒãã§ãŒã¹ã§ãããããžãã¹ããžãã¯ãæ åœããŸããäžæ¹ããã¥ãŒã¯ãŠãŒã¶ãŒã€ã³ã¿ãŒãã§ãŒã¹ã圢æããã³ã³ãããŒã©ãŒã¯ã¢ããªã±ãŒã·ã§ã³ã®æµãã管çããã¢ãã«ãšãã¥ãŒã®æ©æž¡ããããŸãã
Railsã§ã®MVCå®è£ ã¯ãéçºè ãåéšåãåå¥ã«éäžããŠäœæ¥ã§ããããšãæå³ããŸããäŸãã°ããã¶ã€ããŒã¯ãã¥ãŒã®å¶äœã«å°å¿µã§ããããŒã¿ã¢ããªã³ã°ã«éäžãããéçºè ã¯ã¢ãã«äžã§äœæ¥ãè¡ããŸããããã¯å€§èŠæš¡ãªéçºããŒã ã§ç¹ã«æçãªæ¹æ³ã§ãã
MVCãã¿ãŒã³ã¯ãã®åå©çšæ§ãšè²¬ä»»ã®åå²ã«ãããã¢ããªã±ãŒã·ã§ã³ã®å€æŽãæ¡åŒµã容æã«ããŸããããããRuby on Railsãè¿ éã§ç¶æ管çãããããéçºãå¯èœã«ããèŠå ã®äžã€ã§ãã
5.3 Railsãããžã§ã¯ãã®ã»ããã¢ãã
Railsãããžã§ã¯ããéå§ããããã«ã¯ãRubyèšèªãšRailsã®ãã¬ãŒã ã¯ãŒã¯ãã€ã³ã¹ããŒã«ãããŠããç°å¢ãå¿ èŠã§ããæåã®ã¹ãããã¯ãRailsã¢ããªã±ãŒã·ã§ã³ã®ã¹ã±ã«ãã³ãäœæããããšããå§ãŸããŸããããã¯ãã¿ãŒããã«ã§ ‘rails new myapp’ ã®ãããªã³ãã³ããå®è¡ããããšã§è¡ãããšãã§ããŸãã
ãã®ã³ãã³ããå®è¡ãããšãRailsã¯å¿ èŠãªãã¡ã€ã«ãšãã£ã¬ã¯ããªæ§é ãèªåçã«çæããŸãããã®æç¹ã§ãéçºãµãŒããŒãèµ·åããã¢ããªã±ãŒã·ã§ã³ãæ£ããåäœããããšã確èªããããšãã§ããŸããRailsãæäŸããããã©ã«ãã®ããŒãžããã©ãŠã¶ã§è¡šç€ºã§ããããã«ãªããšãéçºã®æºåãæŽã£ããšèšããã§ãããã
ãã®ãããžã§ã¯ããã»ããã¢ããããéçšã¯çµ±åãããŠãããéçºè ãæè¡çãªæºåã«è²»ããæéãæå°éã«æããããšãã§ããŸããå®éã«ã¯ãRailsãããžã§ã¯ããå§ããããã«ã¯äœæéããããããšããªããæ°åã§å®äºããããšãå€ãã®ã§ãã
5.4 ç°¡åãªã¢ããªã±ãŒã·ã§ã³éçºãã¥ãŒããªã¢ã«
Ruby on Railsã§ã®ã¢ããªã±ãŒã·ã§ã³éçºã¯ã倧ãŸãã«ä»¥äžã®ã¹ãããã«åããããŸãïŒã¹ãã£ãã©ãŒã«ãã£ã³ã°ã®çæãã«ãŒãã£ã³ã°ã®èšå®ãããŒã¿ããŒã¹ã®ãã€ã°ã¬ãŒã·ã§ã³ããã¥ãŒã®äœæãã¢ãã«ã®æ§ç¯ããããŠã³ã³ãããŒã©ãŒã®ã¢ã¯ã·ã§ã³ã®å®çŸ©ã§ãã
ã¹ãã£ãã©ãŒã«ãã£ã³ã°ãšã¯ãRailsãæäŸããã³ãã³ããå©çšããŠãããŒã¿ããŒã¹ã®ããŒãã«ã«åºã¥ãåºæ¬çãªCRUDïŒäœæãèªã¿åããæŽæ°ãåé€ïŒæäœãåããã¢ããªã±ãŒã·ã§ã³ã®æ§ç¯ãèªååããæ©èœã®ããšã§ãããã®ããã»ã¹ãéããŠãéçºè ã¯ã¢ããªã±ãŒã·ã§ã³ã®åºæ¬çãªåœ¢ãè¿ éã«å®çŸã§ããŸãã
åå¿è ã¯ããã®ã¹ãã£ãã©ãŒã«ãã£ã³ã°æ©èœã«ãã£ãŠãããŒã¿ã¢ããªã³ã°ããã©ãŒã ã®äœæãªã©ã®è€éãªããã»ã¹ãæ·±ãç解ããããšãªããRailsã®åºæ¬ã段éçã«ç¿åŸã§ããŸãããã®ãã¥ãŒããªã¢ã«ãçµããããã«ã¯ãRailsã§ã®ã¢ããªã±ãŒã·ã§ã³éçºã«å¿ èŠãªåºç€ç¥èãåŸãããšãã§ããã§ãããã
6. Rubyã®å®çšäŸ: ã¹ã¯ãªãããšèªåå
Rubyã¯å€ãã®éçºè ã«ãšã£ãŠåŒ·åãªããŒã«ãšããŠç¥ãããŠããŸããã¹ã¯ãªããèšèªãšããŠã®æè»æ§ãšäœ¿ããããã掻ããããã¡ã€ã«ã®æäœãããŒã¿ã®è§£æãWebã¹ã¯ã¬ã€ãã³ã°ãæ§ã ãªã¿ã¹ã¯ã®èªååãªã©ãå¹ åºãåéã§ãã®åãçºæ®ããŸãããã®èšäºã§ã¯ãRubyã䜿ã£ãå ·äœçãªå®çšäŸãç°¡åã«çŽ¹ä»ããŸãã
6.1 ãã¡ã€ã«æäœã¹ã¯ãªããã®äœæ
Rubyã¯ãã¡ã€ã«ãæ±ãéã®åŒ·åãªãµããŒããæäŸããŸããéçºè ã¯ç°¡åãªã³ãŒããæ°è¡æžãã ãã§ããã¡ã€ã«ãçæãèªã¿èŸŒã¿ãç·šéããããŠåé€ã§ããŸãããŸãããã£ã¬ã¯ããªæäœãRubyã®ãã«ãã€ã³ã¯ã©ã¹ã䜿ã£ãŠéåžžã«ã·ã³ãã«ã«è¡ããã®ã§ãã
ããšãã°File
ã¯ã©ã¹ãå©çšãããšããã¡ã€ã«ããªãŒãã³ããŠç¹å®ã®ããŒã¿ãæžã蟌ã¿ãããã€ãã®æäœãè¡ãããšãã§ããŸããããã¯ãã°ãã¡ã€ã«ãäœæããããèšå®ãã¡ã€ã«ãæŽæ°ããã¹ã¯ãªããã«ãšã£ãŠéèŠãªæ©èœã§ãã
ãã¡ã€ã«ã®å ¥åºåã¯ããã°ã©ãã³ã°ã«ãããŠåºæ¬çãªã¹ãã«ã§ãããRubyã¯ãããç°¡åã§ç解ããããæ¹æ³ã§æäŸããŠããã®ã§ããåå¿è ã§ãRubyã®æçãªæ§æã«åŸã£ãŠå¹ççãªãã¡ã€ã«æäœã¹ã¯ãªãããäœæå¯èœã§ãã
6.2 ããŒã¿ã®è§£æãšåŠç
Rubyã¯ããŒã¿è§£æã®ããã®çŽ æŽãããèšèªã§ããCSVãJSONãXMLãšãã£ãæ§ã ãªããŒã¿ãã©ãŒããããæ±ãã©ã€ãã©ãªãå å®ããŠãããããŒã¿ã®ã€ã³ããŒãããšã¯ã¹ããŒããå€æãã¹ã ãŒãºã«ã§ããŸããããã«ãããè€éãªããŒã¿ã»ãããå¹æçã«åŠçããããšãå¯èœã«ãªãã®ã§ãã
CSV.parse
ãJSON.parse
ã®ãããªã¡ãœãããçšããã°ãããã¹ãããŒã¿ãRubyã®ããŒã¿æ§é ã«ç°¡åã«å€æã§ããŸãããããŠãRubyã®åŒ·åãªã€ãã¬ãŒã·ã§ã³ãæ¡ä»¶åå²ã®ã¡ãœããã䜿ãããŒã¿ãåæããå¿
èŠãªæ
å ±ãæœåºããããšãã§ããŸãã
ããã«ãEnumerable
ã¢ãžã¥ãŒã«ã«å«ãŸããã¡ãœãã矀ã¯ãããŒã¿ã®éèšãæ€çŽ¢ããœãŒããšãã£ãæäœãæå©ãããŸãããããã®æ©èœã¯ããžãã¹ãç 究ã§ã®ããŒã¿ã®è§£æã«ãããŠã匷åãªã¢ã»ãããšãªãã§ãããã
6.3 Webãµã€ãã®ã¹ã¯ã¬ã€ãã³ã°
Webã¹ã¯ã¬ã€ãã³ã°ã¯ãWebããæ
å ±ãèªåçã«åéããææ³ã§ããRubyã¯Nokogiri
ãWatir
ãšãã£ã匷åãªã¹ã¯ã¬ã€ãã³ã°ã©ã€ãã©ãªãæã¡ãä»ã®ããã°ã©ãã³ã°èšèªãšæ¯ã¹ãŠã容æã«ãã®ãããªã¿ã¹ã¯ãããªããŸãã
Nokogiri
ã䜿çšããã°ãHTMLãXMLã®ããã¥ã¡ã³ããããŒã¹ããç¹å®ã®æ
å ±ãååŸããããšãå¯èœã§ããããã¯æ
å ±åéãã³ã³ãã³ã管çã·ã¹ãã ãããŒã¿ãã€ãã³ã°ãªã©æ§ã
ãªå Žé¢ã§æçšã§ãã
ã¹ã¯ã¬ã€ãã³ã°ã¹ã¯ãªããã¯ãå®æçã«Webãµã€ãã®æŽæ°æ å ±ããã§ãã¯ãããããªã³ã©ã€ã³ã®äŸ¡æ Œæ¯èŒãèªååãããããããã«äœ¿çšãããŸãããã ããå©çšããéã«ã¯å¯Ÿè±¡Webãµã€ãã®å©çšèŠçŽãèäœæš©ã«æ³šæããåæ³çã«æäœãè¡ãå¿ èŠããããŸãã
6.4 ã¿ã¹ã¯èªååã®ããã®Rubyã¹ã¯ãªãã
Rubyã®ç䟡ã¯ãç¹°ãè¿ãè¡ãéå±ãªã¿ã¹ã¯ãèªååããèœåã«ãããŸããäŸãã°ãããã¯ã¢ããã¹ã¯ãªããããã¹ãã¹ã¯ãªããããããã€ã¡ã³ãã¹ã¯ãªãããªã©ã¯ãRubyãçšããããšã§å¹ççã«äœæã§ããŸãã
Rubyã®Rake
ããŒã«ã䜿çšãããšãè€éãªãã«ãããã»ã¹ããããã€ã¡ã³ãã¿ã¹ã¯ãèªååããã¹ã¯ãªãããç°¡åã«èšè¿°ã§ããŸãããããã®ã¹ã¯ãªããã¯ãæéãçµã€ã«ã€ããŠéçºããã»ã¹ã®éèŠãªéšåãšãªãã§ãããã
ç¶ç¶çã€ã³ãã°ã¬ãŒã·ã§ã³(CI)ãç¶ç¶çããªããªãŒ(CD)ã®ãããªã¢ãžã£ã€ã«éçºææ³ãæ®åããã«ã€ããRubyã¹ã¯ãªããã«ããèªååã¯ããéèŠæ§ãå¢ããŠããŸããã¯ãªãšã€ãã£ããªè§£æ±ºçãæäŸããRubyããéçºè ã®æéãç¯çŽããçç£æ§ãé«ããäžå©ãšãªãããšã¯ééããããŸããã