2023. 1. 27. 22:14ㆍPM・PO/코드스테이츠 PMB
코드스테이츠 PMB 16기 W7D3
API
오늘은 API에 대해서 배웠다.
이것저것 설명을 많이 들어서 그 설명의 뜻은 이해했는데, 아직 명확하진 않다.
베토벤 음악에 대한 이론적인 설명만 듣고 음악은 안 들어본 느낌이랄까..
따라서 과제를 통해 API를 어떻게 사용하고 있는지 이것저것 훑어보며 좀 더 감을 찾아가면 좋을 것 같다.
구글에 'API 추천' 같은 식으로 검색하면 유용한 API를 모아놓은 글이 많다.
그 중에 내가 참고한 글은 아래 두 가지다.
특히 GitHub 글이 정말 방대하게 API를 소개하고 있어서 소재 고민을 전혀 할 필요가 없을 정도였다. 각 도메인별로 나뉘어서 정리가 되어있고 짤막한 설명도 덧붙여져 있어서 매우 유용하다. 나는 그 중에 개인적으로 재밌어보이는 것들을 몇 개 골라보았다.
GIPHY
GIPHY는 GIF 파일을 검색하고 공유 ・ 사용할 수 있는 서비스이다. GIF는 흔히 말하는 '움짤'이라고 생각하면 된다. 뭔가 낯익다 싶었는데 인스타그램에서 DM 보낼 때 이 GIPHY를 쓰고 있었다.
이렇게 인스타그램처럼 채팅 앱에 내장해서 바로바로 GIF를 검색하고 보낼 수 있도록 API를 제공하고 있는 것 같다. API 말고도 SDK(소프트웨어 개발 도구 모음)을 제공하고 있어서 개발자들이 GIPHY가 표시되는 UI를 커스터마이징할 수 있고, 검색 통계도 제공해준다고 한다.
Edemam
Edamam은 음식에 관한 데이터베이스를 API로 제공해주는 서비스이다. 아예 API만을 전문적으로 제공하는 것 같다. 음식 관련으로는 세계에서 가장 유명한 API 중 하나인 것 같다. 음식 정보는 어떻게 API로 사용하는 걸까?
웹사이트에서 자체적으로 테스트해볼 수 있었다. 여러 가지 서비스 중에 나는 영양정보 분석 API를 테스트해봤다. 쌀 한 컵에 김치 100그램을 입력했더니 칼로리 정보부터 지방, 단백질, 비타민 등 다양한 정보가 계산되어 나왔다. 한 화면에서 API에 어떤 정보를 입력해야 하는지, 출력 정보는 어떤 것들이 나오는지 확인할 수 있어서 도움이 됐다.
APIMeme
이번에는 서비스 이름부터 APIMeme이다. 굉장히 직관적인 이름처럼, 밈Meme을 만들어서 API 형태로 제공해준다. 이 역시 GIPHY처럼 미국 인터넷 커뮤니티 등에서 굉장히 많이 볼 수 있다. 이런 짤은 항상 위아래로 글씨가 적혀있었는데, 이 사이트에서 밈 생성 방법을 보니 이해가 갔다. 밈을 선택하고, 위에 적을 텍스트와 아래에 적을 텍스트를 따로 적으면 그대로 밈을 만들어주는 것이다. 나도 한번 만들어봤다.
아래 링크가 생성된 것을 볼 수 있다. 내가 적은 텍스트가 링크에 들어가 있는 것을 볼 수 있다. `meme=` 다음에 오는 것은 밈의 이름이고, `top=`과 `bottom=`에는 각각 위・아래 텍스트가 온다. 다만 띄어쓰기는 +로 표시되어 있는 것을 볼 수 있다. 이걸 보니 '주소만 입력해도 자동으로 생성되지 않을까?' 하는 궁금증이 생겼다.
밈을 미리 만들지 않고 주소창에다가 바로 텍스트를 입력해보았다. (형식을 지켜서)
브라우저에 정확히 내가 입력한대로 밈이 만들어져 나왔다. 이걸 보니 이번에는 바로 '노션 같은 곳에도 임베드 시킬 수 있지 않을까?'라는 생각이 들어 바로 해봤다.
주소를 입력해넣으니 여러 옵션이 나왔고, 그 중에 'Create embed'를 누르니 위의 사진이 똑같이 임베드되었다. 이것이 API의 편리함인가..👍
대신증권 CYBOS Plus
너무 해외쪽으로, 흥미 위주로만 본 것 같아서 좀 더 복잡하면서 국산인 API도 찾아보았다. 경제와 관련된 API를 찾아보니 주식 트레이딩을 지원하는 API가 있었다. 위 사진에서 설명된대로 고객(클라이언트)이 제작한 프로그램에서 API를 사용하여 대신증권 시스템의 정보를 가져올 수 있는 API인 듯 하다.
대학교 때 증권 트레이딩 시스템에 관한 강의를 들은 적이 있었는데, 그 전까지 증권 거래는 사람이 직접 하는 건 줄 알았다. 알고 보니 전체 거래의 50% 이상을 컴퓨터가 자동으로 하고 있다고 한다. 아무렇게나 하는 것은 아니고 ATR, 갭런필 등 일정한 패턴이나 기준값 등을 만족하면 매수・매도를 하게끔 프로그래밍을 해놓는 것이다. 그래서 이 거래에 필요한 정보를 API로 불러오고, 주문도 API를 통해 하는 것 같다.
위와 같이 굉장히 상세한 정보를 제공해주고 있는 것을 볼 수 있다.
해당 웹사이트의 '자료실' 페이지에 들어가보면 이 API를 가지고 실제로 어떻게 활용할 수 있는지 예제 코드와 함께 자세하게 설명해주고 있다.
파파고의 API 분석
사실 오늘 과제는 내가 실제로 사용하고 있는 API를 좀 더 자세히 알아보는 것이 주 목적이었다. 나는 MacOS 유저들이 애용하는 Alfred라는 어플리케이션을 사용하고 있다. 아래 사진과 같이 검색창을 띄우고 나서 파일을 검색하거나, 웹 링크를 입력하거나, 키워드를 통해 사이트 내 검색을 바로 할 수 있는 아주 유용한 앱이다. 맥의 내장 기능인 'Spotlight'의 업그레이드 버전이라고 생각하면 쉽다.
그 중 가장 킬러 기능은 바로 Workflow인데, 자체 확장자인 .workflow 파일을 통해 여러 프로그램들을 손쉽게 사용할 수 있다. 내가 가장 유용하게 쓰고 있는 워크플로우는 네이버 지도 검색과 사전 검색, 파파고이다. 그 중에서 파파고는 API를 사용하는 워크플로우이기 때문에 이번 과제에서 다뤄보면 좋을 것 같았다.
쓰는 방법은 위 사진처럼 앞에 pp를 쓰고 한 칸을 띄어쓴 다음 텍스트를 입력하면 아래 번역 결과가 나온다. 엔터 키를 누르면 번역 결과가 클립보드에 저장되어 붙여넣기까지 가능하다. 파파고에 들어가지 않고도 파파고의 기능을 쓸 수 있는 것이다(!) 심지어 아무 텍스트나 입력하면 알아서 언어를 인식해서 번역해준다. 한글은 영어로, 그 외 다른 언어는 한글로 번역해준다.
그렇다면 파파고의 API는 어떻게 되어있는지 확인해보자.
참고를 위해 사진이 많이 나옵니다. 가볍게 넘어가며 읽어주세요.
파파고가 제공하는 API는 세 가지가 있었다. 그 중에서 내가 쓰고 있는 기능은 'Papago 번역'과 '언어 감지'인 것 같다. 먼저 언어 감지 API로 언어의 종류를 식별한 뒤 그 값을 통해 번역 API를 돌리는 것이라고 추측했다.
옛날에 가이드를 따라 등록해놓았던 정보를 조회할 수 있었다. '사용 API'에 언급했던 두 가지 API가 있는 것을 확인할 수 있다.
언어감지 API
먼저 언어감지 API는 어떻게 입출력을 받는지 살펴보자.
언어감지 API의 입력값은 간단했다. string 타입, 즉 텍스트 한 줄만 있으면 되고, 이를 query라고 부른다. 그러면 텍스트를 입력했을 때 나오는 출력값은 어떤 것일까?
출력값은 더 간단하다. langCode라는 출력값이 나오는데, 이 역시 텍스트이다. 아마 이 코드를 번역 API에 집어넣지 않을까 생각이 들었다. 더 간단하게는 if문으로 "이 문장은 영어입니다."라고 말해주는 허접한 프로그램을 만들 수도 있을 것 같다.
번역 API
그러면 이번에는 번역 API의 입출력 값들을 살펴보자.
뭔가 더 복잡해진 것 같지만, 언어 코드가 써져 있는 것을 보니 예상이 맞는 것 같다. 읽어 보니 그리 어렵지 않다. 내가 번역할 텍스트와, 번역할 텍스트의 언어 코드, 번역될 언어 코드 세 가지만 입력해주면 갓파고님이 친히 번역해서 결과값을 주시는 것 같다.
출력 결과 역시 동일하다. 나는 텍스트만 나올 줄 알았는데, 언어 코드까지 같이 나온다. 아마 확인을 위해서이지 않을까 싶다. 이 워크플로우에서는 언어코드값은 버리고 번역 결과만 출력해주는 것 같다.
그러면 이렇게 요청해서 쓰면 되는 건데 나는 왜 귀찮게 API 등록을 해야했을까?
페이지를 살펴보니 참고사항에 위와 같이 '클라이언트 아이디와 클라이언트 시크릿을 추가해야 한다'고 되어있었다. 아이디랑 비밀번호가 있어야 된다는 것이다.
API 이용신청을 하면 이렇게 ID와 Secret이 발급되고, 이것을 알프레드 워크플로우에 등록해주면 된다. 그렇다면 왜 이런 아이디가 필요할까? 나는 그냥 하라니까 했었다.
찾아보니 비로그인 API는 호출량에 제한이 있다고 한다. 한도는 하루에 10,000자인 것 같다. 할당량까지 다 쓸 일은 거의 없을 것 같지만 아이디를 등록해놓는 것이 속 편할 것 같다. 서버 과부하를 방지하기 위해 이러한 제한을 걸어놓은 것 같다.
정리하자면 다음과 같은 순서인 것 같다.
1. 검색어 입력 → 언어감지 API → 파파고 서버가 언어 감지 후 코드 출력 → API를 통해 반환됨
2. 언어코드 + 텍스트 입력 → 번역 API → 파파고 서버가 번역 결과 출력 → API를 통해 반환됨
이렇게 API가 실제로 어떻게 쓰이는지 살펴보니 이제 API가 무엇인지 조금 더 명확해진 것 같다.
참고자료 : 실제 워크플로우 코드 (파이썬)
잘은 모르지만 get 메소드를 사용하는 것 같다. 출력 형식으로 명시되었던 json이라는 단어도 보인다.
그 외에도 서버 상태 확인 함수, 언어 감지 함수, 번역 함수, 언어 코드 값을 얻는 함수 등이 있는 것 같다.
실제 코드와 위에서 다룬 내용이 어느 정도 일치하는 것으로 보인다.
'PM・PO > 코드스테이츠 PMB' 카테고리의 다른 글
[코드스테이츠 PMB 16기 W7] 데일리샷의 과거와 현재 (0) | 2023.01.31 |
---|---|
알바몬의 플로우차트 발전시키기 (학습 이후) (0) | 2023.01.30 |
노션을 웹, PC, 모바일에서 쓸 때 어떤 장단점이 있을까? (1) | 2023.01.26 |
공간 큐레이션 서비스의 랜딩 페이지에 쓰인 코드 분석해보기 (0) | 2023.01.25 |
[코드스테이츠 PMB 16기 W6] 데일리샷의 약점 강화하기 (1) | 2023.01.24 |