공공 데이터로 시작하는 사이드 프로젝트 한 편
"오늘 공기, 진짜 괜찮은 걸까?"
요즘은 출근할 때나 아이를 등원시키기 전에 날씨보다 먼저 공기질을 확인하는 시대입니다.
“오늘 미세먼지 어때?”라는 질문은 이제 뉴스에서도, 날씨 앱에서도, 심지어 버스 정류장 전광판에서도 볼 수 있는 당연한 일상이 되었죠.
하지만 한 가지 아쉬움이 있습니다.
대부분의 공기질 정보는 ‘전국 단위’ 혹은 ‘도시 단위’ 요약값에 불과하다는 점입니다.
그런데 여러분도 느껴보셨을 거예요. 같은 날이라도 우리 동네 공기 상태는 미묘하게 다르다는 걸요.
예를 들어 서울 강남과 노원의 공기 상태가 같다고 느껴지시나요?
부산 서면과 해운대의 대기질이 동일하다고 믿으시나요?
사실 우리 동네만을 위한, 정말 실시간인 공기질 정보가 필요한 이유는 분명합니다.
산책, 출근, 환기, 청소, 외출 계획까지 우리의 행동 하나하나에 영향을 미치기 때문이죠.
다행히도, 정부는 이런 정보를 API 형태로 공개하고 있습니다.
바로 에어코리아(Airkorea) 실시간 대기정보 API입니다.
오늘은 이 API를 활용해 ‘우리 동네 전용 미세먼지 지도’를 만드는 사이드 프로젝트 아이디어를 소개합니다.
복잡한 개발 지식이 없어도 흐름을 이해할 수 있도록 구성했으며,
실제로 만들고 싶은 분들을 위해 활용 예시도 함께 제시합니다.
에어코리아 API란? 누구나 쓸 수 있는 ‘숨은 공기 지도’
에어코리아는 환경부 산하 한국환경공단에서 운영하는 공식 대기질 정보 플랫폼입니다.
이곳에서는 전국 500개 이상의 대기 측정소에서 실시간으로 수집된 데이터를 공개하고 있으며,
그 데이터는 공공데이터포털(opendata.go.kr)을 통해 누구나 무료로 가져올 수 있도록 API 형태로 제공되고 있습니다.
API로 받아올 수 있는 정보는?
에어코리아의 실시간 대기정보 API를 활용하면 다음과 같은 데이터를 호출할 수 있습니다:
PM10, PM2.5 수치: 미세먼지/초미세먼지 농도
통합대기환경지수(CAI): 종합적인 공기질 등급 (좋음, 보통, 나쁨 등)
기타 대기오염물질 수치: 오존, 이산화질소, 일산화탄소, 아황산가스 등
측정 시간: 해당 데이터가 측정된 시각
측정소 위치 정보: 각 대기 측정소의 주소 및 좌표
이러한 데이터를 조합하면, 단순히 수치를 나열하는 수준을 넘어서
‘지도 위에 공기질을 실시간으로 시각화’하는 것도 충분히 가능합니다.
심지어 사용자의 현재 위치를 기반으로, 가장 가까운 측정소의 데이터를 자동으로 불러올 수도 있죠.
무엇보다 중요한 건, 이 모든 기능이 무료이며, 누구에게나 열려 있다는 사실입니다.
개발자든 아니든, 관심만 있다면 누구나 시작할 수 있어요.
우리 동네 미세먼지 지도, 어떻게 만들까?
이제 본격적으로 실시간 미세먼지 지도를 만드는 흐름을 소개합니다.
아래 구성은 최소 기능(MVP) 기준으로 설명드릴게요.
① 사용자 위치 정보 받기
가장 먼저 해야 할 일은 사용자의 현재 위치 정보를 받는 일입니다.
웹이라면 navigator.geolocation을 활용해 브라우저에서 직접 위치 정보를 가져올 수 있고,
앱이라면 GPS 또는 주소 기반 좌표로 대체 가능합니다.
이 위치 정보는 다음 단계에서 가장 가까운 측정소를 찾는 데 사용됩니다.
② 위치 기반 측정소 찾기
이제 공공데이터포털에서 제공하는
측정소 목록 API (getNearbyMsrstnList) 를 사용해
사용자 위치에서 가까운 대기 측정소 리스트를 불러옵니다.
API 요청 시 위도(latitude)와 경도(longitude)를 넣으면,
그 위치에서 가장 가까운 측정소 ID를 돌려줍니다.
우리는 이 ID를 이용해 다음 단계의 데이터를 요청할 수 있습니다.
③ 실시간 대기질 데이터 요청
측정소 ID를 확보했다면,
이제는 getMsrstnAcctoRltmMesureDnsty API를 통해
해당 측정소의 실시간 대기질 데이터를 요청합니다.
예를 들어, 초미세먼지 농도가 52㎍/㎥ 라면,
자동으로 ‘나쁨’이라는 등급을 함께 돌려받을 수 있습니다.
④ 지도에 표시하기
이제 데이터가 준비되었으니,
이를 시각화할 차례입니다.
카카오맵이나 네이버 지도 API,
혹은 Leaflet, Mapbox와 같은 지도 라이브러리를 이용하면
지도에 마커(핀)를 찍고, 데이터 수치에 따라 색깔을 달리하는 등의 UI를 구성할 수 있습니다.
예를 들어,
- PM2.5 0~15: 파란색 (좋음)
- 16~35: 초록색 (보통)
- 36~75: 주황색 (나쁨)
- 76 이상: 빨간색 (매우 나쁨)
처럼 구간별 색상 지정으로 한눈에 보기 쉬운 지도를 만들 수 있습니다.
실생활에 스며드는 서비스로 만들기 위한 확장 아이디어
단순히 공기질을 지도에 보여주는 것만으로는 부족합니다.
진짜 중요한 건, 사용자의 일상에 어떻게 녹여낼 수 있느냐입니다.
아래는 실제로 만들어볼 수 있는 생활형 확장 아이디어입니다.
✅ 미세먼지 알림 서비스
사용자가 주소를 등록하면,
매일 아침 7시에 ‘우리 동네 미세먼지 리포트’를 발송하는 기능입니다.
이메일, 텔레그램, 슬랙, 카카오톡 오픈채팅 등을 활용할 수 있습니다.
“현재 공기질은 PM2.5 기준 ‘나쁨’입니다. 오늘 외출 시 마스크 착용을 권장드립니다.”
같은 간단한 문장 하나로도 정보 체감력은 확실히 달라집니다.
✅ 브라우저 확장프로그램 형태로 만들기
크롬 브라우저 오른쪽 상단에 항상 떠 있는 작은 위젯처럼,
현재 위치의 공기질 수치를 띄워주는 확장 프로그램을 만들 수도 있습니다.
평소엔 숫자만 보여주고, 클릭하면 상세 수치와 24시간 추이를 보여주는 방식으로요.
간단한 HTML+JS만으로도 가능하니 구현 난이도도 낮습니다.
✅ 교육기관 중심의 공기질 모니터링
아이를 보내는 유치원이나 초등학교 주변의 공기 상태를 모니터링해주는 서비스도 유용합니다.
특정 기준 이상일 경우 자동 알림을 발송하거나,
운동장 활동 제한 여부를 안내할 수도 있겠죠.
‘부모 맞춤형 공기질 알림’은
지역 커뮤니티에서도 반응이 좋을 수 있습니다.
✅ 감성형 데이터 수집도 함께
정량적인 미세먼지 수치만으로는 전달력이 떨어질 수 있습니다.
“오늘 뿌연 느낌”, “코가 매캐했다” 같은 주관적인 체감 경험도 함께 수집하면
더 풍성한 ‘공기 감정 지도’가 될 수 있습니다.
이는 사용자 참여 기반의 감성 데이터 시각화로 확장 가능성이 큽니다.
데이터는 이미 공개되어 있다. 이제는 연결할 시간
정부는 이제 단순히 데이터를 수집해 보관만 하지 않습니다.
이제는 누구나 활용할 수 있도록, 공개하고 장려하는 시대입니다.
공공데이터포털에는 매일 수천 개의 데이터셋이 올라오고 있고,
그중 많은 정보는 실시간으로 API로 제공됩니다.
미세먼지 API 역시 그 중 하나일 뿐입니다.
하지만 우리의 일상과 연결되는 정보이기 때문에,
충분히 강력한 사용자 가치를 만들 수 있는 소재입니다.
더 이상 거대한 기술이 필요하지 않습니다.
브라우저의 위치 정보, 지도 API, 간단한 프론트엔드 기술 정도만으로도
충분히 실용적인 미세먼지 지도를 만들 수 있어요.
날씨는 하늘이 정하지만,
공기질을 확인하는 방법은 우리가 만들 수 있습니다.
이 글을 읽는 당신이 오늘 API 키를 하나 발급받는다면,
그게 곧 새로운 서비스를 만드는 첫 걸음이 될지도 모릅니다.