API의 의미
API 란 Application Programing Interface 입니다. 왜 구지 이걸 따로 설명해야하는지 처음엔 인식하지 않고 있었는데, 직원 교육을 시키다보면 이 개념을 이해하지 못해서 여러 가지 문제가 생긴다는 사실을 알게 되었습니다. 그래서 API 에 대해 보다 깊히 생각해보도록 하겠습니다. 일단 저 API는 3개의 단어가 약자로 구성되어 있습니다. 그 의미를 하나씩 확인해봅시다.
- Application – 이 때 어플리케이션이란 완성된 프로그램을 의미합니다. 또한 동시에 프로그래밍을 해야하는 입장(개발자)에서는 플랫폼을 의미하기도 합니다(근데 그러면 플랫폼도 설명해야하는구나..)
- Programming – 프로그래밍은 우리가 흔히 개발이라고 부르는 프로그래밍이죠. 단지 그냥 프로그래밍이 아니라 어플리케이션 프로그래밍 이란 겁니다. 1번에서 정의한 의미를 그대로 연결하여 설명하면 이미 완성된 프로그램을 프로그래밍 하는 것이란 뜻이 됩니다.
- Interface – 인터페이스란 일반적으로 공개되어 사용할 수 있는 부분을 의미합니다. 당연히 이 때의 의미는 어플리케이션 측에서 제공하는 프로그래밍용 인터페이스란 뜻으로 전부 연결하여 해석해드리면 완성된 프로그램을 프로그래밍하기 위해, 완성된 프로그램 측이 공개하고 있는 부분 이라는 뜻입니다.
위의 설명을 제대로 따라오셨다면 머리 속에 가상머신 같은 단어가 안 떠오르시나요?
이러한 개념을 좀 더 구체적으로 인식하기 위해 플래시 플레이어의 사례를 들어보겠습니다. 일단 플래시 플레이어는 윈도우상에서 작동하는 WIN32 어플리케이션 임에 의의를 제기하실 분은 안 계실 겁니다. 따라서 플래시 플레이어를 하나의 어플리케이션이라고 합시다.
그런데 플래시플레이어가 완성된 어플리케이션임에도 불구하고 그 어플리케이션 위에서 구동되는 swf 라는게 존재합니다. swf 를 제작하는 행위를 어플리케이션 프로그래밍 이라고 합시다. 그렇다면 이 때 어플리케이션 프로그래밍용 인터페이스는 뭘까요?
아마 머릿 속에 액션스크립트가 떠오르시겠지만, 엄밀하게는 swf 파일 포멧 규격입니다. 즉 swf 파일 포멧 규격대로만 작성한다면 어플리케이션인 플래시 플레이어는 이를 구동해줍니다. 따라서 구지 액션스크립트로 swf 를 만들 필요도 없고 mxmlc로 컴파일할 이유도 없습니다.
예를 들어 sswf 프로젝트에서는 g++을 이용해 c++로 swf를 작성할 수 있게 해줍니다. 저도 CDT에서 즐겨 사용하고 있습니다만 아직까지 플10 API를 지원하지 않아 좀 아쉽습니다.
어디 이 뿐인가요, 제가 몇 번인가 언급했던 apparat 에서는 Java 를 통해 swf 를 생성할 수 있게 해줍니다.
그 외에도 haxe야 워낙 유명하니 제가 따로 소개드릴 필요도 없겠죠. 여하튼 플래시 플레이어의 API는 바로 swf 규격입니다. 원래 스펙공개야 여기에서 하고 있지만 사실 더 쓸모있는 문서는 이쪽이겠죠.
Continue reading ‘API에 대해’ »