깨알 개념/기타

API (Application Programming Interface)

interfacer_han 2023. 12. 18. 12:55

#1 알고리즘

#1-1

API는 UI와 비슷하다. UI가 화면을 통해 사용자와 소프트웨어가 상호작용하는 규격이라면, API는 프로그래머끼리 또는 소프트웨어끼리 또는 프로그래머와 소프트웨어 간의 상호작용을 위한 규격이라는 점에서 그렇다. UI는 인터페이스에 불과하며, 실제 화면을 구성하는 것은 버튼ㆍ스크롤바ㆍ텍스트 박스ㆍ이미지 등이다. API 또한 엄연히 인터페이스에 불과하며, 실제로 기능을 구현하는 것은 라이브러리다. 예를 들어, Google Map 서비스를 실제로 구현하는 것은 구글 서버에 저장된 지도ㆍ위치 관련 라이브러리들이지 Google Map API 자체가 아니다. 사용자는 그저 API 즉, '연결된 라이브러리에 접근해 그 기능을 활용할 수 있는 관문(인터페이스)'을 통해 상호작용할 뿐이다.
 

#1-2

2

또 다른 예로, 쇼핑몰에서 물건을 구매할 때 주소를 입력하는 순간이 있다. 큰 쇼핑몰에선 자체적으로 개발한 주소 찾기 라이브러리를 쓰기도 하지만, 그 정도의 여력이 없는 작은 쇼핑몰에선 위 스크린샷처럼 카카오 우편번호 서비스를 많이들 사용한다. 위와 같이 카카오가 제공하는 '주소 찾기 API'는, 카카오 서버에 있는 라이브러리를 개발자가 직접 가져다 쓰는 게 아니다. 해당 API에 대해서 카카오가 명시한 규칙에 따라 라이브러리의 기능을 요청할 뿐이다.
 

#1-3

지금까지 예를 든 API들은 전부 공간 정보를 서비스해주는 Public API였다. API는 이름부터가 인터페이스인만큼 굉장히 추상적이고 넓은 범위의 개념이다. API는 수 많은 범주를 가지고 있으며 그 중에는 Java API, Kotlin API 등과 같은 프로그래밍 언어 수준의 API도 있다. 예를 들어, 코틀린에서 fun 키워드는 함수를 의미한다. 그런데 정말로 이 알파벳 3글자가 그 자체로 함수가 되는 건 아니다. 언어 수준 API가 코드에서 fun이라는 키워드를 인식한 뒤 코틀린에서 함수 관련 처리를 하는 라이브러리를 호출(통신)한 것이다. 결국 Google Map API를 사용하는 것과 같은 맥락으로, 우리가 밥먹듯이 쓰는 자바 코틀린 코드도 언어 수준의 API를 '호출'하기 위한 텍스트에 불과한 것이었다. 폰 노이만처럼 0과 1만 가지고 코드를 짜는 게 아닌 이상 API는 개발자가 코드를 짤 때부터, 늘, 언제나 존재해왔던 것이다. 하드웨어 APIㆍ데이터베이스 APIㆍWindow API와 같은 운영체제 API 등도 전부 다 같은 맥락을 공유한다.
 

#2 요약

API는 사용법에 불과하다.
 

#3 이 개념이 사용된 글

 

API, Framework, SDK, Tool, Project, Architecture, IDE, Library, Package의 관계

#1 알고리즘 항상 쓰이는 개념이지만 그 관계를 파악하기 어려웠던 개념들을 정리했다. 다만, 위 정리는 이해를 돕기 위한 비유일 뿐이며, 각 요소들은 관점에 따라 설계도, 도구, 작업물의 범주

kenel.tistory.com