E D R , A S I H C RSS

Processing

last modified: 2014-12-09 03:53:31 by Contributors


Contents

1. 개요
2. 특징
3. 프로세싱 2
4. 안드로이드 지원에 대해
5. 커리큘럼이 개설된 교육기관
6. 참조항목


1. 개요


미디어아트 및 교육용 언어 지향의 오픈소스 프로그래밍 언어. 라이센스는 GPL, 라이브러리 라이센스는 LGPL을 따르고 있다.

MIT 미디어 연구소 소속의 Casey Reas와 Ben Fry가 개발하여 2001년 처음 공개하였다. 알파, 베타 과정을 꽤 길게 거쳤으나, 이미 그 단계에서 미디어 아트 지향의 여러 교육기관에서 널리 사용되고 있었으며 1.0 버전은 2008년 11월에 공개되었다. 초창기에는 'Proce55ing'이라는 특이한 철자를 썼었는데(leet로 S와 5의 형태적 유사성을 이용) 이것은 processing.org의 도메인이 선점되어있어서 proce55ing를 쓸 수밖에 없었기 때문이었다는 듯(...). 현재는 Processing 쪽이 공식 표기이며 도메인도 processing.org를 사용한다(proce55ing.org로 들어가면 processing.org로 포워딩된다).

2. 특징


기본적인 아이디어는 과거 두 개발자가 소싯적에 사용했었던 Logo[1]BASIC이 간단한 명령 몇 줄로 그림을 그리거나 사용자와 상호작용 할 수 있는 프로그래밍 환경을 제공했던 데서 착안했다고 하며, Processing과 유사한 목적으로 만들어진 John Maeda[2]의 'Design By Numbers'의 영향도 크게 받았다고 한다. 실제로 인터페이스 등이 DBN과 유사하다.

언어 자체의 문법은 기본적인 것은 자바에서 거의 그대로 가져왔지만 문장의 사용이 훨씬 단순화되어있는 것이 특징. 자바의 OOP 개념도 가려서 보이지 않게 해두어 소스를 얼핏 보면 C와 같은 절차형 프로그래밍 언어처럼 보인다.[3] OOP 개념이 오히려 초심자에게는 벽으로 작용한다고 판단한 듯 하다.

특히 간단한 명령(함수) 몇 줄만으로 시각적 표현이 가능한 것이 장점이다. 심지어는 3D 그래픽스나 영상 제어등도 그다지 어렵지 않게 구현 가능하다. 덕분에 비교적 프로그래밍에 전문성이 높지 않은 미디어 아티스트의 작업 및 디자이너의 프로토타이핑에 주로 활용되며, 언어 자체의 진입장벽이 비교적 높지 않아 취미 지향의 프로그래밍 초심자가 프로그래밍이라는 개념을 처음 익히기에도 적합한 편이다. 실제로는 자바를 래핑해서 돌아가는 구조이기 때문에 문법이나 언어의 상세 기술은 거의 자바의 그것을 그대로 따르고 있으며 컴파일한 결과물은 자바 가상머신에서 실행된다. 따라서 자바 애플릿 등으로 내보내서 웹에 작업물을 공개하거나 하는 것도 가능하다.

자바로 만들어진 심플한 자체 IDE를 제공하지만 기본적으로 자바를 래핑한 언어이므로 원한다면 이클립스와 같은 외부 IDE를 이용할 수도 있다. 물론 이 경우에는 자바에서 프로세싱의 pApplet 클래스를 가져다 쓰는 형식이 되므로 정식 프로세싱 코드와 완전히 동일하게 코딩할 수는 없고, 자바 프로그래밍에 대한 기초적인 지식 정도는 있어야한다.

국내에서는 디자인 및 예술 계통 학과의 커리큘럼 중심으로 보급되어 있지만 그 외의 사용은 매우 저조한 편. 사실 그쪽 전공자라거나 미디어 아트 작업이라도 하지 않는 이상 이걸로 할 만한 게 별로 없다[4]. 이쪽(디자인/예술 계열) 전공이 아닌 이상 이런 언어가 있는지 아무도 모른다. 심지어는 컴퓨터공학을 전공한 전문가들조차도 프로세싱에 대해 이야기하면 그게 뭐냐고 반응할 정도. 안습.

