루비 세미나 후기

Posted by 大山 Sun, 26 Nov 2006 17:42:00 GMT

어제는 첫 루비 세미나 모임오픈마루 회의실에서 열렸다. 첫 발표를 맡으신 Ias님은 JRuby에 대한 상세한 내용을 다루어 주셨다. 특히 JRuby의 설정, 사용법, 용도 등과 관련한 내용을 많이 짚어주셔서, JRuby 사용을 염두에 두고 있는 분들에게 많은 도움이 되었을듯.

두번째 발표는 정목님Capistrano 발표였는데, 깔끔한 프레젼테이션 스킬이 돋보이는 발표였다. Capistrano는 레일스 Deployment를 자동화시켜주는 툴인데, 덕분에 Capistrano를 사용하는 과정 전체를 잘 들여다 볼 수 있었다.

세번째 발표는 내가 준비한 루비 메타 프로그래밍이었다. 메타 프로그래밍은 루비에서 런타임에 동적으로 메소드를 추가하는 프로그래밍 기법으로, 레일스 등에서 널리 응용되고 있는 기능이다.

예를 들어, 다음처럼 Base 클래스에 'my_attr_accessor'이란 클래스 메소드가 정의되어 있다고 가정해보자.

class Base
  def self.my_attr_accessor(str)
    class_eval "def #{str}; @#{str}; end"
    class_eval "def #{str}=(value); @#{str}=value; end"
  end
end
 

위에서 'my_attr_accessor' 클래스 메소드는 'class_eval' 메소드를 호출하여 문자열로 작성된 루비 코드를 실행시킴을 알 수 있다. 이 때문에 Base 클래스를 상속받는 모든 클래스는 단지 'my_attr_accessor' 메소드를 호출함으로써 특정 인스턴스 변수에 대한 접근자 메소드를 동적으로 정의할 수 있다. 즉, 다음 두개의 Person 클래스 정의는 논리적으로 동일하다.

class Person < Base
  my_attr_accessor "name"
end

class Person
  def name
    @name
  end
  def name=(value)
    @name=value
  end
end
 

실제로 루비에는 'my_attr_accessor'와 비슷한 기능을 하는 'attr_accessor'라는 메소드가 이미 정의되어 있어 새로운 클래스를 정의할때 사용할 수 있다.

막상 발표를 끝내고 보니 구체적인 예를 더 준비하지 못한게 아쉬웠는데, 마침 deepblue님루비를 즐겨요 발표가 내용적으로 이어지는 발표가 되어 좋았다. 이 발표는 과연 '루비스러운 코드는 무엇인가'에 관한 내용이었는데, 다소 형이상적일수도 있는 이 물음에 deepblue님은 다음과 같은 답을 제시했다.

루비스러운 코드는 개발자가 고민한 시간이 묻어있는 사람 냄새나는 코드입니다.

위의 구절에서도 deepblue님의 고민과 사람 냄새가 느껴지는 듯. :)

다섯번째 발표는 seradin님의 Groovy/Grails에 관한 내용이었다. seradin님의 세련된 말솜씨가 돋보이는 발표였는데, 덕분에 Groovy/Grails에 대한 내용을 쉽게 파악할 수 있어 좋았다. Groovy는 자바의 스크립팅 언어 지원 정책과 관련해서도 유심히 지켜봐야할 언어일듯 싶다.

아쉽게도 저녁에 다른 약속이 잡혀있어 끝까지 참석하지는 못했지만, 다른 분들의 후기와 발표자료를 읽어보니 모두 유익하고 흥미로운 발표였던 것 같다.

다소 아쉬웠던 점은 아무래도 발표가 중심이다보니 토론이 쉽게 이루어지지는 않는 면이 있었다. 다음부터는 세미나 주제를 두어개로 고정해서, 조금 더 토론 중심적인 모임을 가져보면 어떨까하는 생각도 든다.

Posted in  | Tags , , ,  | 11 comments | no trackbacks