· KLDP.org · KLDP.net · KLDP Wiki · KLDP BBS ·
Ruby On Rails An Interview With David Heinemeier Hansson

¹ø¿ªÀÚ: "lenani":lenani

»óÅÂ: -¹ø¿ª- -> -±³Á¤- -> *Ãâ½Ã* <BR> ¿Ï¼ºÀÏ: 2005³â 9¿ù 8ÀÏ ¸ñ¿äÀÏ


O'Reilly Network Published on O'Reilly Network(http://www.oreillynet.com)

h1. Ruby on Rails: David Heinemeier Hansson¾¾¿ÍÀÇ ÀÎÅͺä

by Edd Dumbill

08/30/2005

¶°¿À¸£´Â À¯¸í Ç÷§Æû Ruby on Rails¿¡ ´ëÇؼ­ ¸ð¸£´Â »ç¶÷Àº °ÅÀÇ ¾øÀ» °Ì´Ï´Ù. RailsÀÇ Á¦ÀÛÀÚÀÎ David Heinemeier Hansson¾¾´Â À̹ø¿¡ ¿­¸° OSCON¿¡¼­ ¿©·¯ »ç¶÷À» ³î¶ó°Ô Çß½À´Ï´Ù. ±×¸®°í À̹ø 10¿ù¿¡ ¾Ï½ºÅ׸£´ã¿¡¼­ ¿­¸± European O'Reilly Open Source Convention¿¡¼­ °­¿¬À» Çϱâ·Î µÇ¾î ÀÖ½À´Ï´Ù.

Heinemeier Hansson¾¾´Â µ§¸¶Å© ÄÚÆæÇÏ°Õ¿¡ »ì°í ÀÖ½À´Ï´Ù. âÁ¶ÀûÀÎ 37signals¿¡ Âü¿©ÇÏ°í ÀÖÀ¸¸ç ÇÁ·ÎÁ§Æ® °ü¸® À¥ ¾îÇø®ÄÉÀ̼ÇÀÎ BasecampÀÇ Á¦ÀÛÀÚÀÔ´Ï´Ù. O'Reilly Network´Â ±×¿Í RailsÀÇ ¼º°ø°ú ¾ÕÀ¸·ÎÀÇ Àü¸Á¿¡ ´ëÇؼ­ À̾߱⸦ ³ª´²ºÃ½À´Ï´Ù.

h2. Ruby on RailsÀÇ ¼º°ø

Edd Dumbill: Rails´Â ÀÌ¹Ì ³Ê¹« À¯¸íÇØÁ³½À´Ï´Ù. Áö³­ 2004³â°ú °°ÀÌ °è¼Ó ÀÌ À¯¸í¼¼¸¦ Áö¼ÓÇÒ °ÍÀ¸·Î »ý°¢ÇϽʴϱî?

David Heinemeier Hansson: ±Û½ê¿ä. ´©±¸µµ Áö±Ý RailsÀÇ Àα⸦ ¿¹ÃøÇÏÁö ¸øÇßÀ» °Ì´Ï´Ù. ±×·¯³ª Á¦ »ý°¢¿¡´Â Rails´Â °è¼Ó À¯¸íÇØ Áú°Í °°½À´Ï´Ù. Àú´Â Rails¸¦ »ç¿ëÇؼ­ ÀÛ¾÷À» Çϴµ¥¿ä ¿¹Àü¿¡ ºñÇؼ­ Áñ°Ì°í »ý»ê¼ºÀÌ ¸¹ÀÌ Çâ»óµÊÀ» ´À³§´Ï´Ù. ´Ù¸¥ »ç¶÷µµ ºÐ¸í ±×·¸°Ô ´À³¥ °Ì´Ï´Ù.

Àú´Â 2°³ÀÇ ¼­·Î ´Ù¸¥ ¹è°æÀ» °¡Áö°í ÀÖ½À´Ï´Ù. PHP·Î ¿À·§µ¿¾È ÀÛ¾÷À» Çß½À´Ï´Ù. ±×·¡¼­ °á°ú¸¦ »¡¸® È®ÀÎÇϸ鼭 ÀÏÀ» »¡¸® Çϴµ¥ Àͼ÷ÇØÁ® ÀÖ½À´Ï´Ù. ¶ÇÇÑ µ¿½Ã¿¡ ´ëÇп¡¼­ ±³À°À» ¹Þ¾Ò°í J2EE¸¦ »ç¿ëÇÏ´Â °÷¿¡¼­ Java¸¦ »ç¿ëÇØ º»Àûµµ ÀÖ½À´Ï´Ù. ±×·± °æÇ趧¹®¿¡ ÆÐÅÏÀ̶óµçÁö ¿©·¯°¡Áö ½À°üÀ¸·ÎºÎÅÍ ³ª¿À´Â ¼ø¼öÇÔ°ú ÁÁÀº À¯Áöº¸¼ö¼º¿¡ ´ëÇؼ­ ¾Ë°í ÀÖ½À´Ï´Ù.

±×·¡¼­ ¼ÒÇÁÆ®¿þ¾î °³¹ßÀÇ µÎ Áø¿µ¿¡ ¸ðµÎ Àͼ÷ÇÕ´Ï´Ù. PHP·Î ´ëº¯µÇ´Â ¹®È­´Â ºü¸£Áö¸¸ ÁÁÀº ÄÚµå´Â ¾Æ´Õ´Ï´Ù. ¹Ý¸é Java·Î ´ëº¯µÇ´Â ¹®È­´Â ´À¸®Áö¸¸ ÁÁÀº Äڵ带 ¸¸µì´Ï´Ù. ÀÌ µÎ°³ÀÇ ¹®È­¸¦ ÇÕÄ¡¸é ºü¸£°í ÁÁÀº Äڵ带 ¸¸µé°Ô µÇ°í ÀÌ°ÍÀº ¾çÂÊ Áø¿µ¿¡ ȯ¿µÀ» ¹ÞÀ» °Ì´Ï´Ù.

ED: ±×°ÍÀÌ RailsÀÇ Àα⠺ñ°áÀ̶ó°í »ý°¢ÇϽʴϱî?

DHH: ±×°Í Çϳª¸¸Àº ¾Æ´Õ´Ï´Ù. ±×°Ç Á»´õ ¼³¸íÇϱ⠺¹ÀâÇÕ´Ï´Ù.

ÇÑ°¡Áö ¿øÀÎÀ» »ý°¢ÇÑ´Ù¸é Rails´Â öÇÐÀ» °¡Áø ¼ÒÇÁÆ®¿þ¾î ÀÔ´Ï´Ù. Rails´Â ¼ÒÇÁÆ®¿þ¾î¿¡ °üÇÑ ³°Àº »ý°¢µéÀ» ¶³ÃĹö·È½À´Ï´Ù. ±×·± ³°Àº »ý°¢Áß Çϳª´Â µÉ¼ö ÀÖÀ¸¸é ¸¹Àº ¹æ½ÄÀ» Æ÷¿ëÇØ¾ß µÈ´Ù´Â °Ì´Ï´Ù. ±×·± ³°Àº »ý°¢¿¡ ÀÇÇÏ¸é ¿ì¸®´Â ¾î¶² ¹æ¹ýÀÌ ´Ù¸¥ ¹æ¹ýº¸´Ù ÁÁ´Ù°í ÆÇ´Ü ³»¸®¸é ¾ÈµË´Ï´Ù. ±×·¯³ª Rails´Â ±×·± ÆÇ´ÜÀ» ³»¸³´Ï´Ù. Àú´Â ±×°ÍÀÌ RailsÀÇ ¼º°ø ºñ°áÀ̶ó°í »ý°¢ÇÕ´Ï´Ù.

Rails´Â Àú¼öÁØÀÇ À¯¿¬ÇÔÀ» °í¼öÁØÀÇ À¯¿¬ÇÔÀ» ¾ò±â À§Çؼ­ Æ÷±âÇÕ´Ï´Ù. RailsÀÇ ¹æ½Ä¿¡ µû¸£°Ô µÇ¸é °í¼öÁØ¿¡¼­ ¾ò¾îÁö´Â »ý»ê¼º Çâ»óÀ̶ó´Â º¸»óÀ» ¹Þ°Ô µË´Ï´Ù.

±×°ÍÀÌ ½±°Ô °áÁ¤³»·ÁÁú°ÍÀÌ ¾Æ´Ï¶ó´Â°É Àß ¾Ë°í ÀÖ½À´Ï´Ù. Çѹø ÄÚµù ±ÔÄ¢¿¡ °üÇÑ ³íÀïÀ» »ìÆ캾½Ã´Ù. ¸ðµç °³¹ßÀÚ°¡ °ýÈ£¸¦ ¾îµð´Ù µÎ¾î¾ß ÇÒÁö Á¤Çϸé Àб⠽±°í µ¿ÀÏÇÑ ÇüÅÂÀÇ Äڵ带 ¾òÀ»¼ö ÀÖ½À´Ï´Ù. ±×·¯³ª ¸¹Àº °³¹ßÀÚµéÀº ±×·¸°Ô »ý°¢ÇÏÁö ¾Ê½À´Ï´Ù. ±×µéÀº °³¹ßÀÚ¿¡°Ô ÀÚÀ¯¸¦ ÁÖ´Â °ÍÀÌ ÄÚµù ±ÔÄ¢À» °­Á¦·Î Àû¿ëÇÏ´Â °Íº¸´Ù Áß¿äÇÏ´Ù°í »ý°¢ÇÕ´Ï´Ù.

Rails´Â ÄÚµù ±ÔÄ¢°ú ºñ½ÁÇÑ ¿ªÇÒÀ» ÇÕ´Ï´Ù. °³¹ßÀÚ¿¡°Ô ÀÚÀ¯¸¦ »©¾Ñ±ä ÇÏÁö¸¸ Rails°¡ ÀαâÀÖ´Â °ÍÀº ±× ´ñ°¡·Î ¾ò´Â °ÍÀÌ ¸Å·ÂÀûÀ̱⠶§¹®ÀÔ´Ï´Ù. °øÅë Çü½ÄÀÇ Äڵ带 ¾ò´Â °ÍÀº ¸ðÈ£ÇÏ°í ±×·ìÀÇ ÀÔÀåÀ» ¹Ý¿µÇÑ °Ì´Ï´Ù. ±Ý¹æ µ¿ÀÛÇÏ´Â °á°ú¹°Àº ±¸Ã¼ÀûÀÌ°í °³ÀÎÀûÀÎ º¸»óÀÔ´Ï´Ù.

öÇÐÀ» °¡Áø ¼ÒÇÁÆ®¿þ¾î Ư¡Áß Çϳª´Â ±¸¼º ´ë½Å¿¡ °ü½ÀÀ» µû¸¥´Ù´Â °Ì´Ï´Ù. Ŭ·¡½º´Â ´Ü¼öÀÌ°í Å×À̺íÀº º¹¼ö¶ó´Â(»ç¶÷ Ŭ·¡½º´Â »ç¶÷µé Å×À̺í°ú ¿¬°üµÈ´Ù) ¸î°¡Áö ±âº»ÀûÀÎ °ü½ÀÀ» µû¸£¸é ÀÌ µÑ°£ÀÇ °ü°è¸¦ ¼³Á¤ÇÒ ÇÊ¿ä°¡ ¾ø½À´Ï´Ù. Ŭ·¡½º´Â ÀÚµ¿À¸·Î ¾î¶² Å×À̺íÀÌ persistence¸¦ À§Çؼ­ »ç¿ëµÇ´ÂÁö ¾Ë°Ô µË´Ï´Ù. ¿ì¸®´Â ÀÌ·± ¹æ½ÄÀ» ¸¹ÀÌ »ç¿ëÇÕ´Ï´Ù. ±×·¡¼­ ÀÌ°ÍÀº ¸ÅÀÏ »ç¿ëÇÒ¼ö·Ï ÀÌ°ÍÀÌ ´õ ÁÁ´Ù´Â °ÍÀ» ´À³¢°Ô µË´Ï´Ù.

ED: 37signals¸¦ Á¦¿ÜÇÑ °÷¿¡¼­ RailsÀÇ °­·ÂÇÔÀ» ´À²¸º¸½ÅÀû ÀÖÀ¸½Ê´Ï±î?

DHH: 43things.comÀÇ ¼º°ø¿¡ ¸¹ÀÌ ¸¸Á·ÇÕ´Ï´Ù. Robot Co-op´Â Rails°¡ Ãâ½Ã µÇÀÚ¸¶ÀÚ Rails¸¦ Àû¿ëÇÑ Ã¹¹ø° ´ë±â¾÷ÀÏ °Ì´Ï´Ù. ±×µéÀº µ¶Æ¯ÇÑ ¸ðÅä°¡ Àִµ¥¿ä, ±×°ÍÀº »ç¶÷µéÀ» µµ¿Í¼­ ÀλýÀÇ ¸ñÇ¥¿¡ µµ´ÞÇÒ¼ö ÀÖ°Ô ÇÏÀÚ ÀÔ´Ï´Ù. ÁÁÀº »ý°¢ ¾Æ´Õ´Ï±î?

°Ô´Ù°¡ ±×°ÍÀº Àß µ¿ÀÛÇÕ´Ï´Ù. Nat Torkington¾¾°¡ ³» ¸ñÇ¥Áß ÇϳªÀÎ "500¸í ÀÌ»óÀÇ »ç¶÷¿¡°Ô Rails¿¡ ´ëÇؼ­ °­¿¬ÇÑ´Ù" ¸¦ º¸°Ô µÇ¾î¼­ OSCON¿¡¼­ °­¿¬À» Çϱâ·Î °è¾àÇß¾ú½À´Ï´Ù. ±×·¡¼­ À̹ø 8¿ù¿¡ OSCON¿¡¼­ 2000¸íÀÇ »ç¶÷µé ¾Õ¿¡¼­ °­¿¬À» ÇÏ°Ô µÈ °ÍÀÔ´Ï´Ù.

±×·¯³ª ¹«¾ùº¸´Ù Rails°¡ »¡¸® ÆÛÁö°í »ó¾÷ÀûÀ¸·Îµµ ¼º°øÇÏ°Ô µÈ°ÍÀ» º»°ÍÀÌ °¡Àå ±â»Þ´Ï´Ù. Rails Àü¹® ÇÁ·Î±×·¡¸ÓµéÀÌ 40°³±¹¿¡¼­ 3000¸í ÀÌ»óÀ¸·Î Áý°èµÇ¾ú½À´Ï´Ù. Àú´Â ±× ¼ýÀÚ°¡ ³Ê¹« »¡¸® ´Ã¾î³ª¼­ ³î¶ú½À´Ï´Ù.

ED: RailsÀÇ ¾î¶² ±â´ÉÀÌ °¡Àå ¸¾¿¡ µå½Ê´Ï±î?

DHH: ¸¾¿¡ µéÁö ¾Ê´Â °Íµé ¸ðµÎ°¡ ±×·¸½À´Ï´Ù. ¿ì¸®°¡ ¾Æ´Ï¶ó°í ÇÑ ¸ðµç ±â´ÉÀÌ ±×·¸½À´Ï´Ù. ¿ì¸®°¡ ²¨¹ö·È´ø Àå½ÄÇ°µéÀÌ ±×·¸½À´Ï´Ù. 80%ÀÇ ¹®Á¦¸¦ ÇØ°áÇÏ´Â 20%ÀÇ ÇØ°á¹æ½ÄµéÀÌ ±×·¸½À´Ï´Ù.

±¸Ã¼ÀûÀ¸·Î ¸»ÇÏÀÚ¸é ¿ì¸®°¡ »ç¿ëÇÏ´Â ¹®Á¦ Áß½ÉÀûÀÎ ¾ð¾î°¡ ¸¾¿¡ µì´Ï´Ù. °ü°è¸¦ ¼³Á¤ÇÒ¶§ belong_to, has_one, has_many, has_and_belongs_to_many¸¦ »ç¿ëÇÏ´Â °ÍÀÌ ¸¾¿¡ µì´Ï´Ù. validates_presence_of :name ó·³ °ËÁõ Äڵ带 ½±°Ô ¸¸µé¼ö ÀÖ´Ù´Â°Ô ¸¾¿¡ µì´Ï´Ù.

h2. ÇÁ·Î±×·¡¹Ö ¾ð¾î

ED: Rails¸¦ óÀ½ ºÃÀ»¶§ Ruby¾ð¾î·Î ¸¸µé¾îÁ³´Ù´Â°Ô ²¨·ÁÁö´õ±º¿ä. Ruby´Â ³Î¸® ¾Ë·ÁÁø ¾ð¾î°¡ ¾Æ´Õ´Ï´Ù. ¾î¶»°Ô Ruby¸¦ »ç¿ëÇÏ°Ô µÆ½À´Ï±î?

DHH: 2003³â ¿©¸§¿¡ Rails¸¦ ¸¸µé±â ½ÃÀÛÇß½À´Ï´Ù. 37signals´Â BasecampÀÇ °³¹ßÀ» ½ÃÀÛÇÏ°í ÀÖ¾ú½À´Ï´Ù. Basecamp´Â ±× ȸ»ç¸¦ ÄÁ¼³Æ® ȸ»ç¿¡¼­ °³¹ß ȸ»ç·Î ¹Ù²ã ³õÀ» Á¦Ç°À̾ú½À´Ï´Ù. ¿ì¸®´Â PHP¸¦ »ç¿ëÇÏ°í ÀÖ¾ú°í ¾µ¸¸ÇÏ°í Àç»ç¿ë °¡´ÉÇÑ ÇÁ·¹ÀÓ¿öÅ©¸¦ ã´Âµ¥ °í»ýÇÏ°í ÀÖ¾ú½À´Ï´Ù. ±×¶§´Â Rails°¡ PHP·Î ¸¸µé¾îÁ³¾ú°í Àú´Â ±×°Í¿¡ ´ëÇؼ­ º°·Î ÁÁÁö ¾ÊÀº ±â¾ïÀ» °¡Áö°í ÀÖ½À´Ï´Ù.

±×¶§´Â ±×´ë·Î ÁøÇàÇÏ´øÁö ´Ù¸¥ ¹æÇâÀ¸·Î ÀüȯÇÏ´øÁö ÇØ¾ß Çß¾ú½À´Ï´Ù. ±×¶§ ¸¾¿¡ ¾Èµå´Â µµ±¸¸¦ Âü°í ¾²´À´Ï Â÷¶ó¸® ÁÁ¾ÆÇÏ´Â µµ±¸¸¦ ¾²´Â°Ô ÁÁ°Ú´Ù°í »ý°¢ÀÌ µé¾ú½À´Ï´Ù. ±×·¡¼­ ´Ù¸¥ ´ë¾ÈÀ» ã±â ½ÃÀÛÇß¾ú½À´Ï´Ù.

±×´ç½Ã ÀÌ·± »ý°¢ÀÌ ¶°¿Ã¶ú½À´Ï´Ù. Àú´Â the Pragmatic Programmers¶ó´Â Ã¥°ú Martin Fowler¾¾ÀÇ ÆÒÀ̾ú½À´Ï´Ù. ±×¸®°í ÀÌ°÷ Àú°÷¿¡¼­ Ruby ¾ð¾î°¡ µîÀåÇÏ´Â °ÍÀ» ºÃ¾ú½À´Ï´Ù. Á¦ Ä£±¸Áß Çϳª°¡ Ruby¸¦ ½ÃÇèÇغ¸°í ¿Ö PHP¸¦ »ç¿ëÇÏ³Ä°í ¹°¾îºÃ¾ú½À´Ï´Ù.

±×·¡¼­ Àá½Ã³ª¸¶ ¿Ö Ruby°¡ ÇÊ¿ä¾ø°í PHP¸¦ ²À ½á¾ß ÇÏ´ÂÁö ¼³¸íÇß¾ú½À´Ï´Ù. Ruby ÇÁ·Î±×·¡¸Ó´Â ã±â°¡ Èûµé°Å´Ù. PHP´Â ÁÁÀº ¶óÀ̺귯¸®°¡ ´õ ¸¹´Ù. ÀÌ·¸°Ô ¸»Çß½À´Ï´Ù. ±×·¯³ª ´ÙÇེ·´°Ôµµ ±× ±â°£Àº ±æÁö ¾Ê¾Ò½À´Ï´Ù. ¿ì¸®´Â Ruby¸¦ »ç¿ëÇØ º¸±â·Î °áÁ¤Çß¾ú½À´Ï´Ù.

"Ruby°¡ Á¤¸» ÁÁÀºµ¥."¶ó°í ¸»Çϴµ¥ µü ÇÏ·ç°¡ °É·È½À´Ï´Ù. "ÀÌÁ¨ PHP·Î ¸øÇÏ°Ú¾î."¶ó°í ¸»Çϴµ¥ µü ÀÏÁÖÀÏ °É·È½À´Ï´Ù. ±×¸®°í ±×·ÎºÎÅÍ ÇÑ´ÞÀÌ ¾ÈµÅ¼­ PHPº¸´Ù Ruby¿¡ ´õ Àͼ÷ÇØÁ® ¹ö·È½À´Ï´Ù. Á¤¸» Ruby´Â ³ªÇÑÅ× µü ¸Â¾Ò½À´Ï´Ù. ³ª´Â ´õ Àç¹ÌÀÖ°Ô ´õ ¸¹Àº ÀÛ¾÷À» ÇÒ¼ö ÀÖ°Ô µÇ¾ú½À´Ï´Ù.

PHP°¡ ³ª»Ú´Ù´Â ¼Ò¸®·Î µé¸±Áö ¸ð¸£°Ú½À´Ï´Ù. PHPµµ ÁÁ½À´Ï´Ù. PHP´Â È°¿ëµµ°¡ ¶Ù¾î³ª¼­ óÀ½¿¡ PHP¸¦ »ç¿ëÇؼ­ ÇÁ·Î±×·¡¹ÖÀ» ½ÃÀÛÇß½À´Ï´Ù. ³ª´Â ¿À·§µ¿¾È PHP¸¦ »ç¿ëÇß½À´Ï´Ù. ±×³É PHPÀÇ ÇѰ踦 ¹þ¾î³ª´Â Áö°æ¿¡ À̸£·¶À» »Ó ÀÔ´Ï´Ù. Ruby´Â ÇöÀç »óÅ¿¡¼­ °¡Àå ÁÁÀº ¾ð¾îÀÔ´Ï´Ù.

ED: Rails°¡ Java³ª PythonÀ» »ç¿ëÇßÀ»¸é ÁÁ¾ÒÀ» °Å¶ó°í »ý°¢µÈ ºÎºÐÀÌ ÀÖ¾ú½À´Ï±î?

DHH: ´õ ÁÁ´Ù¶ó´Â ¸»Àº ÀÌ·± ºñ±³¸¦ Çϱ⿡´Â ºÎÀûÀýÇÑ ¸» °°½À´Ï´Ù. ¸¸¾à Rails°¡ Java·Î ¸¸µé¾îÁ³´Ù¸é ±â¾÷¿ëÀ¸·Î ´õ ½±°Ô À¯¸íÇØÁ³À» °Ì´Ï´Ù. ±×·¯³ª Àú¿¡°Ô´Â ÀÌ°ÍÀÌ ¼º°øÀ̶ó°í »ý°¢µÇÁö ¾Ê½À´Ï´Ù. Àú´Â Á¦°¡ ÇÏ´Â ÀÏÀ» ´õ ½±°í ºü¸£°Ô Çϱâ À§Çؼ­ Rails¸¦ ¸¸µé¾ú½À´Ï´Ù. ±â¾÷¿ëÀ¸·Î ¼º°øÇϱâ À§Çؼ­ Rails¸¦ ¸¸µéÁö ¾Ê¾Ò½À´Ï´Ù. ¾î·µç Áö±Ý Rails´Â ¼º°øÇß½À´Ï´Ù. ÇÏÁö¸¸ ¸¸¾à ±×·± Àǵµ·Î Rails¸¦ ¸¸µé¾ú´Ù¸é ¾Æ¸¶ ¼º°øÇÏÁö ¸øÇßÀ» °Ì´Ï´Ù.

PythonÀÇ °æ¿ì´Â Àß ¸ð¸£°Ú½À´Ï´Ù. ¹Û¿¡¼­ º¸¸é µÎ ¾ð¾î´Â ¾ÆÁÖ ºñ½ÁÇØ º¸ÀÔ´Ï´Ù. ±×·¯³ª ÀÏ´Ü µÎ ¾ð¾î¸¦ Àß ¾Ë°Ô µÇ¸é ÀüÇô ´Ù¸£°Ô ´À²¸Áö´Â ÀÛÀº Â÷À̵éÀÌ ÀÖ½À´Ï´Ù. Python µµ ºÐ¸íÈ÷ ÁÁÀº Á¡ÀÌ ¸¹½À´Ï´Ù. Ruby¿¡ ÁÁÀº Á¡ÀÌ ÀüÇô ¾ø¾ú´õ¶ó¸é ¾Æ¸¶µµ Rails´Â PythonÀ¸·Î ¸¸µé¾îÁ³À» °Ì´Ï´Ù.

Rails´Â Á¤¸» Ruby¿Í ºñ½ÁÇÏ°Ô ´À²¸Áý´Ï´Ù. Rails´Â Ruby¿¡ ¸¹ÀÌ ÀÇÁ¸ÇÕ´Ï´Ù. ¿¹¸¦ µé¸é block, »óȲ¿¡ ¸Â°Ô ¾ð¾î¸¦ ¸¸µé¼ö ÀÖ´Â ´É·ÂµîÀÌ ÀÖ½À´Ï´Ù.

ED: Áö±ÝÀº PHP³ª PerlÀ» »ç¿ëÇؼ­ À¥ ¾îÇø®ÄÉÀ̼ÇÀ» ¸¸µå´Â°Ô ÁÁ´Ù°í »ý°¢ÇϽʴϱî?

DHH: ³×. Rails´Â ¸¸´ÉÀÌ ¾Æ´Õ´Ï´Ù. À¥ÆäÀÌÁö¿¡ µ¿ÀûÀÎ ¸éÀÌ ÇÊ¿äÇÒ¶§´Â Áö±Ýµµ PHP¸¦ »ç¿ëÇÏ°í ÀÖ½À´Ï´Ù. 37signals ¿¡¼­µµ ¸ðµç ±¤°í ÆäÀÌÁö´Â PHP¸¦ »ç¿ëÇÏ°í ÀÖ½À´Ï´Ù.

¹Ý¸é Rails´Â Ä¿´Ù¶õ À¥ ¾îÇø®ÄÉÀ̼ǿ¡ ÀûÇÕÇÕ´Ï´Ù. ±×·¡¼­ Basecamp, 43things.com, ODEO, Strongspace¿Í °°Àº ±Ô¸ðÀÇ ¾îÇø®ÄÉÀ̼ÇÀ» ¸¸µé¶§ PHP³ª PerlÀ» »ç¿ëÇÏ´Â°Ô ÁÁ³Ä°í ¹°¾îº»´Ù¸é ´ç¿¬È÷ ³» ´ë´äÀº ¾Æ´Ï¿À ÀÔ´Ï´Ù.

±×·¯³ª »óȲ¿¡ µû¶ó¼­ ¾î¿¼ö ¾øÀÌ ÇÒ¼ö ¹Û¿¡ ¾øÀ» ¶§µµ ÀÖÀ» °Ì´Ï´Ù. ±×·¯³ª Á¦ »ý°¢¿¡´Â ±×·± »óȲÀÌ ³Ê¹« °úÀåµÇ¾îÀÖ½À´Ï´Ù. ¿¹¸¦ µé¸é Ruby ÇÁ·Î±×·¡¸Ó°¡ ¾ø¾î¼­ Rails¸¦ »ç¿ëÇÒ¼ö ¾øÀ»¼ö ÀÖ½À´Ï´Ù. ´Ù¸¥ ȯ°æ¿¡ ³Ê¹« Àͼ÷ÇØÁ® À־ ¹Ù²Ù±â ½ÈÀ»¶§µµ ÀÖ½À´Ï´Ù. ÀÌ·± °ÍµéÀº º¯¸í¿¡ ºÒ°ú ÇÕ´Ï´Ù. ÁÁÀº ÇÁ·Î±×·¡¸Ó´Â ±×·±°Í¿¡ ¿¬¿¬ÇÏÁö ¾Ê½À´Ï´Ù. Rails´Â »ý°¢º¸´Ù ´ç½ÅÀÌ ÇÏ´ø ÀÏ°ú ¾ÆÁÖ ºñ½ÁÇÕ´Ï´Ù. ´õ±º´Ù´Ù Rails´Â ¹è¿ì±â ½±½À´Ï´Ù.

h2. À¥ ¾îÇø®ÄÉÀÌ¼Ç ÇÁ·¹ÀÓ¿÷

ED: Rails¸¦ »ç¿ëÇÒ¶§ ÁÁÀº Á¡Áß Çϳª°¡ Ãâ½Ã ȯ°æ°ú °³¹ß ȯ°æÀÌ ºÐ¸®µÇ¾î ÀÖ´Ù´Â °Ì´Ï´Ù. ±×·± ±â´ÉµéÀº ½ºÅ©¸³Æ® ¾ð¾î À¥ µµ±¸¿¡¼± º¼¼ö ¾ø½À´Ï´Ù. Rails¸¦ ¸¸µé¶§ ±â¾÷ ȯ°æÀ» ¿°µÎ¿¡ µÎ°í ÀÖ¾ú½À´Ï±î?

DHH: Àú´Â ÀúÀÇ ÀÏÀ» ÆíÇÏ°Ô ÇÒ¼ö Àִµ¥¸¸ ½Å°æÀ» ½è½À´Ï´Ù. Rails´Â ±×·±¸é¿¡¼­ º¸¸é À̱âÀûÀÎ ÇÁ·ÎÁ§Æ® ÀÔ´Ï´Ù. Á¦°¡ °Þ´Â ¹®Á¦¸¦ °ÞÁö ¾Ê´Â »ç¶÷µéÀ» À§Çؼ­ ¸¸µéÁö ¾Ê¾Ò±â ¶§¹®¿¡ Rails°¡ ¸¹Àº Àα⸦ ¾ò¾ú´Ù°í »ý°¢ÇÕ´Ï´Ù. Ãâ½Ã ȯ°æ°ú °³¹ß ȯ°æÀÌ ´Þ¶ó¼­ »ý±â´Â ¹®Á¦´Â Àú¿¡°Ô´Â Çö½ÇÀûÀÎ ¹®Á¦¿´½À´Ï´Ù. ±×·¡¼­ ±× ¹®Á¦¸¦ ÇØ°áÇÑ°Í »ÓÀÔ´Ï´Ù.

´Ù¸¥ »ç¶÷À» ½ÃÄѼ­ ³» ¹®Á¦¸¦ ÇØ°áÇϱâ´Â ¾î·Æ½À´Ï´Ù. ´Ù¸¥ »ç¶÷ÀÇ ¹®Á¦¸¦ ÇØ°áÇÏ´Â °Íµµ °ÅÀÇ ºÒ°¡´É ÇÕ´Ï´Ù. ¸¸Á·ÀÇ °üÁ¡¿¡¼­ º»´Ù¸é ´õ¿í ±×·¸½À´Ï´Ù.

±×·¡¼­ ÇÁ·¹ÀÓ¿÷Àº ¸¸µé¾îÁø´Ù°í ÇÏ´Â °Ì´Ï´Ù. ÇÁ·¹ÀÓ¿÷Àº ¹®Á¦°¡ ¹ß»ýÇϱâ Àü¿¡ Á¸ÀçÇÏ´Â °ÍÀÌ ¾Æ´Õ´Ï´Ù. ÇÁ·¹ÀÓ¿÷Àº ¹®Á¦¸¦ ÇØ°áÇÑ °á°ú·Î¼­ ¸¸µé¾îÁý´Ï´Ù. ¿ì¸®°¡ ¹Ì¸® »ý°¢Çؼ­ ¸¸µé¾îÁö´Â °úÁ¤À» »ý·«ÇØ ¹ö¸°´Ù¸é ±× °á°ú´Â ±×³É ¹®Á¦ ÇØ°á ÀÌÀüÀÇ »óÅ·ΠµÇµ¹¾Æ¿À´Â °Í »Ó ÀÔ´Ï´Ù.

³ª´Â ±×·¡¼­ ¸¹Àº »ç¶÷µéÀÌ Rails¸¦ ÁÁ¾ÆÇÑ´Ù°í »ý°¢ÇÕ´Ï´Ù. ¾ÕÀ¸·Î ÀϾ ÀÏ¿¡ ´ëÇؼ­ ¹Ì¸® ´ëºñÇϱâ ÀÌÀü¿¡ ÁøÁ¤À¸·Î »ç¶÷µéÀ» µ½±â ¶§¹®ÀÔ´Ï´Ù.

ED: °ü°è µ¥ÀÌÅͺ£À̽º°¡ ÇÊ¿äÀÇ 90%¸¦ ÃæÁ·ÇÏÁö¸¸ ¶§·Î´Â ´Ù¸¥ ÀúÀå ¼ö´ÜÀÌ ´õ Æí¸®ÇÒ ¶§°¡ ÀÖ½À´Ï´Ù. °´Ã¼ µ¥ÀÌÅͺ£À̽º³ª RDF ÀúÀå¼Ò¸¦ Rails¿¡ Ãß°¡ÇÒ »ý°¢Àº ¾ø½À´Ï±î?

DHH: Rails´Â ±× ¾î¶² ÀúÀå ÇüÅÂ¶óµµ Áö¿øÇÕ´Ï´Ù. Á¦°¡ Instiki¶ó´Â À§Å°¸¦ ¸¸µé¾ú´Âµ¥¿ä, ÃÖ±Ù¿¡ Rails¸¦ »ç¿ëÇؼ­ ´Ù½Ã ¸¸µé¾ú½À´Ï´Ù. ÀúÀå ¼ö´ÜÀ¸·Î´Â MadeleineÀ» »ç¿ëÇÕ´Ï´Ù. MadeleineÀº °´Ã¼ µ¥ÀÌÅͺ£À̽º¿Í ºñ½ÁÇÑ ¿ªÇÒÀ» ÇÏ´Â Prevayler¸¦ Ruby¸¦ »ç¿ëÇؼ­ ±¸ÇöÇÑ °Ì´Ï´Ù.

Active Record¸¦ ´ë½ÅÇؼ­ ´Ù¸¥ ÀúÀå ¼ö´ÜÀ» »ç¿ëÇÏ´Â °ÍÀº ¾ÆÁÖ ½±½À´Ï´Ù. ÃÖ±Ù¿¡ SOAP, SAP, LDAP, ±âŸ µîµîÀ» ÀúÀå ¼ö´ÜÀ¸·Î »ç¿ëÇÏ´Â °ÍÀ» ¸ñ°ÝÇÏ°í ÀÖ½À´Ï´Ù. ½ÉÁö¾î´Â º¸Åë text ÆÄÀÏÀ» »ç¿ëÇϱ⵵ ÇÕ´Ï´Ù. ¾î¶² °Í ÀÌ¶óµµ °¡´ÉÇÕ´Ï´Ù.

ÇÏÁö¸¸ Active Record´Â °´Ã¼¿Í °ü°èÀÇ ºÒÀÏÄ¡ ¹®Á¦¸¦ Á»´õ ½±°Ô ´Ù·ê¼ö ÀÖ°Ô ÇÕ´Ï´Ù. ±×·¡¼­ SQLite ó·³ ÀÏ¹Ý text ÆÄÀÏ°ú °°Àº ´À³¦ÀÌ ³ªÁö¸¸ SQLÀ» ¾µ¼ö ÀÖ´Â µ¥ÀÌÅͺ£À̽º¸¦ ¾²Áö ¾Ê´Ùµµ µÉ Á¤µµ ÀÔ´Ï´Ù.

±×·¡¼­ Active Record°¡ Á¡Á¡ ³ª¾ÆÁú¼ö·Ï Madeleine °°Àº ÇÁ·ÎÁ§Æ®¿¡ ´ú ½Å°æ¾²°Ô µË´Ï´Ù. ±×·± ´Ù¸¥ ¹æ½ÄÀÌ ³ª»Ú´Ù´Â°Ô ¾Æ´Õ´Ï´Ù. ´Ù¸¸ ´Ù¸¥ ¹æ½Ä¿¡ ½Å°æ¾µ¸¸Å­ »óȲÀÌ ³ª»ÚÁö ¾Ê´Ù´Â °Ì´Ï´Ù.

ED: »ó´çÈ÷ Æí¸®ÇÑ À¥ ÇÁ·¹ÀÓ¿÷µéÀÌ Á¡Á¡ Ä¿Áö°í °ü¸®°¡ Á¡Á¡ ¾î·Á¿öÁö°í ÀÖ½À´Ï´Ù. ¿¹¸¦ µé¸é Zope°¡ ±×·±µ¥¿ä. ÀÌ·± ¹®Á¦µéÀ» ÇÇÇØ°¥ ¹æµµ°¡ ÀÖ½À´Ï±î?

DHH: ±â¹Ý ±¸Á¶¿¡ ¸Ó¹«¸£½Ê½Ã¿À. ºñÁö´Ï½º ·ÎÁ÷À» Á¦¿Ü½ÃÅ°½Ê½Ã¿À. Rails´Â content management, access control lists, forums, chats µîµîÀ» ´Ù·çÁö ¾Ê½À´Ï´Ù. ¿ì¸®´Â Rails°¡ ±â¹Ý ±¸Á¶°¡ µÇ¾î ¾î¶°ÇÑ ¾îÇø®ÄÉÀ̼ÇÀÌ¶óµµ µÉ¼ö ÀÖ°Ô ½Å°æ¾²°í ÀÖ½À´Ï´Ù.

¿ì¸®´Â Rails¸¦ Zope³ª Open ACSó·³ ¸¸µéÁö ¾ÊÀ» °Ì´Ï´Ù. ¿ì¸®´Â Rails¸¦ ºñÁö´Ï½º ·ÎÁ÷¿¡ Èí¼öµÈ ÇÁ·¹ÀÓ¿÷À¸·Î ¸¸µéÁö ¾Ê°Ú½À´Ï´Ù.

¿ì¸®´Â ¸¹Àº »ç¶÷µéÀÌ ¾î¶°ÇÑ ¾îÇø®ÄÉÀ̼ÇÀÌ¶óµµ Á»´õ ½±°Ô ¸¸µé¼ö ÀÖ°Ô ÇÏ°í ÀÖ½À´Ï´Ù. ¿¹¸¦ µé¸é ´ÙÀ½ ¹öÀüÀÇ Rails¿¡´Â Switch Tower¶ó´Â »õ·Î¿î ÇÏÀ§ ÇÁ·ÎÁ§Æ®¸¦ ÁغñÇÏ°í ÀÖ½À´Ï´Ù. ±×°ÍÀº ¾îÇø®ÄÉÀ̼ÇÀ» ¹èÄ¡Çϱâ À§Çؼ­ »ç¿ëµË´Ï´Ù. ¹èÄ¡ÀÇ ¾î·Á¿òÀº ¸ðµç ¾îÇø®ÄÉÀ̼ÇÀÌ ¾È°í ÀÖ´Â ¹®Á¦ÀÔ´Ï´Ù. ÇÏÁö¸¸ Switch Tower¸¦ »ç¿ëÇÏ¸é °³¹ß ÇÁ·Î¼¼½º°¡ º¹ÀâÇØÁöÁö ¾Ê½À´Ï´Ù. default ¼³Á¤À» ¸¹ÀÌ »ç¿ëÇÒ ÇÊ¿ä°¡ ¾ø±â ¶§¹®ÀÔ´Ï´Ù. Rails´Â ´ç½ÅÀÇ ¹®Á¦¸¦ ÇØ°áÇϱâ À§Çؼ­ Á¸ÀçÇÕ´Ï´Ù.

ED: ´ÙÀ½À¸·Î ³ª¿Ã RailsÀÇ »õ ±â´ÉÀº ¹«¾ùÀԴϱî?

DHH: ÀÌ¹Ì Switch Tower°¡ ´ÙÀ½¿¡ ³ª¿Ã »õ ±â´ÉÀ̶ó°í ¸» Çß½À´Ï´Ù. ÇÏÁö¸¸ Áö±Ý ´çÀåÀº 1.0À» ´Ùµë´Â ÀÏÀ» ÇÏ°í ÀÖ½À´Ï´Ù.

±× ÀÏÀÌ ³¡³ª¸é ÇÒ ¿©·¯°¡Áö °èȹÀ» °¡Áö°í ÀÖ½À´Ï´Ù. The Conductor¶ó´Â °Í¿¡ Ưº°È÷ °ü½ÉÀÌ °©´Ï´Ù. ±×·¯³ª ¾ÆÁ÷Àº ¿©·¯»ç¶÷¿¡°Ô °ø°³ÇÏÁö ¾ÊÀ» »ý°¢ÀÔ´Ï´Ù.

Edd Dumbill¾¾´Â O'Reilly Network¿¡¼­ ÆíÁýÀÚ·Î ÀÏÇÏ°í ÀÖ½À´Ï´Ù. ¶ÇÇÑ Mono: A Developer's NotebookÀÇ °øµ¿ ÀúÀÚÀ̱⵵ ÇÕ´Ï´Ù. µ¿½Ã¿¡ GNOME¿¡¼­ µ¹¾Æ°¡´Â °ø°³ ¼ÒÇÁÆ®¿þ¾î °³¹ßÀÚÀÔ´Ï´Ù. µ¥ºñ¾È GNU/Linux ¹èÆ÷ÆÇ¿¡¼­ Bluetooth¿¡ °ü·ÃµÈ ¼ÒÇÁÆ®¿þ¾îÀÇ ÆÐŰ¡À» ¼öÇàÇϱ⵵ ÇÕ´Ï´Ù. Behind the Times¶ó´Â ºí·Î±×µµ ¿î¿µÇÏ°í ÀÖ½À´Ï´Ù.

Copyright © 2005 O'Reilly Media, Inc.

<hr>

If you want to send us any correction, recommendation, or idea, feel free to email us at: objectorientedkick (at) gmail_dot_com

ID
Password
Join
You will be singled out for promotion in your work.


sponsored by andamiro
sponsored by cdnetworks
sponsored by HP

Valid XHTML 1.0! Valid CSS! powered by MoniWiki
last modified 2006-12-08 15:40:07
Processing time 0.0048 sec