디자인/예술 관련 학과의 커리큘럼이라는 측면에서 보자면 컴퓨터에 익숙하지 않은 디자인/예술 계통 전공 학부생들에게 액션 스크립트와 함께 충격과 공포를 안겨주는 존재. 사실 학교 올 때까지(아니 입학한 뒤에도 상당기간) 자기가 학교에서 프로그래밍을 배우는 일이 생길 거라고 생각하는 미대생은 거의 없다. 디자이너도 프로그래밍 배워야 되는 더러운 세상 다만 이것은 학교에 따라 커리큘럼 차이가 커서 이런 게 있는지도 모르고 행복하게 졸업하는 학교도 많다.

덕분에 국내에는 독학할 만한 자료도 거의 없다시피 했지만 2011년부터 하나 둘씩 외국 서적들이 번역되는 움직임을 보이고 있다. 책이 나오기 전에는 학교나 문화강좌 커리큘럼 아니면 웹을 통해서 독학하는 것[5] 정도가 거의 유일한 루트였다.

시망 수준의 인지도를 달리는 국내사정과 달리 해외에서는 의외로 좀 인지도가 있는 편이라[6] 다양한 라이브러리를 찾아볼 수 있으며 트러블 슈팅도 오피셜 사이트의 포럼을 중심으로 그럭저럭 활발한 편이다. 프로세싱을 가지고 Wii 리모컨이나 키넥트 같은 것을 다룰 수 있는 라이브러리도 있고보면 미디어 아트 작업에 필요한 라이브러리는 상당히 충실하게 갖추어져 있음을 알 수 있다. 정말 웬만한 라이브러리는 다 있다고 해도 과언이 아니다. 문제는 영어울렁증 2012년 들어서는 프로그래밍 언어 점유율 집계에서도 50위권 밖이지만 집계에 잡히기 시작하고 있는 것으로 보아 나름대로 사용자가 늘고 있는 추세인 듯.

프로세싱의 사용사례로, 뇌졸중으로 인해 언어기능에 장애가 생긴 어머니를 위해 키넥트와 프로세싱을 이용해 메일을 보낼 수 있는 시스템을 구축한 사례가 있다. 상세한 설명은 http://isao76.egloos.com/2350522을 참조. [7]

파생 프로젝트로 Arduino가 있다. 이쪽은 AVR 기반의 임베디드 프로그래밍 환경.

3. 프로세싱 2


2011년부터 2.0 버전이 개발되기 시작하여 알파, 베타 테스트를 거쳐 2013년 6월에 2.0 정식버전이 발표되었다. 정식버전으로 오면서 아이콘, 로고, IDE 디자인 등이 일신되었고 사이트도 리뉴얼되었다. 2.0과 구버전과의 기본적인 호환성은 크게 문제가 없는 듯하나 일부 클래스가 삭제, 변경된 부분이 있고 종종 구버전용의 라이브러리가 문제를 일으키는 경우도 있다고 알려져 있으며. 렌더러가 변경되면서 화면 출력이 아주 미묘하지만 다르게 나오는 경우가 있어 같은 소스를 컴파일 했을 때 100% 동일한 결과가 나온다고 보장할 수 없다. 이런 문제로 인해 부득이하게 1.5.1 버전을 계속해서 사용해야 하는 경우도 드물게 생기는 듯.

2.0 버전의 대체적인 개선 사항은 이하와 같다.
  • OpenGL 지원 강화 : OpenGL 라이브러리 자체가 리뉴얼 되기도 하였고, 기존의 소프트웨어 렌더링 기반의 P2D, P3D 모드는 아예 제거되어 이들 역시 OpenGL 렌더러를 사용하게 되었다. 렌더러가 바뀐 덕분에 특정 코드의 경우 미묘하게 표현이 달라지는 경우가 있다.
  • 자바스크립트 모드의 추가 : 결과물을 기존의 JVM이 아닌 자바스크립트 기반으로 내보낼 수 있다. 이 기능으로 인해 제작한 스케치를 쉽게 웹으로 공유할 수 있게 되었다. 실은 기존에 있던 processing.js라는 파생 프로젝트의 결과를 피드백한 것. 다만 한계는 있어서 기존 JVM 모드의 모든 기능을 사용할 수 있는 것은 아니다.
  • Video 라이브러리의 완전 교체 : 퀵타임에 의존하는 1.5.1 버전까지의 Video 라이브러리를 버리고 GStreamer[8] 기반의 새로운 라이브러리로 완전히 리뉴얼하였다.
  • XML 지원 강화. XML이라는 새로운 클래스가 기존의 XMLElement 클래스를 대체하게 되었다.
  • Table 클래스의 추가. .CSV등의 테이블 포맷을 직접 프로세싱에서 다룰 수 있게 되었다. 실제로 사용해보면 뭔가의 데이터를 저장해서 입출력하는 작업을 할때 굉장히 편리하다.
  • 64비트 지원 강화. 맥OS버전의 경우 아예 옵션에서 32비트와 64비트를 설정이 가능하다. 윈도 버전의 경우는 예전과 동일하게 별도의 바이너리로 제공.
  • 자바 애플릿 지원 삭제. 애플릿 자체가 요즘은 잘 사용되지 않는 것도 있고 자바스크립트 모드 지원으로 인해 웹공개가 쉬워졌으므로 더 이상 필요없다고 판단한 듯 하다. 하지만 자바스크립트 모드의 호환이 완전치 않다는 점을 생각하면 약간 아쉬운 점.
  • MovieMaker 클래스 삭제. 프로세싱으로 만든 스케치 실행 화면을 동영상으로 만드는 기능이었는데 퀵타임에 의존하는 기능이라서 잘렸다. 대신 MovieMaker 툴이 IDE에 내장되도록 변경되었다.

