내가 ‘오픈 데이터’로 자동화한 소소한 일상

0
0650e72d9e91

며칠 전 동네 카페에서 커피를 기다리며 문득 스마트폰을 꺼내 국립국어원의 새말 모음을 확인했다. ‘콘텐츠 창작자’ 같은 단어가 익숙하지만, ‘데이터 리터러시’라는 용어가 요즘 자주 보인다. 데이터를 읽고 해석하는 능력을 뜻하는 이 단어는 사실 나에게 아주 가까운 화두다. 몇 년 전부터 오픈 데이터에 빠져서, 공공 데이터 포털을 뒤지며 살림살이에 적용해 왔기 때문이다.

내가 '오픈 데이터'로 자동화한 소소한 일상

처음에는 단순히 호기심이었다. 정부에서 무료로 제공하는 데이터가 이렇게 많다니? 교통사고 통계, 미세먼지 농도, 심지어 동네 공원의 나무 종류까지. 그런데 이걸 어떻게 활용할까 막막했다. 엑셀 파일을 열어보고는 ‘아, 이걸 내가 뭐에 쓰지?’ 하며 닫길 반복했다. 특히 초기에는 데이터를 열기만 하면 수만 행의 숫자가 쏟아져 나와서 어지러울 정도였다. 예를 들어 전국 공원 데이터를 다운로드했는데, ‘수목종류’ 컬럼에 학명으로 적힌 나무 이름이 나열되어 있었다. 플라타너스, 느티나무, 은행나무… 그걸 보며 ‘이걸로 뭘 하라는 거지?’라는 생각이 먼저 들었다. 그러다 작년, 한국정보화진흥원의 오픈 데이터 활용 사례를 보면서 눈을 떴다. 다른 사람들은 이미 데이터로 동네 맛집 지도를 만들거나, 자전거 사고 위험 지역을 분석하고 있었다. 어떤 분은 경찰청의 교통사고 데이터를 시각화해서 ‘우리 동네 위험한 횡단보도’ 지도를 만들기도 했다. 그 사례들을 보면서 ‘아, 데이터는 그냥 숫자가 아니라 이야기구나’라는 깨달음을 얻었다.

내가 처음 만든 자동화는 아주 단순했다. 기상청의 동네 예보 데이터를 가져와서, 아침 7시에 텔레그램으로 ‘오늘 우산 챙겨!’ 메시지를 보내는 봇이었다. 파이썬 코드도 겨우 짤 줄 아는 수준이었지만, 공공 API 문서를 따라 하다 보니 생각보다 어렵지 않았다. 사실 처음에는 API 호출조차 두려웠다. ‘내가 잘못 건드리면 서버가 터지지 않을까?’ 하는 걱정도 있었다. 하지만 막상 해보니, 기상청 API는 매우 친절하게 문서화되어 있었고, 심지어 예제 코드까지 제공하고 있었다. 첫 메시지가 도착했을 때의 쾌감이란. 마치 내 손으로 작은 로봇 하나를 만든 기분이었다. 그날 아침, 우산을 챙기라는 메시지를 보고 실제로 비가 내렸을 때의 희열은 아직도 잊히지 않는다.

그다음에는 좀 더 욕심을 냈다. 서울시의 대중교통 데이터를 이용해 내 출퇴근 버스의 실시간 위치를 스마트워치에 띄우는 대시보드를 만들었다. 평소 10분 간격이던 버스가 갑자기 25분 간격으로 뜨면 미리 대비할 수 있었다. 이게 얼마나 큰 차이인지 아는가? 아침 지각이 확 줄었다. 게다가 이 데이터는 누구나 쓸 수 있는 개방형이라서, 다른 사람들도 비슷한 앱을 만들고 있었다. 예를 들어 ‘서울 버스 도착 정보’ 앱은 모두 이 데이터를 기반으로 한다. 하지만 내 대시보드는 스마트워치에 최적화해서, 주머니에서 폰을 꺼낼 필요 없이 손목만 보면 바로 알 수 있다는 점이 차별점이었다. 덕분에 출근길에 버스가 오는지 확인하기 위해 스마트폰을 여러 번 켜는 번거로움이 사라졌다.

