요즘 알파고, GhatGPT 등 AI가 대세인 세상이다. API의 이해를 통하여 AI가 이해하는 언어로 번역할 수 있는 능력을 길러 기초를 다져나가보자.
API의 개념
API(Application Programming Interface, 애플리케이션 프로그래밍 인터페이스, 응용프로그램 프로그래밍 인터페이스)는 응용프로그램에서 사용할 수 있도록, 운영체제나 프로그래밍 언어가 제공하는 기능을 제어할 수 있게 만든 인터페이스를 뜻한다. 배경지식이 있는 전문가입장에서는 알 수 있지만, 이제 막 프로그래밍을 접하거나 비개발자분들 설명이 어려울 수 있다. 최대한 쉽게 이해할 수 있도록 설명하기 위해서 부가적인 표현들을 이해해보도록 하자. 우선 "Interface"의 의미를 살펴보도록 하자. 인터페이스란 상호간에 소통을 위해 만들어진 접점이라고 생각하면 편하다. 즉 사람과 사람뿐만 아니라, 사물과 사물, 사물과 사람 간의 두 개이상의 접점에서 상호간 소통하는 것이다. 만약 예를 들어, 내가 승용차의 문을 연다고 생각해보자. 말로 '열려라! 열려라! 열려라! 라고 했을 때 현재기술에서는 열리지 않는다. 지금 시대때는 자동차의 스마트키를 활용해서 '열림버튼'을 눌러야 열리게 된다. 즉, 자동차와 나와의 소통의 접점인 스마트키가 "인터페이스"라고 할 수 있다. 다른 예시를 좀 더 컴퓨터의 관점에서 살펴보도록 하자.
예시와 종류
만약 당신이 컴퓨터 메모장에 글을 쓸려고 할때, 키보드가 필요하다. 키보드에 텍스트를 입력을 해야만, 메모장에 텍스트가 입력이 될 것이다. 즉, 컴퓨터와 사람간의 소통을 위해 만들어진 '키보드'가 접점인 것이다. 컴퓨터에서 소통이라하면 읽거나 쓰는 것을 말한다. 쓰는 인터페이스는 '키보드'가 되고, 읽는 인터페이스는 '모니터'가 될 것이다. 또다른 예를 들어보자. 만약 집에서 치킨을 시키려고 배달앱을 통해 집주변의 치킨집을 찾아봤고, 치킨을 주문했다. 이 앱에 있는 주문하기 버튼, App목록 등 모든 것이 인터페이스라고 할 수 있다. 왜냐하면 배달앱이라는 시스템은 App화면을 통해서 사용자와 소통의 역할을 해주기 때문이다. 본론으로 돌아가보면, 이러한 접점의 측면에서 API를 바라보면 '응용프로그램에서 소통하기 위한 접점'이라고 이해하면 된다. 응용프로그램(메신저앱, 배달앱, 캘린더, 엑셀, 브라우저, 메모장 등)은 컴퓨터에서 실행되는 모든 소프트웨어, 애플리케이션을 말하고, 다른말로 풀이하면 애플리케이션에서 데이터를 읽거나 쓰기 위해 사용하는 인터페이스라고 보면 된다. 예를 들어 내컴퓨터를 활용해서 기상청에서 날씨정보를 들고 온다고 가정하자. 기상청의 API의 형태는 "http://api.data.go.kr/weather/list" 이다. 그럼 내 컴퓨터는 기상청사이트에 요청(Request)을 하게되는데, 요청문은 "curl http://api.data.go.kr/weather/list"이다. 그러면 데이터는 '2014-02-21' , '서울', '맑음' 등의 데이터로 들고 오게 된다. 우리가 흔히 보는 인터넷 주소창과 비슷하다고 보면되는데, 주소의 문맥이 달라진다고 보면 된다.
어느정도 이해될 듯 말듯 생각이 들 때에 조금 더 자세하게 종류에 대해 이야기 해보고자 한다. 그러면 이해할 수 있다. 만약 회사자체에서 서비스를 만들기 위해 사내에서 개발하고 사용하는 API를 Private API라고 하며, 누구나 사용할 수 있도록 만들어 놓은 API를 Public API(Open API, HTTP API)라고 한다. 공공기관에서 제공하는 API, 유튜브 API, 카카오 API, 네이버 API 등 각각 API를 제공한다. 또 IoT(Internet of Things)들에 대한 상호연결을 시도할때 필요하는 Android API, Java API 등도 존재한다. 다시한번 말하면 API는 소통의 접점이라고 생각하면 된다. 즉 소통방식이 다르면 작동하지 않는다고 보면 된다. 이해를 돕기 위해 어른들을 이해시키는 동영상을 첨부한다.
'AI기초' 카테고리의 다른 글
구조체의 정의 및 리스트(List) 튜플(Tuple) 딕셔너리(Dictionary) (0) | 2023.03.16 |
---|---|
파이썬 변수와 메모리 값객체 참조객체 함수 개념 호출방법 (0) | 2023.03.16 |
파이썬(Python)의 개요 인터프리터 언어 객체지향 프로그래밍 동적타이핑언어 (0) | 2023.03.16 |
컴퓨팅 사고력의 정의 구성요소 문제구조화 최근교육사례 (0) | 2023.03.09 |
댓글