이 외에도 자잘한 변화 및 개선점이 상당히 많다. 이 중 가장 반길만한 변화는 동영상 및 웹캠 관련 표준 라이브러리인 Video 라이브러리의 리뉴얼. 구버전인 1.5.1까지는 애플퀵타임 플레이어의 기능에 의존하는 구조였는데, Mac OS X의 경우에는 별 문제가 되지 않지만 윈도우즈에서는 매우 문제가 심각하다. 왜 문제가 심각한지는 퀵타임 플레이어 항목을 보면 상세히 나오지만, 프로세싱 때문에 퀵타임 설치하고 MIME 타입 다 꼬이는 경험을 하고 나면 애플의 만행에 이를 갈게 된다(...). 더욱 더 흉악한 것은 QT Lite나 퀵타임 얼터너티브 같은 변종버전으로 우회도 불가능했다는 것. 윈도 사용자 다 죽게 생겼다 이놈들아 엎친데 덮친 격으로 퀵타임이 없는 리눅스는 그냥 쿨하게 Video 라이브러리가 지원이 안됐었다. 아놔 오픈소스라면서 리눅서 무시하나여

이런 문제 때문에 GStreamer 기반의 외부 라이브러리인 GSVideo라는 것을 사용하는 사람이 많았는데, 프로세싱 2.0에서 리뉴얼된 Video 라이브러리가 바로 이 GSVideo의 개량버전. 덕분에 퀵타임 같은 멀웨어 설치를 하지 않아도 동영상/웹캠 관련 기능이 사용가능해졌으며 드디어 리눅스에서도 Video 라이브러리를 사용할수 있게 되었다. 부수적인 효과로 mov 파일만 지원하던 구버전보다 지원하는 포맷도 크게 늘었다. 다만 일부 사용자의 경우 GStreamer가 문제를 일으켜서 이유없이 에러를 뱉으며 Video 라이브러리를 사용할 수 없는 경우가 있는데 제작자 역시 이 문제를 알고 있는 듯 하지만 FAQ에는 해결책 추가예정(...)이라고만 써있고 해결책이 나와있지 않다. 뭠미...

2013년 10월에 공개된 2.1버전에서 IDE의 폰트를 직접 설정할 수 있는 기능[9]이 들어가면서 소스파일에 있는 한글 주석이 깨지는 현상이 발생한다. 환경설정에서 폰트를 굴림체 등의 한글이 지원되는 폰트로 바꾸면 깨지는 문제는 해결되기는 하는데, 이번에는 한글 자간이 반각 단위로 출력되면서 글씨가 서로 겹치는 기괴한 문제가 발생한다(...). 이 문제는 한자 등의 2바이트 전각 문자에서 공통적으로 일어나는 것으로 해당 문제는 개발자인 Ben Fry에게 리포트 되었으니 다음 버전에서는 개선될 것 같다. 그때까지는 이상이 없는 2.0.3 버전을 쓰던지 영문으로 주석을 달자(...). 그밖에도 2.1버전은 Serial 클래스에도 심각한 버그가 있었으나 이 문제는 2.1.1에서 해결. 하지만 전각문자 겹치는 문제는 해결이 안됐다.