물론 모든 게 순조롭진 않았다. 데이터를 가져오는 API가 갑자기 바뀌거나, 서버가 다운되는 일도 잦았다. 특히 지자체별로 데이터 형식이 달라서, 같은 카테고리인데도 전처리에 시간이 많이 들었다. 예를 들어 서울시의 버스 정류장 데이터는 위도 경도가 소수점 6자리인데, 부산시는 4자리인 경우가 있었다. 이런 걸 하나하나 맞추려면 엑셀 함수를 밤새 붙잡고 있어야 했다. 한번은 부산시 데이터를 분석하다가 좌표계가 달라서 전혀 다른 위치에 버스 정류장이 표시된 적도 있다. 그때는 ‘WGS84’와 ‘UTM-K’의 차이를 처음 알게 되었다. 이런 좌표계 변환 작업은 초보자에게는 꽤 큰 장벽이지만, 한 번 익히면 다른 데이터에도 응용할 수 있어서 유용하다.

하지만 그런 수고를 감수할 만큼 재미있는 점도 많았다. 데이터 속에서 작은 트렌드를 발견하는 즐거움. 작년 여름 우리 동네 공공 와이파이 사용량이 갑자기 폭증한 날이 있었는데, 알고 보니 동네 축제 날짜와 정확히 일치했다. 이런 걸 발견하면 마치 탐정이 된 기분이다. 통계청의 지역별 축제 데이터와 와이파이 사용량을 교차 분석해 보면 재미난 인사이트가 나온다. 예를 들어, 축제 기간 동안 와이파이 사용량이 평소보다 3배 이상 증가하는 패턴을 발견했다. 특히 야간 축제가 열린 날은 사용량이 더 폭증했는데, 아마도 사람들이 불꽃놀이 사진을 업로드하거나 실시간 스트리밍을 하는 영향으로 보인다. 이런 분석 결과를 동네 커뮤니티에 공유했더니, 주민들도 신기해하며 ‘우리 동네 데이터가 이렇게 재미있는 이야기를 숨기고 있었다니’라는 반응을 보였다.

또 다른 예로, 도서관 대출 데이터를 분석해 본 적이 있다. 서울시 도서관 정보 데이터를 가져와서, 동네별로 가장 많이 대출된 책을 조사해 보았다. 강남 지역은 자기계발서가 많았고, 관악구는 대학가 특성상 전공 서적이 많았다. 특히 신림동 쪽에서는 웹툰 관련 도서가 인기가 많아서, 이 동네에 웹툰 작가가 많이 거주하는 것은 아닌지 궁금해지기도 했다. 이런 분석은 단순한 호기심에서 시작했지만, 지역 특성을 이해하는 데 큰 도움이 된다.

요즘은 이 데이터를 블로그에 정리해서 올리고 있다. ‘공공 데이터로 찾은 우리 동네 숨은 명소’ 같은 시리즈를 연재 중인데, 의외로 반응이 괜찮다. 어떤 분은 댓글로 “덕분에 아이랑 갈 만한 새로운 공원을 찾았어요”라고 하기도 했다. 이게 바로 데이터의 힘이 아닐까. 단순한 숫자가 사람의 삶에 작은 변화를 줄 수 있다는 게 신기하다. 또 다른 독자는 “저도 데이터 분석을 시작해 보고 싶은데, 어떻게 시작해야 할지 모르겠어요”라는 질문을 남겼다. 그래서 최근에는 블로그에 ‘공공 데이터 분석 입문 가이드’ 시리즈를 추가로 연재하고 있다. 첫 번째 글로 ‘엑셀로 시작하는 데이터 분석’을 올렸는데, 생각보다 많은 분이 관심을 가져주셨다.

