11기 김명준 교육생의 소식입니다.
지난 2020년 초, '바이코로나' 라는 실시간 코로나 상황 웹사이트 개발과 2019년 빅스비 캡슐 챌린지 시즌2 입상 소식인데요.
김명준 교육생의 바이코로나 개발기와 빅스비 캡슐챌린지 참여기를 한 번 들어볼까요?
바이코로나 개발기
작년 초, '바이코로나' 라는 실시간 코로나 상항 웹사이트를 만들었습니다. 제가 만들때도 다양한 사이트가 있었지만 가장 아쉬웠던 것은 코로나 관련 뉴스가 없어서 코로나 관련 다양한 정보를 주지 않는다는 것이었습니다. 그래서 코로나 뉴스를 중점적으로 알려주는 사이트를 만들기로 하였습니다.
우선 코로나의 실시간 정보를 얻을 곳에 대해 알아보기 위해 보건복지부 사이트를 살펴보았고, 보건복지부 사이트에서 코로나19 정보를 게시하고 있는 것을 확인했습니다.
저는 이를 크롤링하여 API로 만들기로 하였습니다. 보건복지부 사이트를 파이썬에서 requests 를 이용해 데이터를 받았고, 그뒤 BeautifulSoup 를 이용해 제가 원하는 정보만을 추출했습니다. 이를 분류해 시도별과, 지역별로 코로나 현황을 알 수 있도록 하였습니다.
그뒤 php를 이용해 웹사이트를 만들어 이 데이타를 호출하도록 만들었습니다. 이 데이터를 조금더 편하게 보도록 하기 위해 구글 차트를 사용해 표시를 해주었고, 지역별로 코로나 발생 현황을 볼수 있도록 하였습니다. 또한 각 지역을 확진자에따라 등급을 부여해 안전, 경고, 위험으로 나누었으며, 뉴스의 경우 NewsAPI에서 검색어를 ‘코로나’로 해서 받은 정보를 보여주었습니다.
하지만 이로 만족하지 못해서, ‘카카오톡 채널’을 통해 코로나 확진자의 상황을 알 수 있도록 하였습니다. kako.py 라는 카카오 채널용을 위한 새로운 백엔드를 작성했고, 그렇게 하여 코로나 현황을 더 쉽게 볼 수 있도록 하였습니다.
뉴스를 더 쉽게 볼 수 있게 하도록 업데이트를 했고, PHP에서 리엑트로 개발 환경을 변경하였습니다.(요즘은 PHP보다 자바스크립트가 더 편합니다.) 카카오톨의 경우 카카오 API 메뉴얼이 변경되어 앞으로 계속 수정해 나갈 예정입니다. 현재 바이코로나 도메인이 만료되어 이 부분도 알아보고 있는 중입니다.
코로나 사이트를 혼자 만들어 본 것 자체가 저에게는 좋은 경험이 되었습니다. 특히 웹 크롤링에 대해 잘 배울 수 있는 좋은 기회였고, 저만의 ‘뉴스’ 라는 특별한 주제로 코로나 사이트를 만든것이 다른 사이트와의 차이점을 준 것 같아 뿌듯합니다.
빅스비 캡슐 공모전 시즌2 참여기
평소 인공지능에 관해 관심이 많이 있었고, 그중에서도 보이스 어시스던트 라고 하는 ‘빅스비’나 ‘시리’에 특히 더 관심이 많았습니다. 텐서플로우를 배우면서 저도 '파이썬으로 인공지능 하나 만들어 보아야지' 라는 생각으로 빅스비나 시리의 작동 원리에 대해 관심이 생기게 되어 검색하다 우연히 이 대회를 보게 되었고, 공모전에 참가해 보기로 결정하였습니다.
우선 저는 평소에 필요하다고 생각했던 '내가 좋아하는 책을 바탕으로 책을 추천해주는 캡슐'인 ‘북매니저‘를 만들어 보기로 하였습니다.
먼저 책을 추천할 방법에 대해 고민해 보았습니다. 직접 책을 추천하는 인공지능을 만들기 위해 도서 분류 코드를 활용해 보기로 하였습니다. 도서관에서 흔히 관련있는 책을 찾을때 도서 분류 코드를 이용해 카테고리화 해서 분류하고 찾는다는 점을 이용해 분류코드를 이용하면 관련있는 책들을 찾을 수 있지 않을까 생각이 들었기 때문입니다. 하지만 이 방법은 도서량이 너무 많고 방대해서 쓰기가 어렵다는 생각이 들었습니다. 또한 같은 코드라고 해서 그 책이 사용자가 좋아하는 책이랑 비슷한 종류가 아닐 수도 있기 때문에, 적합하지 않다는 결론을 내렸습니다.
그래서 저는 '도서관 정보나루' 라는 사이트의 '연관대출도서' 라는 API를 이용해 개발을 하기로 하였습니다.
도서관 정보나루 https://www.data4library.kr
'마이북'이라는 내 도서 목록을 만들때는 MySql과 PHP를 이용했습니다. 캡슐에서 POST요청을 보내면 백엔드에서 명령어에 따른 추가, 조회, 삭제를 해주고 그에따른 결과를 리턴해 주었습니다. 원래는 빅스비에서 바로 데이터베이스에 접근하는 방법을 알아보려 했으나 딱히 마땅한 방법이 없고 빅스비 스튜디오에서는NPM을 사용 할 수 없기에 따로 백엔드 서버를 구축하는 방법을 사용하였습니다.
책을 검색하는 것은 알라딘 OpenAPI를 사용했습니다. 북매니저 추천하거나 검색하게 해주어 연결된 링크로 구매하면 수익도 조금 들어옵니다. (아직까지는 제대로된 수익은 없지만요!)
지금은 PHP의 유지보수가 힘들고 자바스크립트가 훨씬 편해서 백앤드 서버를 Node.js로 수정하였습니다.
빅스비의 뷰를 개발하는 것은 제일 힘든 단계였습니다. 빅스비의 전용 언어는 처음써보는 언어이고 지금까지 사용한 언어와는 많은 차이점이 있었습니다. 그래도 공식사이트에서 제공하는 솔루션들을 사용해 개발해보니 제법 깔끔하게 UI가 나와주었습니다.
개발하면서 제일 신기했던 기능은 바로 'trainng' 이었습니다. 빅스비를 학습시키는 곳인데 제가 처음에 제일 걱정했던 학습이 매우 간단한 방법으로 할 수 있어서 안심되면서 신기했습니다.
이 공모전에 참여했을 당시가 처음으로 자바스크립트를 접했을 때였습니다. 이때부터 지금까지 자바스크립트를 계속 사용하고 있지만, 처음에는 접할때 까다로웠던 언어였습니다. 또한 새로운 언어인 빅스비의 언어는 적응하는것이 너무 어려웠습니다. 빅스비의 UI를 개발하는 것은 지금까지의 프론트엔드 개발보다 새로운것이 많고 플랫폼 자체가 달라서 이를 개발하는데 많이 애썼습니다.
혼자 개발을 하면서 어려운 부분이 있었는데, 삼성전자 사옥에 가서 직접 개발자 분들과 이야기를 하며 진행하여 의미가 깊었습니다.
아쉽게도 결선 진출은 놓쳤지만 입상을 하였습니다. 입상도 저에게는 아주 큰 상으로 느껴졌습니다.