루비 컨퍼런스 2006 후기

Posted by 大山 Fri, 27 Oct 2006 19:42:00 GMT

지난 며칠간 루비 컨퍼런스 참석차 미국 덴버에 다녀왔다. 덴버는 나중에 여행만을 위해 다시 찾고 싶을 만큼 무척 아름다운 도시였다는 생각.

다른 컨퍼런스에서는 보통 세션 3-4개가 동시에 진행되기 마련인데, 루비 컨퍼런스는 단일 트랙으로 구성되어 있었다. 참석자 모두가 동일한 경험을 공유하기 위해서라는데, 그것보다도 쉬는 시간에 여유롭게 사람들과 이야기를 나눌 수 있어 좋았다. 컨퍼런스룸이 가로로 길고 좌우 양쪽으로 프로젝터가 설치되어 있어서 그런지, 300명이 넘는 참석자에도 불구하고 비교적 아담한 느낌.

첫날은 타카하시상의 "루비의 역사" 발표와 Evan Phoenix의 Rubinius 발표를 재미있게 들었다. 가장 흥미로웠던 내용은 일본 개발자들이 영어를 잘 못해서 파이썬보다 루비에 관심을 가지게 되었고, 덕분에 루비가 발전할 수 있었다는 점. 이런 경우엔 영어를 못하는 것이 유리할수도 있겠다는 생각이 들었다. Rubinius는 뒤에서 설명.

두번째 날에는 흥미로운 발표가 많았는데, 개인적으로 가장 좋았던 발표는 Nathaniel Talbott의 "Open Classes, Open Companies"였다. Nathaniel은 루비 컨퍼런스 2005의 "Rails: Serving the long tail in 1883 and 2005", 레일스 컨퍼런스 2006의 "Homesteading: A Thriver's Guide"에 이어 역시나 많은 영감을 주는 이야기를 들려주었다. 대략적인 내용은 루비의 동적 특성, 간결성, reflection, 개방성 등을 사업에 그래도 적용하자는 것. 상당히 공감이 가는 내용이었는데, 재미있는 것은 발표 후에 누군가가 그런 형태의 사업은 확장성(Scalability)에 문제가 있지 않겠냐는 질문을 했다는 점이다. 루비를 처음 접하는 사람 중에도 종종 확장성은 어떠냐며 괜한 걱정을 하는 경우가 있지 않은가. 경쟁력있는 사업을 만드는 것이 우선이지 단지 사람수를 늘리는 것이 중요한 것은 아닐텐데 말이다.

또다른 재미있는 발표로는 애플의 개발자인 Laurent Sansonetti의 "Leveraging Mac OS X from Ruby"를 꼽을 수 있다. 이 발표는 Laurent가 개발하고 있는 RubyOSARubyCocoa에 관한 내용이었다. RubyOSA는 기존의 AppleScript를 루비로 대체하는 라이브러리로, 맥 OS X의 GUI 애플리케이션을 루비로 스크립팅할 수 있게 해준다. 예를 들면, 포토샵을 시작하여 어떤 폴더에 있는 이미지를 모두 열고, 이를 특정 사이즈로 리사이징 하는 작업을 모두 루비로 자동화할 수 있다. Laurent는 irb에서 루비 코드만을 사용하여 iTunes를 시작하고, 특정 노래를 플레이하고, 볼륨을 조정하는 데모를 보여주었다. 모두들 환호했던 것은 물론이다. 개인적으로 AppleScript의 신택스에 불만이 많았기에 무척 반가운 소식이었다. 혹시 RubyOSA를 설치하실 분은, 먼저 루비를 1.8.5로 업그레이드 하도록. RubyCocoa는 뒤에서 설명.

가장 논란이 된 발표는 XML의 공동 창시자인 Tim Bray의 "I18n, M17n, Unicode, and all that" 발표였던듯 싶다. 결론만 요약하면, 자신은 썬마이크로시스템즈에서 근무하지만, 최근에 루비 팬이 되었다. 루비의 유니코드 지원은 아직 완전하지 못하다. 어떻게든 루비에서 유니코드 지원이 빨리 이루어졌으면 좋겠다 정도였던 것 같다. Tim의 의도는 아니었겠지만, 그의 발표는 유니코드의 취약점을 잘 드러내기도 했다. Tim은 유니코드 문자열에서, capitalize, upcase, downcase 등의 메소드를 지원하는 것은 위험하다고 주장했다. 영어 알파벳만 놓고 보면 모르지만, 전세계 charset이 모두 포함된 유니코드에서는 대소문자의 구별이 규칙적이지 못하기 때문이라는 것이다. 유니코드는 이처럼 모든 charset을 동시에 다룰 수 있는 장점이 있는 반면, 개별 charset에만 적용되는 메소드는 지원하기가 어중간하다는 단점이 있다. 나는 이런 이유 때문에라도 루비 2.0에서처럼 문자열마다 인코딩을 별도로 지정하는 방식이 모두에게 유니코드를 강요하는 방식보다 더 유연할 것이라고 지적했는데, Tim은 그다지 수긍하고 싶어하지 않는듯. 아무튼 Tim의 발표로 인해 컨퍼런스 내내, capitalize는 위험한 메소드라는 농담이 끊이질 않았다.

