API란 도대체 무엇인가? API에 대한 나의 생각을 문서화 해보려한다.
API에 대해 알아 보기 전에 우선 UI에 대해 알아보자!
사용자 인터페이스 또는 유저 인터페이스는 사람과 사물 또는 시스템, 특히 기계, 컴퓨터 프로그램 등 사이에서 의사소통을 할 수 있도록 일시적 또는 영구적인 접근을 목적으로 만들어진 물리적, 가상적 매개체를 뜻한다. 사용자 인터페이스는 사람들이 컴퓨터와 상호 작용하는 시스템이다. [위키백과]
UI는 User Interface의 약자이다. 여기서 Interface란 무엇일까? 서로 다른 두 물체간의 접점, 상호작용을 말한다. 즉 UI란 사용자와 시스템간의 인터페이스를 말한다. 예를 들어 우리가 핸드폰을 사용할때 홈 버튼을 눌러 잠금을 풀고 화면을 터치하여 작동을 한다. 여기서 홈 버튼도 UI가 되고 화면 자체도 UI가 될 수 있다. 우리가 컴퓨터를 사용할 때 무엇을 가지고 컴퓨터와 상호작용 하는가? 키보드가 될 수도 있고, 마우스가 될 수도 있다. 이것 역시 UI이다.
API(Application Programming Interface 애플리케이션 프로그래밍 인터페이스, 응용 프로그램 프로그래밍 인터페이스)는 응용 프로그램에서 사용할 수 있도록, 운영 체제나 프로그래밍 언어가 제공하는 기능을 제어할 수 있게 만든 인터페이스를 뜻한다. [위키백과]
응용 프로그램에서 사용할 수 있도록, 운영체제나 프로그래밍 언어가 제공하는 기능을 제어 할 수 있게 만든 인터페이스를 뜻한다.. 말이 어렵다. 쉽게 풀어보자. API란 Application Programming Interface의 약자이다. 위에서 Interface란 서로 다른 두물체간의 접점, 상호작용을 말한다고 했다. 그렇다면 Application Programming은 뭘까? 응용프로그램을 뜻한다. 즉 API란 내가 만들 응용프로그램에서 사용 할 수 있도록 기타 다른 응용프로그램들을 제어 할 수 있게 하는 것을 말한다.
그렇다면 우리는 왜 API를 사용하는가? API를 사용하면 우리가 제어 하고자 하는 시스템의 환경을 정확히 알지 못하더라도 손 쉽게 제어가 가능하다. UI가 사용자와 시스템의 인터페이스 였다면 API는 시스템과 시스템간의 인터페이스라고 할 수 있다. 여기서 시스템이란 간단한 프로그램이 될 수도 있고 웹브라우저가 될 수도, 운영체제가 될 수도, 하드웨어가 될 수도 있다.
우리가 자바스크립트를 통하여 브라우저를 제어 할때 가장 간단한 예로 alert이 있다. alert은 웹 브라우저에 경고창을 발생시키는 역할을 한다. 이 역시 API이다. 자바스크립트를 통해 브라우저를 제어 할 수 있게 한다. 여기서 한가지 의문이 들지 않나? 그렇다면 어떻게 alert라는 간단한 것 하나 만으로 브라우저에서 경고창을 발생 시킬 수 있을까? 우리가 이 alert 을 이용하여 브라우저에 경고창을 발생 시켰을때 이 브라우저에서 경고창을 어떻게 생성했는지 구성환경은 어떤지 아는가? 경고창의 크기는 얼마인지, 글씨체는 사이즈는 어떻게 되는지, 구성 버튼은 어떻게 만들었는지.. 아마 모를것이다. 또한 브라우저 종류마다 구성 환경이 다 다를 것이다.
이제 위에서 말한 문장을 한번 더 보자!
"API를 사용하면 우리가 제어 하고자 하는 시스템의 환경을 정확히 알지 못하더라도 손 쉽게 제어가 가능하다." 우리는 우리가 제어 하고자하는 경고창의 구성환경을 정확히 알지 못하더라도 손쉽게 제어가 가능하다. 즉 이 역시 시스템(JS)과 시스템(Browser)간 의 인터페이스 인 것이다.
또 이번엔 자바스크립트에서만 생각 해보자. 예를 들어 자바스크립트에서 랜덤한 수를 구하려한다. 이를 위해서는 Math객체를 이용해야 하는데이 역시 API다. 이해가 되는가? JS와 Math객체 간의 인터페이스가 이루어 지는 것이다. (물론 Math 그자체는 JS.) 즉 Math객체를 이용하여 수에 대한 연산을 제어 할수 있게끔 하는 것이다. 이 와 같은 경우를 JavaScript API라고 할 수 있겠다.
더 쉽게 우리가 일반적으로 말하는 API에 대해 생각 해보자. 대표적인 API로 Google Font API가 있다. Google Font API는 구글에서 제공해주는 폰트들을 우리의 HTML 문서에서 제어 할 수 있게끔 해준다. 위에서 말한 내용이 기억이 나는가? "즉 API란 내가 만들 응용프로그램에서 사용 할 수 있도록 기타 다른 응용프로그램들을 제어 할 수 있게 하는 것을 말한다."
위 말을 바꿔보자. "Google Font API란 내가 만들 응용프로그램에서 사용 할 수 있도록 Google 에서 제공하는 Font들을 제어 할 수 있게 하는 것을 말한다." 라고 해석 할 수 있다.
API를 이해하는데 도움이 되었습니다. 감사합니다!