물론 한계도 있다. 오픈 데이터는 갱신 주기가 길거나, 실제 현장과 다른 경우도 있다. 예전에 동네 도서관의 장서 데이터를 분석했는데, 실제로 가보니 폐관된 도서관이 데이터에는 살아 있었다. 그래서 데이터를 맹신하지 않고, 현장 확인을 병행하는 습관이 생겼다. 데이터는 좋은 참고자료이지, 절대적인 진리가 아니다. 이 경험 이후로는 항상 데이터의 갱신일자를 먼저 확인하고, 가능하면 최근 1년 이내의 데이터를 사용하려고 노력한다. 또한, 데이터가 실제와 다른 경우를 대비해 여러 출처를 교차 검증하는 것도 중요하다.

그래도 앞으로의 계획은 더 크다. 다음 목표는 지역 농수산물 가격 데이터를 활용해 ‘오늘 장보기 리스트’를 추천해 주는 서비스를 만드는 것이다. 이미 농림축산식품부의 농산물 유통 정보를 크롤링해서 시험 중인데, 한 달간 데이터를 모아보니 계절별 가격 변동 패턴이 확연히 보인다. 예를 들어 9월에는 배추 값이 쌀 때가 많고, 12월에는 귤이 저렴하다. 이걸 알면 장을 더 알뜰하게 볼 수 있다. 또한, 최근에는 가격 데이터에 날씨 정보를 결합해 보았다. 예를 들어, 폭염이 지속된 후에는 채소 가격이 급등하는 경향이 있었다. 이런 패턴을 알면, 장보기 시점을 조절하는 데 도움이 된다. 앞으로는 이 데이터를 기반으로 ‘이번 주 추천 장보기 목록’을 자동으로 생성하는 서비스를 개발할 계획이다.

한 가지 아쉬운 점은, 이런 데이터 활용법을 아직 많은 사람이 모른다는 것이다. 주변에 물어보면 “공공 데이터? 그런 게 있어요?”라는 반응이 태반이다. 그래서 블로그에 초보자용 가이드도 쓰고 있다. 파이썬을 몰라도, 엑셀만 다룰 줄 알면 쓸 수 있는 쉬운 팁 위주로. 예전에 네이버 검색에서 ‘오픈 데이터 활용법’을 찾아보던 내 자신을 떠올리며, 그때는 없었던 친절한 가이드를 만들어 보려 한다. 예를 들어, ‘공공데이터포털에서 데이터를 다운로드하는 방법’부터 시작해서, ‘엑셀로 간단한 그래프 그리기’, ‘데이터 정리 팁’ 등을 단계별로 설명하고 있다. 특히, 데이터를 다운로드할 때 자주 발생하는 인코딩 문제(예: 한글이 깨지는 경우)를 해결하는 방법을 상세히 다루었더니, 독자들의 반응이 좋았다.

마지막으로, 이 모든 작업에서 느낀 점은 ‘데이터는 혼자 하는 게 아니라 함께 하는 것’이라는 사실이다. 깃허브에 공유된 다른 사람의 코드를 보며 배우고, 내가 만든 것도 공개한다. 그러면 예상치 못한 곳에서 도움을 받기도 한다. 작년에 내 버스 대시보드 코드를 어떤 개발자가 개선해서 풀 리퀘스트를 보내줬다. 그분은 내 코드에서 실시간 위치 갱신 주기를 30초에서 10초로 줄이는 최적화를 해주었고, 덕분에 더 쾌적한 사용자 경험을 제공할 수 있었다. 그렇게 커뮤니티가 조금씩 확장되는 걸 보면, 오픈 데이터의 진정한 가치는 ‘개방’과 ‘공유’에 있다는 생각이 든다.

앞으로도 꾸준히 데이터를 살피고, 내 일상에 적용할 방법을 고민할 생각이다. 다음 주말에는 동네 공원의 벤치 위치 데이터를 가져와서, 가장 그늘이 많은 산책 코스를 만들어볼 참이다. 아, 참고로 그 데이터는 공공데이터포털에서 ‘서울시 공원 벤치 위치 정보’로 검색하면 누구나 내려받을 수 있다. 이 글을 보는 당신도 한번 도전해 보길. 생각보다 재미있으니까.

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다