1. ã¯ããã«: Rubyãšã¯?
Rubyã¯ãå€ãã®ããã°ã©ããŒãéçºè ã«æãããŠããããã°ã©ãã³ã°èšèªã®äžã€ã§ãããã®é åãç¹åŸŽããããŠã©ã®ãããªå Žé¢ã§å©çšãããŠããã®ããããã®ã»ã¯ã·ã§ã³ã§è©³ãã解説ããŸãã
1.1 Rubyã®æŽå²ãšç¹åŸŽ
Rubyã¯ã1995幎ã«æ¥æ¬ã®ããã°ã©ããŒã§ãããŸã€ããšããã²ãæ°ã«ãã£ãŠéçºãããŸããã圌ã®ç®çã¯ã人éãããããã°ã©ãã³ã°èšèªãäœãããšã§ããããã®çµæãRubyã¯éåžžã«çŽæçã§èªã¿ãããã³ãŒããæã€èšèªãšããŠèªçããŸããã
Rubyã®æ倧ã®ç¹åŸŽã¯ããªããžã§ã¯ãæåã®ã¹ã¯ãªããèšèªã§ããããšã§ããããã«ãããRubyã¯æè»æ§ãé«ããç°¡æœã§çŸããã³ãŒããæžãããšãã§ããŸãããŸããRubyã¯åçåä»ããæ¡çšããŠãããå€æ°ã®åã宣èšããå¿ èŠããããŸãããããã«ãããéçºè ã¯ããè¿ éã«ã³ãŒããæžãããšãã§ããŸãã
1.2 Rubyã®äººæ°ãšçšé
Rubyã¯ããã®èªçããçŸåšã«ãããŠãå€ãã®éçºè ããæ¯æãåããŠããŸããç¹ã«ãRuby on RailsãšããWebã¢ããªã±ãŒã·ã§ã³ãã¬ãŒã ã¯ãŒã¯ã®ç»å Žã«ãããRubyã®äººæ°ã¯ããã«é«ãŸããŸããã
Rubyã¯ãWEBãµãŒãã¹ã®éçºãã¯ãããæ§ã ãªçšéã§å©çšãããŠããŸããäŸãã°ãSNSãµãŒãã¹ããããã³ã°ãµãŒãã¹ãåç»ãé³æ¥œã®é ä¿¡ãµãŒãã¹ãªã©ãå€å²ã«ãããã¢ããªã±ãŒã·ã§ã³ãRubyã§éçºãããŠããŸãããŸããRubyã¯ãªãŒãã³ãœãŒã¹ã§ãããããäžçäžã®éçºè ããã®éçºã«è²¢ç®ããŠãããè±å¯ãªã©ã€ãã©ãªãããŒã«ãæäŸãããŠããŸãã
ãã®ãããªèæ¯ãããRubyã¯åå¿è ããããã®éçºè ãŸã§ãå¹ åºãå±€ã«æ¯æãããŠããèšèªãšãªã£ãŠããŸãã
2. Rubyã®åºæ¬ææ³
ããã°ã©ãã³ã°èšèªãåŠã¶éããã®èšèªåºæã®ææ³ãç解ããããšã¯éåžžã«éèŠã§ããRubyãäŸå€ã§ã¯ãããŸããããã®ã»ã¯ã·ã§ã³ã§ã¯ãRubyã®åºæ¬çãªææ³ã«ã€ããŠè©³ãã解説ããŸãã
2.1 “Hello World”ã®åºåæ¹æ³
Rubyã§æãåºæ¬çãªããã°ã©ã ãšããŠã”Hello World”ãåºåããæ¹æ³ãåŠã³ãŸããRubyã§ã¯ãputsã¡ãœããã䜿çšããŠãæååãã³ã³ãœãŒã«ã«åºåããããšãã§ããŸããå ·äœçã«ã¯ã以äžã®ããã«èšè¿°ããŸãã
puts "Hello World"
ãã®ã³ãŒããå®è¡ãããšãã³ã³ãœãŒã«ã«”Hello World”ãšè¡šç€ºãããŸãã
2.2 å€æ°ãšããŒã¿å
Rubyã«ãããå€æ°ã¯ãããŒã¿ãäžæçã«ä¿åããããã®ãã®ã§ããå€æ°ã«ã¯æ§ã ãªããŒã¿åãæ ŒçŽããããšãã§ããŸãã
2.2.1 æåå
æååã¯ãäžé£ã®æåãè¡šãããŒã¿åã§ããRubyã§ã¯ãããã«ã¯ã©ãŒã(“)ãŸãã¯ã·ã³ã°ã«ã¯ã©ãŒã(‘)ã§å²ãããšã§ãæååãå®çŸ©ããããšãã§ããŸãã
name = "Ruby" message = 'Hello, Ruby!'
2.2.2 æ°å€
æ°å€ã¯ãæŽæ°ãæµ®åå°æ°ç¹æ°ãè¡šãããŒã¿åã§ããRubyã§ã¯ãç¹å¥ãªå®£èšãªãã«æ°å€ãå€æ°ã«ä»£å ¥ããããšãã§ããŸãã
age = 25 height = 170.5
2.2.3 é åãšããã·ã¥
é åã¯ãè€æ°ã®ããŒã¿ãé åºä»ããŠä¿åããããã®ããŒã¿åã§ããããã·ã¥ã¯ãããŒãšå€ã®ãã¢ãä¿åããããŒã¿åã§ãã
fruits = ["apple", "banana", "cherry"] person = {"name" => "John", "age" => 30}
2.3 æŒç®åãšãã®äœ¿çšæ¹æ³
Rubyã«ã¯ãæ°å€ãæååãæäœããããã®æ§ã ãªæŒç®åããããŸããäŸãã°ãå ç®ãæžç®ãä¹ç®ãé€ç®ãªã©ã®åºæ¬çãªç®è¡æŒç®åããããŸãããŸããæååã®çµåãæ¯èŒãè¡ãããã®æŒç®åãæäŸãããŠããŸãã
2.4 æ¡ä»¶åå²ãšã«ãŒã
ããã°ã©ã ã®æµããå¶åŸ¡ããããã«ãæ¡ä»¶åå²ãã«ãŒãã䜿çšããããšãã§ããŸããæ¡ä»¶åå²ã«ã¯ifæãcaseæããã«ãŒãã«ã¯whileæãforæã䜿çšããŸãã
3. Rubyã§ã®é¢æ°ãšã¡ãœãã
é¢æ°ãšã¡ãœããã¯ãããã°ã©ãã³ã°ã«ãããŠéåžžã«éèŠãªæŠå¿µã§ããRubyã§ã¯ããããã®æŠå¿µã䜿ã£ãŠã³ãŒããããå¹ççã«ããããŠæŽçããã圢ã§æžãããšãã§ããŸãããã®ã»ã¯ã·ã§ã³ã§ã¯ãRubyã«ãããé¢æ°ãšã¡ãœããã®åºæ¬ã«ã€ããŠè©³ãã解説ããŸãã
3.1 é¢æ°ã®å®çŸ©ãšåŒã³åºã
Rubyã§ã¯ãdefããŒã¯ãŒãã䜿çšããŠé¢æ°ãå®çŸ©ããŸããé¢æ°ã¯ãç¹å®ã®åŠçããŸãšããŠååãã€ããããšãã§ããæ©èœã§ããé¢æ°ãå®çŸ©ããåŸããã®ååã䜿ã£ãŠé¢æ°ãåŒã³åºãããšãã§ããŸãã
def greet puts "Hello, Ruby!" end greet()
äžèšã®ã³ãŒãã§ã¯ãgreetãšããååã®é¢æ°ãå®çŸ©ãããã®åŸã§é¢æ°ãåŒã³åºããŠããŸãã
3.2 ã¡ãœããã®åºæ¬
ã¡ãœããã¯ããªããžã§ã¯ãã«å±ããé¢æ°ã®ããšãæããŸããRubyã¯ãªããžã§ã¯ãæåã®èšèªã§ãããããã¡ãœããã¯éåžžã«éèŠãªæŠå¿µãšãªã£ãŠããŸããã¡ãœããã¯ãç¹å®ã®ãªããžã§ã¯ãã«é¢é£ããåŠçããŸãšããããã«äœ¿çšãããŸãã
class Person def introduce puts "Hello, I am a person." end end person = Person.new person.introduce
äžèšã®ã³ãŒãã§ã¯ãPersonãšããã¯ã©ã¹ã«introduceãšããã¡ãœãããå®çŸ©ããŠããŸãã
3.3 ãããã¯ãšã€ãã¬ãŒã¿
Rubyã«ã¯ããããã¯ãšãã匷åãªæ©èœããããŸãããããã¯ã¯ãäžé£ã®ã³ãŒãããŸãšããŠãã¡ãœããã«æž¡ãããšãã§ããæ©èœã§ããã€ãã¬ãŒã¿ã¯ããããã¯ã䜿ã£ãŠç¹°ãè¿ãåŠçãè¡ãã¡ãœããã®ããšãæããŸãã
numbers = [1, 2, 3, 4, 5] numbers.each do |number| puts number end
äžèšã®ã³ãŒãã§ã¯ãeachã¡ãœããã䜿çšããŠãé åã®åèŠçŽ ãé çªã«åºåããŠããŸãã
4. ãªããžã§ã¯ãæåã®åºç€
ãªããžã§ã¯ãæåã¯ãçŸä»£ã®ããã°ã©ãã³ã°ã«ãããŠäžå¿çãªåœ¹å²ãæãããŠããŸããRubyããªããžã§ã¯ãæåã®èšèªã§ããããã®èãæ¹ãç解ããããšã¯Rubyã®æ·±ãç解ã«ç¹ãããŸãããã®ã»ã¯ã·ã§ã³ã§ã¯ããªããžã§ã¯ãæåã®åºæ¬çãªæŠå¿µã«ã€ããŠè©³ãã解説ããŸãã
4.1 ã¯ã©ã¹ãšãªããžã§ã¯ã
ã¯ã©ã¹ã¯ããªããžã§ã¯ãã®èšèšå³ã®ãããªãã®ã§ããå ·äœçãªããŒã¿ãæ¯ãèããæããªããæœè±¡çãªååšãšããŠå®çŸ©ãããŸããäžæ¹ããªããžã§ã¯ãã¯ãã¯ã©ã¹ãå ã«çæãããå ·äœçãªååšã§ãããªããžã§ã¯ãã¯ãããŒã¿ãšãã®ããŒã¿ã«é¢é£ããæ¯ãèããæã¡ãŸãã
class Car def drive puts "Driving the car." end end my_car = Car.new my_car.drive
äžèšã®ã³ãŒãã§ã¯ãCarãšããã¯ã©ã¹ãå®çŸ©ãããã®ã¯ã©ã¹ãããªããžã§ã¯ããçæããŠããŸãã
4.2 ç¶æ¿ãšããªã¢ãŒãã£ãºã
ç¶æ¿ã¯ãããã¯ã©ã¹ã®ç¹æ§ãå¥ã®ã¯ã©ã¹ãåãç¶ãããšãæããŸããããã«ãããã³ãŒãã®åå©çšæ§ãåäžããŸããããªã¢ãŒãã£ãºã ã¯ãç°ãªãã¯ã©ã¹ã®ãªããžã§ã¯ããåãã€ã³ã¿ãŒãã§ãŒã¹ãæã€ããšãæããŸãã
class Vehicle def move puts "Moving the vehicle." end end class Bike < Vehicle def move puts "Riding the bike." end end vehicle = Vehicle.new bike = Bike.new vehicle.move bike.move
äžèšã®ã³ãŒãã§ã¯ãVehicleã¯ã©ã¹ãç¶æ¿ããBikeã¯ã©ã¹ãå®çŸ©ããŠããŸãã
4.3 ã¢ãžã¥ãŒã«ãšããã¯ã¹ã€ã³
ã¢ãžã¥ãŒã«ã¯ãé¢é£ããã¡ãœãããå®æ°ããŸãšããããã®ä»çµã¿ã§ããã¢ãžã¥ãŒã«ã¯ã€ã³ã¹ã¿ã³ã¹åã§ããªããããçŽæ¥ãªããžã§ã¯ããçæããããšã¯ã§ããŸãããããããããã¯ã¹ã€ã³ã䜿çšããŠãã¢ãžã¥ãŒã«ã®ã¡ãœãããã¯ã©ã¹ã«åã蟌ãããšãã§ããŸãã
module Drive def drive puts "Driving." end end class Car include Drive end car = Car.new car.drive
äžèšã®ã³ãŒãã§ã¯ãDriveã¢ãžã¥ãŒã«ãå®çŸ©ãããã®ã¢ãžã¥ãŒã«ãCarã¯ã©ã¹ã«ããã¯ã¹ã€ã³ããŠããŸãã
5. Rubyã®ã©ã€ãã©ãªãšãã¬ãŒã ã¯ãŒã¯
Rubyã¯ããã®æè»æ§ãšæ¡åŒµæ§ã®é«ããããå€ãã®ã©ã€ãã©ãªããã¬ãŒã ã¯ãŒã¯ãéçºãããŠããŸãããããã®ããŒã«ã䜿çšããããšã§ãéçºã®å¹çãå質ãå€§å¹ ã«åäžãããããšãã§ããŸãããã®ã»ã¯ã·ã§ã³ã§ã¯ãRubyã®äž»èŠãªã©ã€ãã©ãªããã¬ãŒã ã¯ãŒã¯ã«ã€ããŠè©³ãã解説ããŸãã
5.1 RubyGemsãšã¯?
RubyGemsã¯ãRubyã®ã©ã€ãã©ãªãã¢ããªã±ãŒã·ã§ã³ã管çã»é åžããããã®ããã±ãŒãžç®¡çã·ã¹ãã ã§ããRubyGemsã䜿çšããããšã§ãå¿ èŠãªã©ã€ãã©ãªãããŒã«ãç°¡åã«ã€ã³ã¹ããŒã«ããããèªåãéçºããã©ã€ãã©ãªãå ¬éããããšãã§ããŸãã
gem install [ã©ã€ãã©ãªå]
äžèšã®ã³ãã³ãã䜿çšããããšã§ãæå®ããã©ã€ãã©ãªãã€ã³ã¹ããŒã«ããããšãã§ããŸãã
5.2 人æ°ã®Rubyã©ã€ãã©ãª
Rubyã«ã¯ãæ§ã ãªçšéã«åãããå€ãã®ã©ã€ãã©ãªãååšããŸãã以äžã¯ãç¹ã«äººæ°ã®ããããã€ãã®ã©ã€ãã©ãªã玹ä»ããŸãã
Deviseã¯ããŠãŒã¶ãŒèªèšŒæ©èœãç°¡åã«å®è£ ããããã®ã©ã€ãã©ãªã§ããNokogiriã¯ãXMLãHTMLã®è§£æãè¡ãããã®ã©ã€ãã©ãªã§ããRSpecã¯ãRubyã®ãã¹ããæžãããã®ã©ã€ãã©ãªã§ãã
5.3 Ruby on Railsã®çŽ¹ä»
Ruby on Railsãéåžžã¯RailsãšåŒã°ããããšãå€ããã¯Rubyã§æžããããªãŒãã³ãœãŒã¹ã®Webã¢ããªã±ãŒã·ã§ã³ãã¬ãŒã ã¯ãŒã¯ã§ããRailsã¯ãMVCïŒModel-View-ControllerïŒã¢ãŒããã¯ãã£ãæ¡çšããŠãããããŒã¿ããŒã¹ã®æäœãWebããŒãžã®è¡šç€ºãªã©ãWebã¢ããªã±ãŒã·ã§ã³ã®éçºãå¹ççã«è¡ãããã®å€ãã®æ©èœãæäŸããŠããŸãã
Railsã䜿çšããããšã§ãçæéã§é«å質ãªWebã¢ããªã±ãŒã·ã§ã³ãéçºããããšãå¯èœãšãªããŸãããŸããRailsã¯ãConvention over Configurationããšããå²åŠãæã£ãŠãããéçºè ãå€ãã®èšå®ãè¡ãå¿ èŠããªããããéçºãè¿ éã«é²ããããŸãã
6. ãŸãšããšæ¬¡ã®ã¹ããã
ãã®èšäºãéããŠãRubyã®åºæ¬ããå¿çšçãªå 容ãããã«ã¯ã©ã€ãã©ãªããã¬ãŒã ã¯ãŒã¯ã«ã€ããŠåŠã¶ããšãã§ããŸãããããããããã¯Rubyã®äžçã®å ¥ãå£ã«éããŸããã次ã®ã¹ããããšããŠãã©ã®ããã«æ·±ãåŠã³ãã³ãã¥ããã£ã«åå ããããèããããšãéèŠã§ãã
6.1 Rubyã®åŠã³æ¹ãšãªãœãŒã¹
Rubyãããæ·±ãåŠã¶ããã«ã¯ãå®éã«æãåãããŠããã°ã©ã ãæžãããšãæãå¹æçã§ãããªã³ã©ã€ã³ã«ã¯å€ãã®ãã¥ãŒããªã¢ã«ãããã¥ã¡ã³ããå ¬éãããŠãããããããåèã«ããªããåŠç¿ãé²ããããšãã§ããŸãã
Rubyå ¬åŒããã¥ã¡ã³ãã¯ãRubyã®å šãŠã®æ©èœãã¡ãœããã«ã€ããŠè©³ãã解説ããŠãããããéåžžã«åœ¹ç«ã€ãªãœãŒã¹ãšãªããŸãããŸããRuby KoansãCodecademyã®Rubyã³ãŒã¹ãªã©ãåå¿è åãã®åŠç¿ãªãœãŒã¹ãè±å¯ã«ååšããŸãã
6.2 Rubyã³ãã¥ããã£ãšåå æ¹æ³
Rubyã®ã³ãã¥ããã£ã¯ãäžçäžã«åºãã£ãŠãããéåžžã«æŽ»çºã§ãããã®ã³ãã¥ããã£ã«åå ããããšã§ãææ°ã®æ å ±ãæè¡ãåŠã¶ã ãã§ãªããçµéšè±å¯ãªéçºè ãšã®äº€æµã®å Žãæã€ããšãã§ããŸãã
RubyConfãRailsConfã¯ãäžçäžããRubyistãéãŸã倧èŠæš¡ãªã«ã³ãã¡ã¬ã³ã¹ã§ãããããã®ã€ãã³ãã«åå ããããšã§ãææ°ã®æè¡ãã¬ã³ãããã¹ããã©ã¯ãã£ã¹ãåŠã¶ããšãã§ããŸãããŸããRuby MeetupãããŒã«ã«ãªå匷äŒãå€æ°éå¬ãããŠããã身è¿ãªå Žæã§ã®äº€æµã®æ©äŒãè±å¯ã§ãã
ã³ãã¥ããã£ã«åå ããããšã§ãæè¡çãªç¥èã ãã§ãªããæ°ããå人ãããžãã¹ã®æ©äŒãåŸãããšãå¯èœã§ããRubyã®äžçã¯åºå€§ã§ããŸã ãŸã åŠã¶ããšã¯å°œããŸãããç©æ¥µçã«ã³ãã¥ããã£ã«åå ããåŠã³ãæ·±ããŠãããŸãããã