인터페이스(Interface)?? API?? 이것만 기억하면 된다

"지금 이걸 구현하려면 API를 통해서 데이터를 받아와서 파싱을해서 어쩌구저쩌구..."

"이정도하려면 인터페이스가 제대로 구현이 되어야하는 데 현실적으로는 어렵죠. 왜냐하면 어쩍저쩍"




"야 도대체 API, 인터페이스가 뭐냐?"


제 개발 1도 모르는 직장인 형한테들은 이야기입니다. 네 그렇습니다. 무슨 이야기인지 도통 감도 안 올거라 생각합니다. 이런 대화들이 개발자들을 덕후 혹은 자기 세계에 빠져사는 사람, 특이한 사람, 괴짜, 혹은 천재란 이미지로 만드는 주범이 아닐까 생각됩니다. 하지만 저런 용어들을 쓰는 것 자체가 뭔가 전문적인 일을 한다는 것이니 너무 안 좋은 이미지를 갖지 말도록 합시다.


거두절미하고 도대체 흔히 듣지만 도대체 감 잡을 수 없는 인터페이스, API란 용어에 대해서 설명드리도록 하겠습니다.


| 인터페이스


인터페이스는 한 마디로 정의하겠습니다.


상호작용하는 곳

(궁서체)


설명들어가도록 하겠습니다.


그전에 질문 들이겠습니다. 


우리가 흔히 사용하는 스마트폰의 사용자 인터페이스는 어떤 것이죠? 


이런 거는 익숙하니 금방 아시고 대답하실 수 있을 겁니다. 바로 터치스크린 + 손가락이죠. 스마트폰에 친숙한 우리 현대인들은 경험을 통한 기막힌 통찰로 이 단어를 듣는 순간 바로 떠오르실 겁니다.

이 터치스크린 + 손으로 우리는 스마트폰과 상호작용하며 책도 읽고 만화도 보고 덕질도 하고 유튜브 삼매경에 빠지는 등 여러가지 활동을 합니다. 즉 상호작용하는 곳이죠.


자 또 질문 드리겠습니다.그 TV의 인터페이스는 어떤 것이 있을까요? 예 리모콘과 TV본체 버튼입니다. TV의 인터페이스라고 하니 뭔가 어색하실 법합니다. 왜냐하면 보통 일상어에 리모콘 어디있냐고하지 "야 TV 인터페이스 어딨냐?" 라고 하지는 않거든요. 저런 이야기를 할 경우에는 이상한 사람 취급받기 딱 좋을겁니다.




하지만 분명히 리모콘과 TV본체 버튼은 우리와 TV가 상호작용하는 곳입니다. 이것을 통해 엄마 몰래 새벽에 TV를 켜서 보기도 하고 예능 TV도 보고 재미나는 드라마 영상도 볼 수 있거든요.


개발자들이 쓰는 인터페이스라는 용어도 다를 거 없습니다. 이 의미입니다. 단지 프로그램 개발을 안 해본 사람들로서는 여기서 쓰이는 인터페이스를 경험해보지도 만져보지도 못하는 것이기 때문에 단숨에 이해하지 못하는 것 뿐이죠. 인간은 경험의 동물입니다.


우리가 쓰는 프로그램들은 프로그램 상의 어떤 인터페이스를 통해서 컴퓨터 시스템의 자원들을 사용하고 네트워크와 통신하며 우리가 쓰는 컴퓨터에 아이콘을 띄우기도 합니다. 즉 상호작용하는 것이죠.


한 가지만 기억하면 됩니다. 인터페이스는 상호작용하는 곳이다.


| API


플랫폼 API, 오픈 API, 공공데이터 API... IT분야랑 조금이라도 관련되면 한 번쯤 들어봤을 법한 것들입니다. 잘 몰라서 wiki를 뒤져보면


API(Application Programming Interface, 응용 프로그램 프로그래밍 인터페이스)는 응용 프로그램에서 사용할 수 있도록, 운영 체제나 프로그래밍 언어가 제공하는 기능을 제어할 수 있게 만든 인터페이스를 뜻한다. 주로 파일 제어, 창 제어, 화상 처리, 문자 제어 등을 위한 인터페이스를 제공한다. < 위키백과 펌 >


혹은


Application Programming Interface.
응용프로그램 프로그래밍 인터페이스.

