API

Application Programming Interface의 약자.

1 소개[편집]

API.png

API를 해석하자면 Application Programming Interface, 즉 프로그램을 제작할 때, 그래픽 카드나 네트워크 카드, 운영체제, 컴퓨터 파일 같은 프로그램 밖에 있는 것들에 접근하기 위해서 만들어진 함수와 구조체, 혹은 클래스의 집합을 말한다. API는 해당 함수나 클래스가 어떠한 동작을 하는 지를 프로그래머에게 공개한다. 이를 사양(Specification)이라고 한다. 그러면 프로그래머는 이 사양을 보고 프로그램을 제작한다. 해당 함수나 클래스에서 실제로 무슨 일을 하는지는 신경쓰지 않아도 된다.

가령 DirectX의 경우 엔비디아의 그래픽 카드든, AMD의 그래픽 카드든 프로그래머는 (이론상) 신경쓰지 않고 DirectX의 클래스와 함수만을 호출하여 화면에 3D 모델을 그릴 수 있다. 이때 엔비디아와 AMD가 DirectX의 사양에 따라 DirectX의 실제 동작을 만드는 것, 동작을 구현(Implementation)이라고 한다.

대표적인 API는 유닉스의 POSIX 표준, 윈도우의 MFC나 Win32, DirectX, OpenGL, C++의 Standard Template Library(STL), Java API 등이 있다.

2 API의 예[편집]

이렇게 API의 경우 응용프로그램 제작자에게 복잡한 하드웨어나, 소프트웨어의 조작을 함수와 구조체, 혹은 클래스로 제어할 수 있게 하기 때문에 직접 조작하는 것보다 더 편해지고 쉬워지며 프로그램 제작 시간을 단축시키며 노동량을 줄인다.

그리고 프로그램에서 플러그인을 지원하기 위해서 API를 설계하는 경우가 있는데, 이 경우 플러그인이 API에 맞춰 제작되면 프로그램의 별도의 수정 없이 프로그램의 기능을 추가할 수 있다. 대표적으로 웹 브라우저인 인터넷 익스플로러, 파이어폭스, 크롬플러그인, 애드온이 있다.

또한 단순히 컴퓨터 안에서의 조작을 제공하는 것만이 API가 아니고 원격으로 서버에 접근하여 서버를 조작하거나, 데이터를 요구하는 것 또한 API라고 하는데 SOAP이나 RESTful같은 API을 구현할 때 가이드? 같은 존재가 있다.

API의 예를 또하나 들어 보면 C언어에서 터미널·명령프롬프트에서 Hello, World!라는 문자열을 출력하는 프로그램을 만든다고 하였을 때, printf함수를 사용하여 출력을 할 것이다. printf함수는 C언어 표준 라이브러리에서 문자열을 출력한다라는 기능이 정의되고 그것을 본 프로그래머는 윈도우나 리눅스나 맥등 각양각색의 운영체제에서 printf함수의 안을 어떻게 만들었는지는 신경쓰지 않고 printf함수가 문자열을 출력한다는 기능을 사용하는 것이다.

3 API와 라이브러리, SDK, 프레임웍의 차이[편집]

  • API는 인터페이스, "이 클래스는 이런 역할을 하고 이 구조체는 이럴 때 사용해야 하고 함수는 이렇게 동작할 것입니다"라는 것을 규정한 것이다.
  • 라이브러리는 단순한 함수나 클래스의 집합이다. 따라서 라이브러리는 API에서 규정된 클래스나 함수 내부가 구현된 경우도 있다.
  • 프레임워크는 라이브러리처럼 함수나 클래스의 집합이라는 점에서는 동일하나 프로그램 전체의 관리가 프로그래머가 아니라 프레임워크에게 있다. 건축으로 비유하자면 라이브러리의 경우, 설계도와 가구와 자재가 있고 직접 집을 지어 안에 가구를 넣고 집을 완성하는 것이지만, 프레임워크는 이미 집의 뼈대가 완성되어 있는 상태에서 내부인테리어를 하여 집을 완성하는 것이다.
  • SDK는 Software Development Kit의 약자로서 API보다 좀 더 범위가 넓으며, 라이브러리나 프레임워크를 포함하는 경우가 많다.

4 각주