혁신적인 애플리케이션은 색다른 스크립트 언어에서 나온다.
다이노소어(Dinosaur)와 같이 공룡이 등장하는 디지털 영화가 사람들의 상상력을 사로잡을지도 모르지만, 월트 디즈니 피쳐 애니메이션(WDFA: Walt Disney Feature Animation)에서는 대부분의 작품을 1937년에 백설공주를 만들 때와 같은, 전통적인 방식으로 만들고 있다. 수 백 명의 아티스트들이 수백만장의 이미지를 손으로 그려서 완전한 작품을 만들어 내기 위해서 5년 가까운 시간을 보내고 있다. 지금까지 변해 왔고, 지금도 변하고 있는 것은, 프로덕션 과정이 컴퓨터화 된다는 것이다. 그리고 그러한 영역에서 WDFA는 파이썬(Python)을 새로운 애플리케이션으로 사용하고 있다.
WDFA는 펄(Perl)을 많이 사용해 왔다. 하지만 펄에는 몇 가지 단점이 있어서, 소프트웨어 부서는 회사의 새로운 프로젝트를 실시할 때에 펄 이외의 스크립팅 언어를 찾게 되었다. WDFA의 선임 소프트웨어 기술자인 브렌트 벌리(Brent Burley)는, 파이썬은 비교적 쉽고 영속성이 있을 뿐 아니라, 객체 지향적인 특성이 있어서 펄보다 훨씬 이점이 있다는 것을 발견했다. "내가 파이썬을 처음 평가한 이래로, 파이썬에서는 안정성 문제가 없었고, 파이썬이나 API는 내가 원하는 대로 잘 돌아갔다." 라고 그는 말했다.
1982년 트론(Tron)이나 1985년 검은 솥(Black Cauldron)을 만든 이후로 디즈니는 애니메이션을 만들 때 컴퓨터를 사용하였다. 오늘날 디즈니 애니메이션은 SGI 아이릭스, 썬 솔라리스, 리눅스, 윈도우 NT, 맥 OS를 구동하는 워크스테이션을 갖춘 상당히 바쁜 작업이 되었다. "그리고 우리는 끊임없이 다른 플랫폼들을 평가해 보고 있다." 라고 벌리가 말했다. 그와 WDFA의 소프트웨어 그룹에 속한 다른 기술자는 2-D와 3-D의 애니메이션 도구를 다양한 작품에 사용하기 위해 만들며, 어떤 특정한 작품에서만 필요한 소프트웨어를 만들기도 한다.
지난해에 벌리와 그가 속한 팀에서는 차세대 WDFA의 애니메이션 제작 시스템을 구축하기 시작했다. 손으로 그린 그림을 스캔하는 거대한 애플리케이션과 연필로 그린 선을 디지털 잉크로 표시하고, 캐릭터들을 색칠하고, 카메라의 움직임을 생동감 있게 하고, 효과를 덧붙이고, 최종 창작물을 만드는 등의 일 말이다. 그들은 일단 프로젝트를 성공적으로 마치면, 그들이 WDFA의 다양한 프로덕션 부서에 맞게 적합한 모듈을 갖춘 애플리케이션을 만들 수 있을 것이라고 기대했다.
디즈니에서 선택한 파이썬
벌리 팀이 새로운 애플리케이션을 결정할 때 중점적으로 봤던 것 중의 하나는 "스크립트 작성 가능성"이었다. 스크립트를 작성하면 애플리케이션이 동적으로 설정되고 확장될 수 있도록 할 뿐만 아니라, 재빨리 프로토타입을 작성할 수 있으며, 경우에 따라서는 애플리케이션의 일부분을 재빨리 배치하는 것을 가능하게 한다고 벌리는 말한다. 벌리는 펄의 열성적인 팬이지만, 이러한 특정한 일을 하는 데에는 펄이 적합하지 않다고 생각하였다.
WDFA는 펄을 많이 사용해 왔다. 하지만 펄에는 몇 가지 단점이 있어서, 소프트웨어 부서는 회사의 새로운 프로젝트를 실시할 때에 펄 이외의 스크립팅 언어를 찾게 되었다.
그는 다음과 같이 설명하였다. "임베디드 펄에는 안정성 문제가 있었고, 펄과 C++ GUI를 통합하는 것도 생각만큼 잘 되지 않았다. 우리는 Xt/Motif로 많은 것을 만들었고, 나는 Perl/Tk와 Motif를 동일한 애플리케이션으로 혼합할 수 있는 능력을 원했다. 파이썬을 사용하면, 더 깨끗하게 이식할 수 있을 것 같았고, 내가 원했던 GUI 통합을 얻을 수 있을 것 같았다."
파이썬 튜토리얼을 얼마 동안 익힌 후에, 벌리는 파이썬의 임베디드 API를 직접 사용해 보았는데, 파이썬이라는 스크립팅 언어는 그의 마음에 쏙 들었다. 그래서 그는 그것을 사용하겠다는 허가를 받을 방법을 모색해 보기로 했다. 디즈니는 상당한 양의 오픈 소스 소프트웨어로 작업을 하기 때문에, 회사에서는 최근 소프트웨어 라이선스를 검토하는 과정을 단순화 하였다. 그래서 벌리는 파이썬 및 관련 패키지를 즉시 사용할 수 있었다.
스크립팅의 힘
파이썬은 벌리의 새로운 프로덕션 애플리케이션으로서 완벽했다. "우리는 파이썬 콘솔 윈도우를 애플리케이션 컴포넌트의 하나로 구현했다. 그리고 이것은 디버깅에 큰 도움이 되었다. 우리보다 더 기술에 의존하는 사용자들에게는 매우 유용할 것이다. 우리는 또한 회귀 검사(regression test)를 작성하고 실행하는 데 스크립트의 특성을 사용하였다. 그리고 스크립팅 시스템의 장점은, 사용자에게 적용되는 애플리케이션의 확장과 패치가 쉽고 빨라서, 소프트웨어의 새 버전을 만들 필요가 없다는 점이다. 스크립팅 시스템을 사용하면, 애플리케이션 확장과 패치가 소프트웨어의 새 버전을 만들 필요 없이 사용자들에게 쉽고 빠르게 응대될 수 있게 한다. 우리에게 사용자들의 반응은 매우 중대하다.
역주 : regression test ? 회귀 검사, 프로그램이 확장되거나 또는 정정될 때마다 이미 증명된 프로그램에 대해 수행하는 검사
벌리는 C++과 파이썬 코드를 깨끗하게 통합하는 데에 성공하였다. 다양한 애플리케이션 모듈을 위한 실물 크기의 모형과 원형을 만드는 것과 더불어, 그의 팀은 어떤 부분에서는 파이썬이고 어떤 부분에서는 C++인 하이브리드 모듈을 가지고 실험하였다. 벌리는 사용자들이 언어 중립적인 방법으로 인터페이스를 정의할 수 있고, C++ 기반의 클래스를 인터페이스로부터 생성해 낼 수 있는 메시징 라이브러리를 개발하였다. 그 인터페이스 파일은, 런타임에서 읽어들일 수 있어서, 객체는 파이썬에서 접근이 가능하다. "SWIG(C++ 헤더로부터 파이썬 바인딩을 생성하는 인기있는 툴)와는 달리, 우리의 라이브러리를 사용하면 파이썬으로 C++ 객체에 접근할 수 있는 만큼 쉽게 C++객체에서 파이썬 객체에 접근할 수 있다. 사실, 당신은 객체를 다룰 때에 그것이 C++에 이식되어 있는지 파이썬에 이식되어 있는지는 상관이 없을 것이다." 라고 벌리는 말했다.
이 새로운 생산 시스템은, 스크립팅이 애플리케이션에서 핵심이 되는 WDFA에서, 처음으로 한 프로젝트이기 때문에 주목을 받기 시작했다.
그는 또한 그의 동료들이 성능에 치명적인 해를 끼치지 않는 한도 내에서 많은 서비스 모듈을 파이썬에 완전히 이식할 수 있을 것이라고 생각한다. "나는 우리가 작업을 끝마쳤을 때, 우리의 애플리케이션이 많은 점에서 새로운 지평을 여는 것이 되기를 바란다. 그것을 사용하면 틀림없이 우리의 전통적인 애니메이션 부서의 수행 능력이 높아질 것이다."라고 벌리가 덧붙였다.
툴박스의 일부분
벌리는 여러 가지 이유로 파이썬에 만족했다. 하지만 새로운 기술을 배워야 한다는 것 때문에 일이 지연되었다는 난점이 있기는 했다. 파이썬의 표준 배포로 공급되었던 부가적인 모듈은 다양했지만, 벌리의 팀은 Tkinter와 PMW만을 새로운 프로덕션 시스템으로 사용하였다. 프로젝트를 하고 있지 않을 때에는, Imaplib, rfc822, tkinter python 모듈을 사용한 75줄 짜리 메일박스 모니터 프로그램인 mailwatcher를 포함하여 파이썬에 대해 여러 가지로 공부하기 시작했다.
WDFA의 벤치마크 프로덕션 시스템에 대해 말하자면, 이 새로운 생산 시스템은, 스크립팅이 애플리케이션에서 핵심이 되는 WDFA에서, 처음으로 한 프로젝트이기 때문에 주목을 받기 시작했다.
벌리가 파이썬을 사용하기 시작한 후에, WDFA에 속한 다른 팀들도 그 스크립팅 언어를 사용하여 좋은 결과를 얻었다. "파이썬은 우리 툴박스의 중요한 부분으로 남아있을 것이다. 우리는 C++과 자바, 펄, 그리고 다른 언어들도 계속 사용하겠지만, 파이썬은 계속 자리를 지킬 것이다."라고 벌리가 언급했다.
한빛과 오라일리에서 출간한 파이썬 관련 도서입니다.