컴퓨터 잘 모르는 회사원을 위한 'API 알아보기'
회사에서 일을 하다보면,
잘 모르는 용어가 나올 때가 있습니다.
그런데, 그 제가 모르는 말이
정말 저만 몰랐던 것이면 갑자기 많은 생각이 듭니다.
"이게 대체 뭐길래 나만 빼고 다 알지?"
"당장 공부해야겠다!"
그래서 최과장은 공부를 합니다.
오늘은 API 입니다.
1. OpenAPI 는 개발자라면 다 사용할 수 있게 공개가 된 API 입니다.
2. API 는 Application Programming Interface 의 줄임말입니다.
3. API 는 컴퓨터나 컴퓨터 프로그램 사이의 연결을 말하는 것으로 소프트웨어 interface 이며, 다른 종류의 소프트웨어에 서비스를 제공을 합니다.
4. 위키피디아에 따르면, API 라는 용어 자체는 규격(사양) 이나 구현체를 의미한다고 합니다.
5. 컴퓨터나 컴퓨터 프로그램 사이를 연결한다는 측면에서, 유저 인터페이스와 다른 개념입니다.
6. User Interface 는 컴퓨터와 인간을 연결하는 것입니다.
7. API 는 최종 사용자에 의한 사용을 목적으로 구축된 것이 아니며, 컴퓨터나 소프트웨어 간의 연결을 목적으로 구축된 것입니다.
8. 이 API 의 주요 목적 중 하나는 시스템이 어떻게 동작하는지에 대한 자세한 부분들을 숨길 수가 있고, 그 내용이 변경되더라도 다루는 컴퓨터 프로그래머가 일정하게 관리할 수 있는 부분을 노출한다고 합니다.
9. API 라는 용어는 웹 API 를 의미하기도 하는데 인터넷에 의해 병합된 컴퓨터들 간의 통신을 하용합니다. 여기서의 웹 API 는 웹 애플리케이션 개발 시 다른 서비스에 요청을 송신하고 응답을 수신하기 위해 정의된 명세를 말하는 것인데, 홈페이지를 신규로 구축할 때 구글이나 네이버, 다음 등의 지도API 와 같은 OpenAPI 를 가져와서 사용할 수 있습니다.
10. API 는 ABI 와는 구별됩니다. ABI 는 응용프로그램 이진 인터페이스를 의미하는 것으로 Application Binary Interface 의 줄임발입니다.
11. ABI 는 응용프로그램과 OS, 또는 응용프로그램과 라이브러리, 또는 응용프로갬의 구성요소 간에서 사용되는 낮은 수준의 인터페이스입니다.
12. ABI 는 바이너리 (이진 인터페이스) 에서 호환이 가능한데, API 는 소스 코드에서 사용할 수 있습니다.
13. 소스 코드는 무엇일까요? souce code 는 원시코드라고도 불리우는데 컴퓨터 프로그램을 사람이 읽는 것이 가능한 프로그래밍 언어로 기술한 파일입니다. 평문으로 작성되는 설계도 역할의 파일이며, 한 개 또는 복수의 텍스트 파일로 구성되어 있습니다.
14. 소스 코드는 주로 실행 프로그램을 만드는 과정을 입력할 때 이용되며 알고리즘을 주고 받는 방식으로도 이용됩니다.
15. 개발자들끼리의 소스 공유는 기술 발전에 기여를 하며, 기존의 소스 코드를 공부하는 것이 역량을 강화하는데 도움이 됩니다.
16. API 의 예로는 윈도우 API, 다이렉트엑스, 단일 유닉스 규격, 자바 API, 스칼라 API, OpenGL, OpenAL, OpenCL 등이 있습니다.
17. OpenAPI 의 예로는 위에서 언급한, 구글 지도, 네이버 지도 등을 들 수 있고, 대한민국 정보의 공공데이터포털에서는 도로명 주소 조회 서비스 등의 오픈 API 를 운영 및 제공하고 있습니다.
18. 그런데, 공개된 OpenAPI 이더라도, 무분별한 데이터 남용을 방지하기 위해 회원 가입을 적용하거나, 사용용량에 따른 비용 차등 부과의 방침을 택하기도 합니다. 대표적으로는 오픈스트리트맵 (Open Street Map, OSM) 이 있습니다.
19. 오픈스트리트맵은 서버와 하드웨어 관리, 컨퍼런스 지원, 법무 서비스 등에 1년 당 10만 달러 정도의 비용이 든다고 합니다. 이 오픈스트리트맵은 오픈 소스 방식의 무료지도서비스입니다.
20. 위에서 다룬 API 의 예 중, 윈도우 API 를 잠시 살펴보겠습니다. WinAPI 라고도 불리우는 이것은 Microsoft Window OS 가 사용하는 API 입니다. C/C++ 프로그램에서 직접 OS 와 상호작용 할 수 있도록 만들어졌고, 이보다 더 낮은 수준의 제어는 Ntdll.dll 을 사용한 DLL 로 가능합니다.
21. 이 윈도우 API 는 도스 API 를 대체한 것입니다. 도스 API도 잠시 살펴보겠습니다. MS-DOS API 를 지원하는 운영 체제로는 MS-DOS, PC DOS, DR-DOS, PTS-DOS, ROM-DOS, FreeDOS, 윈도우95, 윈도우98, 윈도우98SE, 윈도우 ME 등이라고 합니다.
22. DOS API 는 86-DOS 를 기원으로 하는데, MS-DOS/PC-DOS 와 기타 다른 DOS 호환 운영 체제에 쓰이는 API 입니다. 여기서 또 볼 수 있듯이 API 는 운영체제를 위한 것이기도 합니다. 프로그래머가 사용할 수 있는 도구의 역할인 것입니다.
23. API 를 구성하는 호출(call)은 서브루틴, Method, 요청, 통신 엔드포인트라고도 불리우는데, API 규격(사양) 은 이 호출들을 정의하며, 이 호출들이 사용되거나 구현 되는 것을 설명합니다.
24. 서브루틴은 소프트웨어에서 특정 동작을 수행하는 일정한 코드 부분으로, '특정 작업을 위해 재활용 가능하도록 구현한 코드 블록' 을 말합니다.
25. 서브루틴이라는 개념은 함수와 동의어로 쓰이기도 하고 구분되기도 하는데, 파스칼이나 포트란과 같은 언어에서는 반환값이 없는 경우를 서브루틴이라고 하고 반환값이 있는 경우를 함수라고 합니다. 이에 반해, C 등의 언어는 함수와 서브루틴이 동의어입니다.
26. 함수의 경우 기본적으로, 값/ 참조/ 결과/ 값 결과/ 이름/ 상수값에 의한 호출 등으로 그 규약이 구분되는데, 상세한 내용은 천천히 공부해봐야겠습니다.
27. 다시 API 로 돌아가면, 이 API 는 어떠한 방식으로 정보를 요청할 것인지, 그 요청이 발신 된 이후에 어떤 형식으로 어떤 데이터를 수신 할 것인지에 대해 정리한 규격을 의미하는 것인데, 단어 그대로 받아들이면 애플리케이션이 인터페이스하는 체계라고 생각하면 됩니다. 여기서의 인터페이스는 '요청'과 '응답'을 상호간에 주고 받는 것을 의미합니다.
28. 위에서 언급한 공공데이터 포털에서는 여러 OpenAPI 가 등록되어 있습니다. 예를 들면, JSON+XML 데이터 포맷의 행정안전부_재난문자방송 발령현황이 있습니다. 이 OpenAPI 의 유형은 REST API 인데, 이 내용은 추후에 좀 더 자세히 다루도록 하겠습니다.
#API