서비스 기획자/PM부트캠프

[Weekly] 코드스테이츠 PMB 18기 W7 # 프론트엔드, Open API

쑤tory 2023. 5. 20. 12:42

이번 7주 차 과제는 3가지의 항목을 수행해야 한다.

첫 번째는 관심 있는 프로덕트의 랜딩 페이지를 분석하여 HTML, CSS, JavaScript를 분석하는 것.

두 번째는 다양한 서비스 유형으로 제공되는 프로덕트를 분석하여 유형별 장단점을 정리하고 서비스 확장 아이디어를 도출하는 것.

마지막은 Open API를 탐색하여 제공하는 기능과 구조를 이해하고, 선택적으로 기능 하나를 선정하여 API의 역할 및 입출력 구조를 정리하는 것이다.

 

시작하기에 앞서 HTML, CSS, JavaScript에 대해 소개하자면,

HTML의 역할 : 구조 만들기 (뼈대, 화면의 구조, 틀)

CSS의 역할 : 웹사이트 스타일 지정 (꾸미기, 스타일)

JavaScript의 역할 : 상호 작용 증가 (동작, 프로그래밍 영역)

 

1. 네이버 시리즈의 랜딩 페이지 분석

HTML

시리즈의 개발자 도구

웹 페이지에서 F12를 누르기

또는 [도구] 더 보기 - [개발자 도구]를 클릭하면 HTML, CSS, JavaScript를 탐색해 볼 수 있다.

표시된 공간이 HTML의 영역이다. HTML에 대하여 하나씩 알아보자.

 

<!DOCTYPE>

Document Type의 약자로 HTML이 어떤 버전으로 작성되었는지 미리 선언하여 웹브라우저가 내용을 올바로 표시할 수 있도록 해준다. <!DOCTYPE> 을 선언하지 않으면 호환모드(quirks mode)로 동작하는데, 호환 모드의 경우 각 브라우저마다 문서를 나타내는 방식이 다르기 때문에 크로스 브라우징 이슈가 훨씬 심해진다.

 

<html lang="ko>

ang 속성은 웹 페이지의 언어를 포함한다. 항상 태그 안에 포함

"ko"는 언어를 나타내며 한국어를 뜻한다.

 

<html></html>

문서의 시작과 끝을 나타낸다.

 

<div></div>

div는 division의 약자로 웹사이트의 레이아웃을 만들 때 주로 사용한다. Style은 태그의 스타일을 지정해 주는 것으로 다른 속성들을 사용할 수 있게끔 해준다. 저기서 쓰인 display : none과 visibilty : hidden은 둘 다 보이지 않는 점에서 유사하지만 display : none은 화면상 어떤 영역을 차지하지 않고 완전히 삭제된 것처럼 보이게 한다.

 

<head></head>

문서를 담는다. 브라우저 화면에 직접적으로 보이지 않으며, 숨은 데이터를 정의하는 태그들이 들어간다. 문서를 사용할 제목, 스크립트, 스타일 시트 등이 해당한다.

 

<body></body>

HTML문서의 내용을 나타내며 하나만 있을 수 있다. 페이지에 방문한 모든 사용자들에게 보여주길 원하는 콘텐츠를 담고 있다.

 

CSS

시리즈라는 텍스트를 눌렀을 때 우측 개발자 도구에는 누른 텍스트에 대한 내용이 나타난다. 내가 선택한 "시리즈"라는 글자에 대한 내용을 정리하자면