사실 문자 입력관계로는 2.0.3 등의 이전 버전에도 문제가 있는데, 프로세싱 2가 되면서 일본어 등의 비알파벳계 문자들의 입력을 IDE에서 지원하는 옵션이 생겼지만 이 옵션을 켜면 윈도판 기준으로 한글의 경우에는 오히려 문자 입력이 꼬이는 기괴한 문제가 발생한다. 옵션을 끄면 1.5 시절처럼 타이핑 중간 과정이 제대로 출력되지 않지만 입력 자체는 제대로 된다. 맥OS판이나 리눅스판의 경우는 추가바람. 프로세싱/아두이노 IDE의 한글입력 문제는 꽤나 고질적인 문제인데 국내에서는 사용자가 적어서 그런지 리포트가 제대로 되지 않는 듯.

4. 안드로이드 지원에 대해


2011년 4월에 공개된 1.5버전부터는 안드로이드 프로그래밍도 지원하기 시작했다. 프로세싱으로 제작한 스케치를 JVM이 아닌 안드로이드의 Dalvik VM에서 구동할 수 있도록 컴파일해주는 기능인데, 추가로 안드로이드 SDK를 설치할 필요가 있다. 아직은 제약이 많은 편이지만 자신이 만든 프로그램이 안드로이드 폰이나 태블릿에서 돌아가는 것을 보면 나름 뿌듯하다. 몇몇 안드로이드 모드 전용 코드가 있기는 하지만 대체적으로는 표준 자바 모드에서와 거의 똑같이 코딩하면 된다.

참고로 구버전인 1.5에서는 안드로이드 모드가 존재는 하지만 사용할 수 없다.. 이런 기괴한 상황이 생긴 이유는 안드로이드 SDK가 업데이트 되면서 예전 버전의 프로세싱과 호환이 되지 않는 부분이 생겼기 때문. 1.5 버전이 처음 등장했을 당시의 SDK에선 제대로 돌아갔었다. 현행 안드로이드 SDK를 이용하는 경우 1.5~2.0a6 버전에서 안드로이드 모드가 정상동작하지 않는다. 안드로이드 모드가 필요한 경우에는 2.0을 쓰자.

참고로 1.5 당시 지원한 버전은 2.1(API 7)과 2.2(API 8)였으나 현재는 2.3.3(API 10) 및 그 이상만을 지원한다. 제작자 입장에서도 아직 사용자가 좀 있는 2.2 정도는 계속 지원하고 싶었는데 만들다보니 상황이 그리 여의치 않았던 모양. 프로요 지원 중단은 현재는 대부분의 사용자가 진저브레드 이상을 사용하기 때문에 큰 문제가 안될지 모르나, 정말 폰이 구려서 프로요에서 진저브레드로 업그레이드를 지원하지 않는다거나[10] 아이폰 등의 비 안드로이드 계열 폰을 사용하는 사람이 프로세싱으로 안드로이드 작업하려고 싼 구형 공기계 중고로 사서 에클레어나 프로요 올려서 잘 쓰다가 진저브레드 업그레이드 지원 안해서 망했어요가 됐다거나 하는 경우는 종종 있는 듯 싶다.

안드로이드 모드 사용에 필요한 조건은 다음과 같다.

  • 프로세싱 2.0a7 이상
  • 안드로이드 SDK 리비전 20 이상
  • 안드로이드 2.3.3 (진저브레드) 이상

5. 커리큘럼이 개설된 교육기관