둘째날 저녁식사 후에는 Matz의 기조연설이 있었다. Matz는 루비 1.9.1이 2007년 크리스마스에 릴리즈될 것이라고 선언을 했다. 기조연설의 주요 내용은 커뮤니티가 루비 2.0의 설계에 보다 활발하게 참여할 것을 요청하는 것이었다. 각종 제안을 수렴하고 논의하기 위한 별도의 웹 사이트가 곧 만들어질 예정이라고 한다. 새로운 웹 사이트가 만들어지면, 개인적으로도 열심히 참여해야겠다는 생각.

마지막 날에는 코이치상의 Yarv 발표, 그리고 John Lam의 RubyCLR 발표를 관심을 가지고 들었다. 이제 Yarv는 왠만한 루비 프로그램은 다 잘 실행하는 단계가 되었다고 한다. 코이치상은 Yarv에서 레일스가 실행되는 것을 시연하였고, 모듈에 따라 Yarv의 실행속도가 최고 20배까지나 빨라졌다는 벤치마크를 공개하였다.

한가지 흥미로운 점은 루비의 실행환경이 부지기수로 늘어나고 있다는 것. 공식 루비 실행환경인 루비 1.8Yarv 이외에도 JRuby, RubyCLR, Ruby.NET, RubyCocoa, Rubinius 등이 모두 현재 활발하게 개발되고 있는 루비의 실행환경이다. JRuby는 자바로 구현된 루비 실행환경으로 루비에서 자바 클래스를 사용할 수 있도록 해준다. 일종의 루비/자바 브릿지 역할을 한다고도 볼 수 있는데, JRuby의 메인 개발자인 Charles Nutter는 곧 JRuby가 루비 코드를 자바 바이코드로 컴파일하는 기능도 갖추게 될 것이라고 했다. JRuby 프로젝트는 최근에 썬마이크로시스템즈에 인수되기도 했는데, 썬도 자바의 언어적 한계를 인정하고 점차 JVM을 범용 가상머신으로 재포지셔닝하고 있다는 느낌이다.

RubyCLR은 일종의 루비/.NET CLR 브릿지로 루비에서 C# 클래스를 접근할 수 있도록 해준다. RubyCLR을 사용하면, 루비로 윈도우 GUI 프로그래밍을 할 수 있다는 얘기. 컨퍼런스 중에 RubyCLR 프로젝트 역시 마이크로소프트에서 인수한다는 발표가 있었다. 마이크로소프트가 썬의 JRuby 인수에 자극을 받은건 아닐지. :) Ruby.NET은 RubyCLR보다 한걸음 더 나아가 루비 코드를 CLR 바이트코드로 컴파일해주는 독자적인 루비실행환경이다. 마이크로소프트가 Ruby.NET 대신 RubyCLR을 인수한 것은 다소 의문이지만, nohmad님이 답글에서 지적하신대로 Ruby.NET이 대학교 연구실에서 진행하는 프로젝트라 그럴수도 있겠다는 생각이 든다.

RubyCocoa는 루비로 맥 OS X의 Cocoa 클래스를 사용할 수 있게 해주는 루비/Objective-C 브릿지 라이브러리이다. JRuby나 Ruby.NET처럼 독자적인 루비 실행환경은 아니지만, 기존 루비의 실행환경에서 맥 OS X GUI 프로그래밍을 가능하게 해준다는 면에서 개인적으로는 더 선호하는 방식이다. Laurent에 따르면, 애플은 맥 OS 10.5 Leopard를 RubyCocoa와 RubyOSA를 포함한 통합 루비 프레임워크를 번들하여 출시할 예정이라고 한다.

Rubinius는 일종의 대안 루비 실행환경이라고 볼 수 있는데, 코드베이스를 보다 간소화하고, C 코드를 직접 작성하는 대신 루비로 루비 가상머신을 구현한 다음, 루비 코드를 C 코드로 변환하는 방식을 사용하여 개발하고 있다고 한다. 마지막으로 구글 Summer of Code 프로젝트 중에는 핸드폰(Symbian OS)에 루비를 컴파일하는 Ruby-Symbian 프로젝트도 있었다고 한다. 자바, 윈도우, 맥 OS X, 그리고 핸드폰에서 모두 루비를 지원하다니, 상당히 고무적이라는 생각. :)

추가적으로 궁금한 사항은, 답글로 질문주시길.

업데이트: nohmad님이 답글에서 지적하신대로 RubyCLR은 루비 런타임 환경이 아니라, Ruby/.NET CLR 브릿지 라이브러리였습니다. 본문 내용을 이에 맞게 수정합니다.

Posted in  | Tags ,  | 15 comments | no trackbacks

루비 컨퍼런스 2006 등록 마감

Posted by 大山 Thu, 03 Aug 2006 08:36:00 GMT

오늘 아침에 루비 컨퍼런스 2006의 등록이 시작되었다는 rss feed를 확인하자마자 서둘렀는데도 등록을 못했다. 250석이 4시간만에 동났다고 한다. 레일스 컨퍼런스 2006의 등록이 1주일만에 마감된 것에 이어 새로운 신기록일듯.

업데이트: 대기자 명단에 올라 있다가 5일만에 등록 성공. :)

Posted in  | Tags ,  | no comments | no trackbacks