position: relative;
display: inline-block;
vertical-align: middle;
width: 63px;
height: 22px;
margin: 0 0 0 10px;
background: url(https://ssl.pstatic.net/static/nstore/series/sp\_renewal\_gnb.png) no-repeat;
background-position: 0 -15px;
background-size: 150px 150px;

position:

속성을 통해 문서상에 요소를 배치하는 방법을 지정한다.

 

positon: relative;

요소 자기 자신을 기준으로 배치한다.

 

display:

웹페이지 상에서 속성들이 어떻게 보이고 다른 속성과 어떻게 상호 배치되는지를 결정한다.

 

display: inline-block;

하이브리드 모드처럼 작용하는데 기본적으로 inline의 전후 줄 바꿈 없이 나란히 배치되지만 block처럼 width와 height속성 지정 및 margin과 padding속성의 상하 간격 지정이 가능하다. 쉽게 말하자면 내부적으론 block의 규칙을 따르고 외부적으론 inline의 규칙을 따르는 것이다.

 

vertical-align: middle;

vertical-align은 인라인 블록 등을 포함한 모든 인라인요소의 수직 정렬을 위해 사용된다. middle은 인라인 요소가 중앙에 정렬되게 설정한 것이다.

 

width, height

width는 영역의 넓이를 조정하는 것 즉, width: 63px;은 해당 영역의 넓이를 63px로 조정하는 것이다. height는 높이를 조정하는 것으로 height: 22px;은 해당 영역의 높이를 22px로 조정하는 것이다.

 

margin: 0 0 0 10px;

요소들 간의 간격을 띄울 수 있게 해 준다. 순서로는 상, 우, 하, 좌 순서로 상, 우, 하는 0px 좌는 10px로 간격을 띄우는 것이다.

 

background: url

배경의 이미지 파일을 불러올 이미지 경로를 지정하는 속성이다.

 

background-position: 0 -15px;

배경을 사용하는 요소의 영역 중 어느 좌표에 background-image를 위치시킬지 지정하는 속성이다.

 

background-size: 150px 150px;

배경 이미지의 사이즈를 조정하는 속성이다.

 

JavaScript

개발자 도구에서 JavaScript 사용 중지를 체크하니 아무런 동작이 되지 않았다. 아무래도 상호 작용을 증가하며 동작에 관련된 툴이라 그런 것 같다.

 

2. 네이버 시리즈의 장단점 및 서비스 확장 아이디어

1. 웹 페이지/ 2. 모바일 웹/ 3. 모바일 앱

시리즈는 3가지의 방법으로 접속할 수 있다. PC를 이용하여 웹 페이지에 접속하는 방법과 모바일을 통한 웹 페이지 접속 및 앱 설치를 통해 앱으로도 접속 가능하다.

  웹 페이지 모바일 웹 네이티브 앱
장점 -한 페이지에 보다 많은 정보를 담을 수 있다.
-연재 중인 다양한 소설을 볼 수 있다.
-최적화되어 있는 기능으로 웹 페이지에 비해 환경이 편하다.
-별도의 앱 설치가 필요 없다.(url이 m.으로 시작)
-짧은 시간으로 많은 데이터를 불러올 수 있다.

단점 -다양한 소설을 볼 수 있지만 관심 있는 소설을 찾기에 제한적이다.
-내가 보고 있는 최근 본 작품이 안 나온다.
-현재 pc뷰어를 통한 사건 사고가 많이 일어나고 있다.
-앱에 비해 서버가 불안정하며 화면 전환이 웹에 비하여 느리다. -운영 체제에 따라 별도의 개발이 필요하다.
-앱 설치가 강제 요구된다.

시리즈가 론칭할 때 왜 그 서비스 유형을 선택하게 되었는지 분석해 보자.

출처 : 시리즈

시리즈는 2018년 네이버 북스가 새로 리뉴얼되어 "네이버 시리즈"라는 이름으로 앱 출시를 하며 처음 론칭 되었다. 사람들의 스마트폰 이용 수는 말을 하지 않아도 될 정도로 많았으며 소설과 만화 등 다양한 볼거리가 많은 시리즈 앱이기에 일상생활에서 스마트폰으로 편하게 접근할 수 있다는 이유로 앱에서 첫 론칭을 하였다고 생각한다. 2019년 1월에는 웹 페이지로도 출시하였다.

 

본인이 만약 PM일시 앞으로 어떤 서비스 유형으로 서비스를 확장할 것인지 생각해 보자.

출처 : 모바일인덱스

내가 만약 네이버 시리즈의 PM이고 PMF를 달성하였다면 앞으로는 카카오페이지에 밀리는 독점 연재 부분을 강화시킬 예정이다. 네이버시리즈는 카카오페이지에 비해 독점 연재 카테고리가 다양하게 활성화되어있지 않다. 이 부분을 집중 분석하여 사용자의 니즈에 맞출 수 있도록 독점 연재 카테고리를 다양하게 활성화하여 고객의 유입을 이끌 것이다. 또한 네이버 시리즈는 소설을 읽을 때 시간을 볼 수 없다. 시간을 보려고 위에서 아래로 스크롤하면 가끔 이전 페이지나 다음 페이지로 넘어가기 마련이다 이 부분을 인지하고 시리즈를 보면서도 시간을 확인할 수 있게 UI적 개선을 할 생각이다.

 

3. 네이버의 Open API를 탐색해 보자

API
(Application Programming Interface)

출처 : 위시켓

위 그림에 더하여 알기 쉽게 설명하자면 손님은 점원이 건넨 메뉴판을 보며 음식을 정하고 점원이 요리사에게 정해진 메뉴를 알려준다. 그러면 요리사는 음식을 만들어서 점원에게 제공하고 점원은 다시 손님에게 음식을 건네준다. 여기서 API는 즉 점원과 같은 역할을 한다. API는 서버와 데이터베이스의 출입구 역할을 하며 애플리케이션의 기기가 원활하게 통신할 수 있도록 도움을 주고, 범용 플러그처럼 모든 접속을 표준화해 주는 일을 한다.

 

Open API

Open API란 누구나 사용할 수 있도록 공개된 API를 말한다. 데이터를 표준화하고 프로그래밍을 하여 바로 개발에 활용할 수 있는 형태이다. 따라서 사용자는 개방된 API를 통해 다양하고 재밌는 애플리케이션과 플랫폼을 개발할 수 있다는 장점이 있다. 그러면 여기서 한 가지 의문이 생길 수 있는데, 나는 이렇게 생각을 해 보았다. "왜 기업은 손해를 보면서 API를 제공할까?"에 대하여 의문을 가졌고, 조사를 해 본 결과 금방 의문이 사라졌다. 기업이 Open API를 제공하는 이유는 자사 서비스의 기능을 다양한 서비스에 활용할 수 있도록 유도하여 서비스의 가치를 높일 수 있기 때문이다.

 

네이버의 지식in 검색 Open API

 

먼저 검색 API의 특징으로는 비로그인 방식 오픈 API이며 비로그인 방식 오픈 API는 호출할 때 HTTP 요청 헤더에 클라이언트 아이디와 클라이언트 시크릿 값만 전송해 사용할 수 있는 오픈 API이다.

 

API의 기본 정보

프로토콜 메서드 URL 출력 포맷
Https GET https://openapi.naver.com/v1/search/kin.xml XML
Https GET https://openapi.naver.com/v1/search/kin.json JSON

검색기능을 조회(READ)하고 호출 방식을 GET 하는 것으로 알 수 있다.

 

참고 사항

출처 : 네이버 Developers

API를 요청할 때 다음 예와 같이 HTTP 요청 헤더에 클라이언트 아이디와 클라이언트 시크릿을 추가해야 한다.

 

요청 예

출처 : 네이버 Developers

응답

출처 : 네이버 Developers

응답에 성공할 시 결과값을 XML 형식 또는 JSON 형식으로 반환하며 XML 형식의 값을 알려주고 있다.

 

응답 예

출처 : 네이버 Developers

 

오류 코드

출처 : 네이버 Developers

수업 시간에 배운 500번 대 오류는 시스템 에러여서 개발자와 상의해야 하는 오류이며 설명에도 "개발자 포럼"에 신고해 달라는 내용이 있는 것을 알 수 있다.