프로그래밍에서, 프로그램을 작성하기 위한 일련의 부 프로그램, 프로토콜 등을 정의하여 상호 작용을 하기 위한 인터페이스 사양이다. API는 소프트웨어 컴포넌트(Function, Method, Operation으로 불리는 그것이다)의 기능, 입력, 출력, 그리고 이에 사용되는 자료형으로 표현된다. API 자체는 어디까지나 "사양(Specification)"만을 정의하기 때문에 구현(Implementation)물과 독립적이다. 잘 설계된 API는 프로그램 개발을 보다 쉽게 해 준다. API는 다양한 형태로 존재하며, 유닉스의 POSIX 표준, 윈도우의 MFC나 Win32, C++의 Standard Template Library(STL), Java API 등이 이에 해당한다.  < 나무위키 펌 >


??



무슨 말인지나 알려고 갔더니 더욱더 모르게되는 아이러니에 빠지고 맙니다. 헿


하지만 걱정하지 맙시다. 우리는 이미 인터페이스라는 것에 대해 알고 습니다. 상호작용하는 곳! 


그러면 저 API라는 것도 Interface라는 단어가 있으니 어딘가와 상호작용하는 곳이라는 의미일 겁니다. 자 그러면 어디와 상호작용하는 곳일까요? 


바로 다른 프로그램이랑 상호작용합니다. 


다른 프로그램이랑 상호작용한다고? 쪼오끔 여기서 머리가 살짝 아파올 수도 있습니다. 하지만 별거없습니다. 우리가 TV와 상호작용하듯 다른 프로그램과 상호작용한다고 생각하면 됩니다. 


그렇다면 뭘 가지고 상호작용하냐? 바로 프로그램 코드를 가지고 상호작용합니다. 즉, 다른 프로그램에서 미리 명시한 명세(specification)대로 프로그램 코드를 짜면 해당 API로 다른 프로그램과 상호작용할 수 있게 되는 것입니다. 


기억합시다. 프로그램 코드로 상호작용한다.


그렇다면 왜 API를 써서 복잡하고 머리아프게 쓰냐? 왜냐하면 이것을 이용하면 타겟 프로그램에서 제공하는 데이터나 기능들을 작성한 프로그램에서 손쉽게 이용할 수 있기 때문입니다. 이걸 통해 작성한 스마트폰 어플리케이션에서 구글맵 정보를 프로그램 코드 몇 줄만 집어넣으면 받아볼 수 있고 결재 처리하는 것도 프로그래머가 직접 복잡한 결재 시스템을 만들지 않아도 코드 몇 줄 추가하면 이 기능을 제공하는 프로그램과 상호작용하여 금방 처리할 수 있습니다. 또한 서버에서 구동되는 프로그램에서 제공하는 기능이나 데이터를 클라이언트 프로그램에서 받아와 사용할 수 있습니다. 엄청난 이점이 있는 거죠.


정리하겠습니다. 


인터페이스는 상호작용하는 곳이다. 

개발자가 말하는 인터페이스도 의미는 같다. 하지만 다른 프로그램 혹은 시스템으로 대상이 다를 뿐이다.

API는 다른 프로그램과 상호작용하는 곳이다. 상호작용할 때는 프로그램 코드를 쓴다.


끝!



도움이 되셨다면  공감 버튼 꾹 눌러주시면 감사하겠습니다 



이 글을 공유하기

댓글(10)

  • ㅂㄷㅈㄹ
    2020.02.06 16:43

    ㅋㅋ 개웃. 잘 읽고 갑니다

  • 2020.04.15 13:25 신고

    글 재밌어요 ㅋㅋㅋ 웃겨용. 즐찾하고 자주 읽으러 와야겠어요. 감사합니다.

  • 2020.07.21 15:32

    비밀댓글입니다

  • 2020.11.30 11:10 신고

    한번에 이해가 쏙 되네요 잘 읽었습니다 ㅋㅋㅋ

  • koreasean
    2021.02.09 14:24

    쉽게 잘 설명해 주셔서 이해가 확 되네요 그러데 읽다보니 궁금한게 있습니다. 그럼 어댑터는 API와 어떻게 다른건가요?

  • 개발 1도 모름
    2021.03.03 18:05

    감사합니다. api , 인터페이스가 뭔지 찾다가 들어왔어요.

  • 기요미
    2021.03.18 17:28

    진짜 위키도 그렇고.. 왜이렇게 쓰잘대기없이 어렵게 설명해서 업계를 그들만의 리그로 만드는건지;;
    글 잘읽고 갑니다. 제가 본api, interface 설명글 중 가장 명료하고 이해하기 쉽네요

  • 2021.09.15 18:37

    아진짜 하트 누르고 싶은데 왜안눌림 똑땅하네

Designed by JB FACTORY