· 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
Courage is your greatest present need.


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.0047 sec