가나다순으로 추가해주십시오.

  • 고려대학교 교양과목 '데이터로 표현하는 세상' : 중간고사 후에 스크래치와 더불어 Processing을 다뤄볼 기회가 있다. 기본적인 기술을 쉽게 배울 수 있으니 들어볼 기회가 되는 위키러는 한 번 들어보는 것도 나쁘지 않다. 이 강좌는 iTunes U를 통해 무료 제공되니 재학생이 아니라도 들을 기회가 있다.
  • 건국대학교 정보통신대학 컴퓨터공학부에서, 1학년 과목인 '창의적 공학 설계'에서 ASIT과 함께, Processing을 병행하여 가르치고 있다. 수업의 목표는 Processing으로 게임 제작하기.
  • 문지문화원 사이 : 매년 여름, 겨울에 있는 특강인 사이 아카데미에 아티스트를 위한 컴퓨터 프로그래밍 과목이 개설되고 있다. vvvv와 같은 인접 언어나 Arduino 기반의 피지컬 컴퓨팅 강의도 있으니 관심있는 이는 들어보는 것도 좋다. 학교에 적을 두지 않은 경우라면 몇 안되는 교육처라는 것이 이점.
  • 메이크 프로세싱 : 미디어 아트를 위한 공유 커뮤니티로 미디어 스페이스 문과 함께 정기적으로 워크샵을 진행하고 있으며, 프로세싱 포럼을 운영하고 있다. http://makeprocessing.com
  • 서울대학교 연합전공 정보문화학 전공필수 과목 '정보문화기술입문'에서 2012년부터 Processing을 가지고 프로그래밍 코딩의 기초를 가르치고 있다.
  • 서울예술대학 디지털아트과 프로그래밍 과정에서 1학년때 아두이노와 프로세싱을 가르친다. 응용하는 부분도 많고 직접 작품도 만들기에 아마 우리나라에서 가장 프로세싱과 아두이노등의 예술계 언어도구를 많이 쓰는 곳일듯.
  • 성신여자대학교 산업디자인과 2학년 시각미디어 수업에서 프로세싱 언어를 배운다.
  • 숭실대학교의 IT대학 미디어학부에서는 1학년 전필 수업에서 프로세싱 언어를 배울 기회가 있다. 학년이 올라가면서 아두이노와의 연동 등으로 사용을 넓혀가고 있다.
  • 경북 안동시 안동교회 문화센터. 이곳도 학교에 적을 두지 않은 몇 안되는 교육처이다. 지역 대학 컴퓨터 관련 학과 교수인 안동교회 집사 분께서 역시 같은 학교의 대학원생이자 이 교회의 교인인 분과 함께 지도하신다.
  • 연세대학교 원주캠퍼스 - 디자인ᆞ예술학부 - 디지털아트학과에서 전공수업으로 배운다.vvvv와 함께 거의 필수 과목.뱀발로 강좌 이름과 주제는 학기마다 다르지만 모 교수님 강의를 들으면 기본 툴로서 무조건 배우게 된다.(...)
  • 홍익대학교 세종캠퍼스 - 디자인·영상학부 - 커뮤니케이션 디자인 학과와 디지털 미디어 디자인 학과에서 인터랙션 트랙의 전공 수업으로 프로세싱 언어를 배운다.
  • 한국예술종합학교에서는 미술원 예술사(학사과정) - '아티스트를 위한 프로그래밍','인터랙티브아트-프로그래밍' , 미술원 조형예술과 전문사(석사과정) - '그래픽스프로그래밍'등의 전공 커리큘럼을 통해 Processing, Arduino등을 배울수 있다. 미술원 조형예술과 전문사 인터랙티브아트 전공에서는 코딩과 키네틱아트에 대해 더 전문적으로 공부할 수 있다. 영상원 멀티미디어 영상과 예술사, 전문사 - 프로세싱, 아두이노, MaxMSP가 개설되어 있다 근데 영상원 수업은 고정되어있지않고 과목명이 자주 바뀌거나 툴이 바뀐다 학비가 싸다.
* 한국과학기술원 - 산업 및 디자인 학과 -
----
  • [1] LISP에 바탕한 교육용 언어. '터틀'이라는 로봇으로 그림을 그리는 것으로 유명하다.
  • [2] Casey Reas와 Ben Fry의 MIT 미디어 연구소 시절 담당교수였다고 한다.
  • [3] 물론 원한다면 OOP 개념도 적용 가능하다.
  • [4] 능력 여하에 따라 게임 같은 것도 만들 수 있지만 애초에 그런 거 하라고 만든 언어가 아니라서 프로젝트가 커지면 커질수록 답이 안나온다.
  • [5] 오픈소스이고 오피셜 사이트의 튜터리얼이 충실한데다 다행히 외국에서는 나름 정보교환이 활발한 편이라 웹을 통해서 독학하기가 어렵지 않다. 단, 영어를 잘하면.
  • [6] 해외의 인지도도 미디어 아트 계통이 중심이기는 하다.
  • [7] 링크된 본문에는 프로세싱이 언급되어있지 않으나 동영상을 보면 말미에 프로세싱과 SimpleOpenNI 라이브러리를 이용했다는 언급이 있다. SimpleOpenNI는 프로세싱에서 키넥트를 제어하기 위한 라이브러리.
  • [8] 크로스플랫폼/오픈소스로 개발중인 멀티미디어 프레임워크. 그놈 등에서 사용한다.
  • [9] 기존 버전에서도 preferences.txt 파일을 직접 편집해서 설정이 가능하기는 했다.
  • [10] hTC 디자이어 처럼 이런 케이스가 꽤 있다.
Valid XHTML 1.0! Valid CSS! powered by MoniWiki
last modified 2014-12-09 03:53:31
Processing time 0.1024 sec