dRubyConf 2012ãåæŠæ¥èš
ããã«ã¡ã¯ããRubyConfåå æ¯æŽäŒç»ããã°ã©ã ãã«æ¡æããŠããã ãããã³ããŒãŸã§è¡ã£ãŠããäºäžãšãããŸãã
ä»åã¯ç§ãã¢ã¡ãªã«ã®ã«ã³ãã¡ã¬ã³ã¹ã§çºè¡šãããŸã§ã®éã®ããšãdRubyã®äœè ã§ããé¢å°ä¿ããïŒä»¥äžãå³ãããïŒãšäžç·ã«èããŠããä»ã®ããŒã¯ã®æŠèŠã玹ä»ããŠãããããšæããŸãã
ã¡ãªã¿ã«ç§ãã¡ã¯dRubyã«é¢é£ãããããªäžŠåã䞊è¡ããã°ã©ãã³ã°ãããŒã¿ããŒã¹ã®ããŒã¯ãäžå¿ã«åå ããã®ã§ããã®ã«ã³ãã¡ã¬ã³ã¹ã¯ãdRubyConferenceããšããèŠç¹ã§èŠãŠãããŸãã
ïŒæïŒïŒæ¥ããã«æ¥æ¬Rubyã®äŒã®è§è°·ããããåå æ¯æŽäŒç»ããã°ã©ã ã®ããšãæããŠããã ããå³ãããšäžç·ã«å¿åããããšã«ããŸããã ã«ããã®èªè ã®ã¿ãªããã¯ãåç¥ãããããŸããããå³ããã¯2006幎ã«RubyKaigiãå§ãŸã£ãŠä»¥æ¥æ¯å¹Žã®ããã«ããŒã¯ããããŠããã話é¡ãè±å¯ã§ãã ãã®äžã§ãªã«ã«ãã©ãŒã«ã¹ããããè¿·ã£ãŠããã®ã§ãããç§ãä»å¹Žã®ïŒæã«London Ruby User Group (LRUG)ã§dRubyã«ã€ããŠè©±ããæã«ãdRubyã®åæããŒãžã§ã³ã®ã³ãŒãã¬ãã¥ãŒãããªããdRubyã®æ§é ã解説ããç®æãçµæ§å¥œè©ã§ããã
ããã§ä»åã¯å³ããçŽã ã«dRubyã®éçºç§è©±ã話ããŠããã ããšããæ¹åæ§ã§ããŒã¯ããããŒã¶ã«ãæžãããšã«ããŸããã
æåã®ããŒãžã§ã³ã¯ãThe dRuby Begins (Metaprogramming rises)ããšããã¿ã€ãã«ã ã£ããšæããŸãã
ããããªããååã«ããŒã¯ããããŒã¶ã«ã®ã¬ãã¥ãŒããé¡ããããšããããã®ã¿ã€ãã«ã§ã¯è©±ã®äžèº«ã¯äœã§ãåå è ã¯ã©ããããããã£ãããåŸãããããããããªããããšã¿ã€ãã«ã¯ãã£ãšãã£ãããŒã§ã¡ãã£ãšããããå ¥ãããããããã ãšããææãåããŸãããããã§ç·ŽãçŽããã¿ã€ãã«ãããã§ãã
ãRails Is A Follower: what we can learn from dRubyâs metaprogramming magicã
Railsããã©ãã¯ãŒæ±ãããŠããŸãã®ã¯ããªã倧èãªã¿ã€ãã«ã ãšæããŸãããããã¯The dRuby Bookã®äžã§Matzã«æžããŠããã ããForewordã®äžããæåããŸããããããŠåæã«åå è ã¯ãã¡ã¿ããã°ã©ãã³ã°ã«ã€ããŠåŠã¹ãããšããç®çãæç€ºã§ããã®ã§ã¯ãªãããšæããŸãã
ïŒæïŒæ¥ã«åœéžã決ãŸã£ãŠããå®éã«äœãå§ãããèãã¯ããããšããããdRubyãéçºãããŸã§ã®æŽå²ã1990幎ããããã系統ç«ãŠãŠè©±ãããŠããã®ã¯ã©ããããšããæ¹åæ§ã«ã§å³ããã«ãã©ãããæžããŠããã ãããããç§ãè§è°·ããããã®ãã£ãŒãããã¯ãããšã«è²ã ä¿®æ£ããŠãããŸãããïŒäººã®åœ¹å²åæ ãšããŠã¯ãæåã®ã€ã³ãããšdRubyã®ãã¢ã¯ç§ãæ åœãããã®åŸã«dRubyãåºæ¥ããŸã§ã®å³ããã®ããã°ã©ãã³ã°ã¹ã¿ã€ã«ããããŠãã®ããã°ã©ãã³ã°ã¹ã¿ã€ã«ãžã®äžæºã解決ããããã«dRubyãèšèšããéã®ãã¶ã€ã³ããªã·ãŒãå®éã«å®è£ ããéã®ã¡ã¿ããã°ã©ãã³ã°ã®ãã¯ããã¯ã®æ°ã ãå³ããã«çŽæ¥è©±ããŠããã ãããšã«ããŸããã
倧äœã«ã³ãã¡ã¬ã³ã¹ã®å§ãŸãïŒé±éåãŸã§ã«å³ããã«è©±ãå 容ã®ã¹ã©ã€ããšå°è©ãå šéšæ¥æ¬èªã§æžããŠããã ãããã®åŸã§ç§ã翻蚳ããŸããããã¢ã®éšåã¯ã©ã€ãã§è¡ãã®ã«ã¯äžå®ããã£ãã®ã§ãäºåã«screenrãšãããµã€ãã§ãã¢ãããªãäœæããŠããã¬ãŒã³ããŒã·ã§ã³ããŒã«ã«åã蟌ã圢ã«ããŸããïŒç§éã®ãã¬ãŒã³ããŒã«ã¯Appleã®ããŒããŒãã ã£ãã®ã§ããããŸã€ããšãããç§ãã¡ã®ããŒã¯ãã芧ã«ãªã£ãéã«ããã®æ©èœRabbitã«ã欲ããããšæ¥æ¬ã«ããããšããããå©ãèµ·ãããŠæ¥éœå®è£ ãããŠããŸããïŒã
ãã®åŸã§äžåºŠå³ããã®ç®æãå«ããéšåã瀟å ã§ãªããŒãµã«ããåŸãååã®MarkïŒåœŒã¯ã€ã¡ãŒãžã¢ããããŒãã£ã³ã°gemã®DragonFlyã§ã¡ãã£ãšæåã§ãïŒã«ææ³ãçŽããŠããã£ãåŸãå³ããã®æ åœåæãå šãŠæèªããŠã¢ããé³å£°ãã¡ã€ã«ã«ããŠããããå³ããã«ãæž¡ãããŠãããŸãããããã§å³ãããã«ã³ãã¡ã¬ã³ã¹ãå§ãŸããŸã§ã«æµæ¢ãªQueen's Englishããã¹ã¿ãŒãããŠããã¯ãã§ãã
ã«ã³ãã¡ã¬ã³ã¹ã®å§ãŸãïŒæ¥åã®ïŒïŒæïŒïŒæ¥ã«ãã³ããŒå ¥ãããŸãããããã«ã«ã€ããšå³ãããæ¢ã«å°çããŠããããããã€ãããããã«æåŸã®æã¡åããã«åãããããŸããã
å³ããã¯ãç§ããæž¡ãããé³å£°ãã¡ã€ã«ãç¯ããšã«åçå¯èœãªåœ¢ã«æããäžã§äœåºŠãç·Žç¿ãããŠããããã§ãçºé³ãªã©ã¯ç¹ã«åé¡ãããŸããã§ããããã èŠåŽãããŠããã®ã¯æ¯ç¶ãã®ã¿ã€ãã³ã°ã§ãã
äŸãã°ä»¥äžã®äŸãèŠãŠã¿ãŸãããã
You also spend time trying to come up with cool urls, but thatâs not the core of your application.
Markã¯ããªããã£ãããã«è©±ããŠãããŠããã®ã§ãããããã§ãè±èªãæ¯åœèªã§ãªã人ã話ãã«ã¯é·éããŠãéäžã§ã€ãŸã£ãŠããŸããã¡ã§ããããšãthatâs not the | core of your | application.ããšãã£ãå€ãªäœçœ®ã§åºåã£ãŠããŸããšèãã¥ãããªã£ãŠããŸããŸãã
ããã§Markã®é³å£°ãã¡ã€ã«ãäžç·ã«èããªããã以äžã®èŠã«æ¯ç¶ãã®ã¿ã€ãã³ã°ãçŽã«èšå ¥ããŠãããŸããã
You also spend time | trying to come up with cool urls, | but thatâs not the core | of your application.
ããã§æºåãããããªã®ã¯ãã§ãã
ãã®æ¥ã®æ©ã¯Buppa Gumpãšããã¬ã¹ãã©ã³ã§ãšãæçãå ªèœãã€ã€äžèã®äºååµãããšåç察決ãããŸããã
ããããRubyConfãå§ãŸããŸãããèŠããã»ãã·ã§ã³ã¯ããã€ããã£ãã®ã§ããããã®äžã§ãç§ãã¡ã®ããŒã¯ã®ãã¿ãšããŠäœ¿ããããªãã®ãäžå¿ã«èŠãŠãããŸããã
Allow me to reintroduce myself. My name is MagLev. 11:30am - 12:15pm (45m)
Smalltalkã®ãªããžã§ã¯ãããŒã¿ããŒã¹ãRubyã§äœ¿ãããšã®åºæ¥ãMagLevã®ç޹ä»ã
Maglevã®å£²ãã¯ããŒã¿ãã³ãŒãããŸãšããŠãStoneããšããããŒã¿ããŒã¹ã«æ ŒçŽããåããŒãã£ã«ãã·ãŒã³ã¯ãã©ã³ã¶ã¯ã·ã§ã³ã䜿ã£ãŠä¿åã§ããã®ã売ãã§ãã
ãµã³ãã«ãã¡ã€ã«ã¯ãã®ãããªæãã§ãã
# VM #1
PROOT = Maglev::PERSISTENT_ROOT
pierre = Cat.new("Pierre")
pierre.object_id
# => 1234567
PROOT[:pierre] = pierre
Maglev.commit_transaction
ãã©ã³ã¶ã¯ã·ã§ã³ã®å§ãã¯æé»çã«è¡ãããŠãããcommit_transactionãæã£ãæç¹ã§Stoneã®æ¹ã«ä¿åããŸãã ãŸãMaglevã®è»éã¢ãŒããå€ããããšã§ãã©ã³ã¶ã¯ã·ã§ã³ã®ç¯å²ãRubyãããã¯ã®äžã§æç€ºçã«æå®ããããšãåºæ¥ãŸããããŸããtransientããšãããããã¯ã®äžã§ããã®éšåã¯Stoneã«ä¿åããLocal VMã®äžã ãã§æã£ãŠããããããšæå®ããã®ãæ¬æ°ã§ããã
Maglev.transient do
# Will only be persisted locally
# Won't be written to the stone
end
MagLevã¯ã©ããªããŒã¿æ§é ãæ±ããã®ã§ãªããžã§ã¯ãããŒã¿ããŒã¹ã®ããã«äœ¿ãããšãå¯èœã§ãã
ãŸãæ¯èŒãšããŠRedisã®Sorted Setã®äŸãæã¡åºããŠããŸãããRedisã¯å€ãã®ããŒã¿æ§é ãæã£ãŠããã®ã§ãããäŸãã°ã©ã³ãã³ã°ããŒããèšç®ãããæã«Sorted Setã䜿ããšããŸããããããªããSorted Setã¯äžã€ã®å€ã«å¯ŸããŠãããœãŒãã§ããªãã®ã§äŸãã°ããã€ã³ããåé äœã®å Žåã¯æ¥ä»ã§é äœæ±ºããã§ããªãããšããåé¡ãèµ·ããŠããŸãããã§ãïŒRDBMSã ãšorder by a, b, cãšè€æ°æå®å¯èœã§ããïŒã ãããã£ãéã«ããŒã¿ããŒã¹ã®æ©èœã«çžãããã®ã§ã¯ãªãçŽ çŽã«Rubyã§ã§ãããšèšã£ãŠããŸããã
ãã®ããŒã¯ãèããŠã¿ãŠã®ææ³ãå³ããã«èãããšããããMaglevã¯ãªããžã§ã¯ãããŒã¿ããŒã¹ãšããŠäœ¿ãã«ã¯è¯ããããããªãã忣åŠçã§åæããšãããã®æ©èœãšããŠã¯åããŠããªãã®ã§ã¯ããšã®ããšã§ããã ãã§ãéã«MaglevãdRubyã§åæ£åãããè¯ãããããªãïŒããšã®ããšãé¢çœãããšã«ç§ãã¡ã®dRubyã®ããŒã¯ã®åŸã«ãã®ããŒã¯ããã人ã話ããããŠããŠãå šãåãææ¡ãããŠããŸããã
Building Data Driven Products with Ruby 3:30pm - 4:15pm (45m)
ããŒã¿ãµã€ãšã³ãã£ã¹ãã«ããBig Dataã®æ±ãã«ã€ããŠã
å®ã¯ç§ã¯ããŸãéäžããŠèããŠããªãã£ãã®ã§ãããå³ããã¯é¢çœãã£ããšã®ããšãäœãé¢çœãã£ãã®ãèããŠã¿ããšãããHadoop Hadoopãšãå«ã°ããŠããããã©Big Dataã®ãã¡ã®ã»ãšãã©ã®ããŒã¿ã¯ãã€ãºãªã ãã§ãå®ã¯é©åãªãã£ã«ã¿ãªã³ã°ãããããšã§ååã«ããŒã¿ãµã€ãºãå°ããããããšãå¯èœãªãã ããããšã®ããšã§ããã以äžã®ãããªïŒè¡ã®ã³ãŒãã§ããã°ããŒã¿ãæãªãããããšãåºæ¥ãã®ã¯ããæå³ãã£ãŠããããç¥ããŸããã
STDIN.each do |line|
p puts line if line.match(/user_id=&/)
end
Dissecting a Ruby Block Pat Shaughnessy - 5:30pm (45m)
ããã¯ïŒïŒåéã²ãããRuby Blockã®å®è£ ã解説ãããšããããã¢ãã¯ãªãã®ã§ããïŒãããŠãã®ããŒã¯ã®äœè ã¯ãRubyã®ãœãŒã¹ã³ãŒããå匷ããããã«ïŒã¶æäŒç€ŸãäŒè·ããããã§ãïŒããªãBlockãdRubyãšé¢ä¿ãããã«ã€ããŠã§ãããdRubyã¯ãªããžã§ã¯ããä»ã®ããã»ã¹ã«æž¡ãéã«Marshal.dumpãè¡ããdumpãå¯èœãªãã®ã¯ãã®ãªããžã§ã¯ãã®å€ãã®ãã®ããããã§ãªãå Žåã¯ãã®ãªããžã§ã¯ãã®åç §å€ã®ã¿ãããããšããä»çµã¿ã«ãªã£ãŠããŸãããã®éã®Marshal.dumpãåºæ¥ãªããã®ã®çé ãšããŠBlockããããããã®ã§ããªããããã§ããªãããšããããšãçè§£ããæå³ã§éèŠãšã®ããšã§ããã
å®éã«ã¯blockã®äžèº«ãå®è¡ããéã«ã©ã®ããã«ã¹ã¿ãã¯ãããŒãã䜿ãããããšããã®ãäžå¯§ã«å³å ¥ãã§ç€ºããŠãããã®ã§ãããç§ã«ã¯ã¡ãã·ãããã·ãã ã£ãã®ã§ãããã«ã«æ»ã£ãŠããã«ïŒæéã»ã©å³ããã®ç¹å¥è¬çŸ©ãåããããšã«ãªããŸããã
ææ¥ã¯ããããçºè¡šã§ãããã®æç¹ã§ã¹ã©ã€ãã¯å®æããŠããã®ã§ããã忥ã®è²ã ãªããŒã¯ã«åºæ¿ããããããã€ããããã¯ã远å ããããšã«ããŸããããããŸã§ã®çºè¡šã§ç޹ä»ããdRubyã®äžèº«ã¯æ¯èŒçåããããããã®ã°ããã§ãããããããªãããã£ãšé£ãããããã¯ãå ããŠèŽè¡ã眮ããŠããŒãã«ããããªã£ãŠããŸããããšããã®ãããŒã¯ã®äžèº«ããã åãããããã ãã ãšãããããã£ãããšæºè¶³ããŠãããããå ããªãã£ããããŸãããããããããã¯é£ããããã²ãã£ãšèªåã§èª¿ã¹ãŠã¿ããããšæããããããã®ã»ããåºæ¿ããããšæã£ãããã§ãã
ãã ããã«ã¯ã²ãšã€åé¡ããããŸããããã®é«åºŠãªåé¡ãè±èªã§èª¬æããç§ãçè§£ããå¿ èŠããããšããããšã§ããïŒïŒæãããããå³ããã«èª¬æããŠããã£ãŠãã³ã³ã»ããã説æãããããªãã€ãã£ãããç§ãçè§£ãããŸã§å³ãããæ ¹æ°ãã説æãç¹°ãè¿ããŠãããã¡ã«å€äžã®ïŒæã«ãªã£ãŠããŸããã
æ©æã«ããäžåºŠç·Žç¿ãããåŸäŒå Žå ¥ãããŸããã仿¥ã¯ãConcurrency Dayããšããã¹ããã©ãã¯ïŒãïŒãšããéšå±ã®ãã©ãã¯ïŒã¯Concurrencyã«é¢ä¿ãããããã¯ã䞊ãã§ããŸããããã¡ããç§ãã¡ã®çºè¡šããã©ãã¯ïŒã ã£ãã®ã§ãæãããã£ãšãã®éšå±ã«åŒµãä»ããŠä»ã®çºè¡šãèããŠã¿ãŸããã
Asynchronous Processing for Fun and Profit 11:30am - 12:15pm (45m)
æè¿äººæ°æ¥äžæäžã®SideKickãšããããã¯ã°ã©ãŠã³ããžã§ãã©ã€ãã©ãªãŒã«ã€ããŠã®è¬æŒã§ãã
ãŸãã¯éåæããã°ã©ãã³ã°ãããããã®TipãšããŠStatelessãIdempotent (åªçæ§)ãEmbrace Concurrencyã®ïŒã€ããããŠããŸããã ãã®äžã§Resqueãªã©ã®ã©ã€ãã©ãªãŒãšæ¯èŒããäžã§SideKiqã®é«æ§èœãã¢ããŒã«ããŠããŸããïŒäž»ãªçç±ã¯Resqueã§ã¯ã¯ãŒã«ãŒããŒã¢ã³ãããã»ã¹ã§ç«ã¡äžããã®ã«æ¯ã¹ãSidekiqã§ã¯ã¹ã¬ãããå©çšããŠããåã¡ã¢ãªãé£ããªããšã®ããšã§ããïŒããããŠåºæ¬çãªæ©èœã¯LGPLã§ããªãŒã§ãããä»ã®é«åºŠãªæ©èœããµããŒããµãŒãã¹ãæåã§åããŠããããã§ãã
å³ããã«æèŠã䌺ã£ããšãããdRubyã§ãåãã®å®è£ å¯èœããšã®ããšã ã£ãã®ã§ãdRubyã®æåãµããŒãããé¡ãããŸãããšãé¡ãããŠãããŸããã
泚ïŒRubyConfã®ããšã§Nokogiriçã§æåãªAaron PattersonãããããResqueã¯æ¬¡ã®ãªãªãŒã¹ã§ã¹ã¬ããããµããŒããããããšã®ããšã§ãããããããå床ãã³ãããŒã¯ãèŠãå¿ èŠãããããã§ãã
DRb vs RabbitMQ Showdown 1:30pm - 2:15pm (45m)
ãDRb vs Eventmachine Showdownãããšããã®ãããšããšã®ã¿ã€ãã«ã ã£ãã®ã§ãããããŒã¯ããããŒã¶ã«ãåºããåŸã«äºå®ãå€ãã£ãããã§ãã ãã®ããŒã¯ãå§ãŸããŸã§ã¯ãããã絶察ãªãã§DRbããEventMachineã«ç§»è¡ããããã¡ã€ã³ã®ããŒãã§ãDRbã¯ãã®ãããDisããããã ãããªããšå³ãããšãã©ãã³ãã³ãããŠããŸããã
ããããªãããã®ããŒã¯ã®çºè¡šè ã®Davyããã¯ãšã£ãŠãè¯ã人ã§ãã䜿ãã®ã¯é©æé©æãdRubyã ãšæ¥ç¶å ã®ã¢ãã¬ã¹ãæå®ããªããã°ãããªãããã©ãè€æ°ã®ãµãŒãéã§ãžã§ããããåãããéã«ã¯é©ããŠããªãã®ã§ããã ãRabbitMQã§ã¡ãã»ãŒãžãã¹ãæ§ç¯ããŸãããã§ããã以å€ã®ç®æã¯ä»ã§ãdRubyã䜿ã£ãŠããŸããã ã£ãŠãšã£ãŠãç°¡åã§äœ¿ãããããã§ãããšãã£ããã£ãŠããŸãããããã®çšéãªãRinda(dRubyã§äœããã忣ã¿ãã«ã¹ããŒã¹)ã§åºæ¥ããããšããèšèã¯ãã£ãšé£²ã¿èŸŒã¿ã€ã€ãå³ãããåéã«ãªã£ãŠã»ãããšèšã£ãŠããã®ã§ãåŸã§äžç·ã«åçãæ®ã£ãŠäžããããšç³ã蟌ãã§ãããŸããã
圌女ã¯å¿«ã快諟ããã ãã§ãªãããªããšãã§ã«The dRuby Bookæ¬ãææããŠãããå³ããã ãã§ãªãç§ã«ãŸã§ãµã€ã³ãæ±ããŠããŸããããµã€ã³ãæ±ãããããªã©ãšããããšã¯ä»ãŸã§ã®äººçã§ãªãã£ãã®ã§ç§ã¯èãäžãã£ãŠããŸããããããããããšã«ãªãã£ãã®å³ããã¯ãå³ããdRubyå°çšããã¡ã¯ããããã¯ãŒã«ã«æŒããŠããŸããã
Rails Is A Follower: what we can learn from dRuby's metaprogramming magic 2:30pm - 3:15pm (45m)
ããããç§ãã¡ã®åºçªããã£ãŠããŸãããå¿åŒ·ãããšã«æ¥æ¬äººã®åå è ã®æ¹ã ã座åžã®åã®æ¹ã«åº§ã£ãŠããäžã«ãdRubyã®ãšãã¹ããŒãã§ãããè³å士ãããšEric HodelãããMatzãããã®ã§ããã説æã«å°ã£ãéã«ã¯å©ãè¹ãæ±ããããšãã§ãããã§ãã
ãŸãæåã«ç§ã®ç޹ä»ãšå³ããã®ç޹ä»ãè¡ããŸãããäºåã«ä»èŸŒãã§ããã¢ã¡ãªã«ã³ãžã§ãŒã¯ã¯ã¿ããšã«ãã¹ã£ãŠããŸããŸããããå³ããããã±ã¢ã³ã®é人ã§ãããšããç¹ã¯åããŠããŸããã
次ã«ç§ã®ãã¢ã§ããdRubyã¯è€æ°ã®ããã»ã¹éã§ã®ã³ãã¥ãã±ãŒã·ã§ã³ãå¯èœã«ããã©ã€ãã©ãªãŒãªããããã¢ã®éã«irbãè€æ°ç«ã¡äžããã©ã€ããã¢ãå¿ é ã§ããããããªããè€æ°ã®ã¿ãŒããã«ãæãã€ã€äœãèµ·ããŠãããã説æããã®ã¯èªåã®é ãæ··ä¹±ããããšå¿ è³ã§ãã£ãããããã¢ã®å 容ãããããããããªã«ãšã£ãŠããã®ã¯æ£è§£ã§ããããããŠåæ¥ã«æ¥éœä»ãå ãããããã¯ã«ã€ããŠãã¡ãããšèª¬æã§ããŸãããã¹ã©ã€ãã®ã³ãŒãã®äžã«ãããšæªå®ã®ã³ãŒããã®ãããã®ã³ãŒãã§æ£ããã§ãããããšäŒå Žã«æãããããšãAaronããäžäººããã¯ãããšè¿äºããŠãŸããŸãšçœ ã«ã¯ãŸã£ãŠäžãããŸããããã¡ããããŸã§ãã
ç¹èšã®ææããããå³ãããå ã ãšdRubyã®åºæ¥ããŸã§ã®æŽå²ãšãdRubyããã¶ã€ã³ããäžã§ã®æ§ã ãªæå·§ã«ã€ããŠèª¬æãããŠããŸããããã¿ãã¬ã«ãªã£ãŠããŸãã®ã§ããã§ã¯èšããŸããããå³ããã®æåŸã®æ±ºãå°è©ã«ããã³ããŸããã
ããããQ&Aã§ããäžçªæåã®è³ªåã¯ç§ããããããã¢ãŸã§ããŠèª¬æããããšãèããŠããã®ã§ãæ¬åœã«ç§ã®èª¬æã¯äŒãã£ãã®ã ãããããšäžå®ã«ãªããŸãããããã®ã¡ãã£ãšèŠåœéãã®è³ªåã«ã¿ããªå®å¿ããŠãããã®åŸã¯æ§ã ãªè³ªåãããŠãããŸãããäžã«ã¯ç§ãçããããªããããªè³ªåãããã€ããããããããªããããã®ç®æã£ãŠã¡ãããšdRubyæ¬ã®æåŸã®æ¹ã«æžããŠãããã ããã©ããããã®é ã«ã¯ãžãšãžãšã«ãªã£ãŠããŠèš³åãããªããŸãŸç¿»èš³ãã¡ãããŸããããšãã£ã翻蚳ç§è©±ãå£äžããæŽé²ããã¯ãã«ãªã£ãŠããŸããŸãããããã§ãEricããã@mrknããã«ãé£ã³å ¥ãã§èª¬æããŠããã ããŠããªããšã屿©ãä¹ãè¶ããããšãåºæ¥ããšæããŸãã
ããŒã¯ã®åŸã«ã¯å£äžã«æ°äººã®æ¹ã ãæ¥ãŠãããŠããããããã£ãããšããå®ã¯ç§ã¯éèæ©é¢ã§åããŠããã ããã©ããã§dRubyãšRindaãããããïŒå¹Žã»ã©äœ¿ã£ãŠããã ãšããšãã£ãèžç±ãªèšèãŸã§ãããŠããããŸããã ãŸãäžçªæåŸã®äººã¯ãdRubyã§ã®äžŠååŠçãé«ããããã®ããããæžãããã ããã©dRubyã«åã蟌ãã§ããããŸãããããšåçœããŠããŸãããå³ããã¯äžå¯§ã«ã³ãŒããèŠãäžã§ãã圌ã®ã³ãŒãã®èŽåœçãªæ¬ é¥ãèŠã€ããããããæžããŸããããšå¬ã ãšããŠç§ã«å ±åããŠããŸããã ãã
ããã®ãšããæå·®ãŒããããæ¯æïŒæã«ã¯èµ·ããŠããã®ã§ããã仿¥ã¯æãããéåæããã°ã©ãã³ã°ãšã¯åæã®ããã°ã©ãã³ã°ã§ããããšããçŠ åçãã¿ãåœé¡ã«å¯Ÿããè¬çŸ©ãïŒæéã»ã©åãããã®åŸãïŒæ¥ç®ã®æ°ã ã®çºè¡šã¯ã»ãŒç¡èŠããŠäŒŒããããªãããã¯ã«ã€ããŠè©±ãç¶ããŠãããšæããŸããããããã®æãŠã«ã¯ãMatzãšã®Intimate(芪å¯ãª) Chatããšé¡ããQ&Aã®æéã«ã¯ãdRubyã§éåæåŠçãå®çŸããããã®ã³ãŒããå³ããã¯æžãäžããŠããŸãããäžèº«ãèŠããŠããã£ãã®ã§ãããéåæã«ããããã®ç¹å¥ãªåŠçã¯æžãããŠãããGCïŒã¬ãŒããŒãžã³ã¬ã¯ã·ã§ã³ïŒã«å¯ŸåŠããããã®ã³ãŒããïŒïŒè¡çšåºŠãããããã§ãããèŠã¯ãdRubyã«ã¯éåæåŠçãããããã®èŠçŽ ã¯ã»ãŒããã£ãŠããããããªã®ã§ãããçè§£ãããŸã§ã¯ãã€ãã«ã€ãŸãŸããæ°åã§ãããããªãã§ããã®ãããã¯ã«é¢ããŠã¯æå¹RubyäŒè°ã«æåºãããŠããã®ã§ãããªãžã§ã¯ãããããã ããã§ãããã²æ¥å¹Žã®RubyKaigiã§è©±ããŠã»ãããããã¯ã§ãããšã£ãŠãæ·±ããŠé¢çœããããã¯ãªã®ã§ãåäŒè°ã®ã¿ãªããŸæ¡çšããŠãããŠãã ããã
ããšæã£ãããšããã£ãã®ã§ãããå³ããã«æããŠããã ããŠäžç¬ãåãã£ãããšæã£ãŠããå°ãéãã¢ã³ã°ã«ã§äŒŒããããªåé¡ãåºããããšãšããã«çãã«çª®ããŠããŸãããšãäœåºŠããããŸããããããå³ããã«ãããšãæžããªããšåãããªããããªãïŒããšè³æ¥µãŸã£ãšããªçããè¿ã£ãŠããŸããããããå¿ èŠãªã®ã¯ãWe Codeãããã¡ããã©ã¿ã€ãã³ã°ããäŒç€Ÿã®ååããé¢é£ããã¡ãŒã«ãå±ããŠããã®ã§ãããã«å蚌ããããã®ããããæžããŠéã£ãŠãããŸããã
çºè¡šå 容ã®ãããªã¯Confreaksã§å ¬éãããäºå®ã§ãã
ãŸããããã®ããŒã¯ãããæ¥œããããã«The dRuby Bookããæããšã«ãããŠããããšããå§ãããŸãã
ãšãŠãè¯ãèšäºã§ããïŒå匷ã«ãªããŸããïŒïŒããããããããïŒïŒ