본문 바로가기

회고

(회고) 공공데이터로 만든 ‘특구핏’, 대상 수상까지

이번 공공데이터 공모전에서 ‘특구핏’으로 대상을 받았다.

직접 기획하고 개발한 서비스를 발표하고, 좋은 결과까지 얻으니 기뻤다. 시간이 지나기 전에 어떤 생각으로 서비스를 만들었고, 개발하면서 무엇을 고민했는지 기록해두려고 한다.

관심 분야에 맞는 특구와 기업을 찾을 수 있을까?

특구핏은 하나의 질문에서 시작했다.

“관심 있는 기술 분야는 있는데, 어느 특구의 어떤 기업을 찾아봐야 할까?”

연구개발특구와 입주 기업에 관한 공공데이터는 공개되어 있다. 하지만 특구 정보, 기업의 생산품 정보, 연구소기업 등록 현황이 각각 나뉘어 있어 사용자가 자료를 직접 살펴보고 연결해야 했다.

이 정보를 한곳에서 탐색할 수 있으면 좋겠다고 생각했다. 연구개발특구의 연구성과와 기술사업화에 관심을 가진 사람이 관련 특구와 기업을 알아가는 데 도움이 되는 서비스를 만들고 싶었다.

그렇게 관심 분야와 지역을 바탕으로 특구와 기업·기관을 찾는 웹서비스, 특구핏을 기획했다.

지도에서 시작해 기업 정보까지

특구핏은 지도에서 전국의 광역특구와 강소특구를 살펴보는 것부터 시작한다. 특구를 선택하면 해당 지역의 특화 분야와 관련 정보를 확인할 수 있다.

관심 분야를 선택하면 생산품 정보에 관련 키워드가 있는 기업·기관을 찾아볼 수 있고, 지역 조건을 적용해 탐색 범위를 좁힐 수도 있다.

사용 흐름은 다음과 같다.

특구 살펴보기 → 관심 분야 선택 → 관련 기업·기관 탐색 → 상세 정보 확인

각 기능을 따로 보여주는 것보다, 사용자가 궁금한 정보를 따라 다음 화면으로 자연스럽게 이동하도록 구성하는 데 신경 썼다.

“왜 이 기업이 검색됐는지” 보여주기

개발하면서 특히 중요하게 생각한 부분은 검색 결과의 근거였다.

기업 목록만 보여주면 사용자는 자신의 관심 분야와 그 기업이 어떻게 연결되는지 다시 알아봐야 한다. 그래서 특구핏에서는 기업의 생산품 정보에서 실제로 일치한 키워드를 함께 표시했다.

예를 들어 관심 분야로 ‘AI·SW·ICT’를 선택했다면, 해당 기업의 생산품 정보 중 어떤 표현이 검색 조건에 해당했는지 확인할 수 있다.

결과를 보여주는 것에서 한 걸음 더 나아가, 사용자가 그 결과를 이해할 수 있게 만들고 싶었다.

공공데이터를 서비스에 연결하면서 고민한 것들

데이터를 화면에 표시하는 것만으로는 서비스를 완성할 수 없었다. 서로 다른 자료를 연결하고, 확인할 수 있는 정보와 그렇지 않은 정보를 구분하는 과정이 필요했다.

기관명과 지역 표기 맞추기

같은 기관도 자료마다 이름이나 지역 표기가 다를 수 있었다. 원본 정보는 보존하면서 비교에 사용할 표기를 별도로 정리했다.

연구소기업 등록 명단을 연결할 때도 이름이 비슷하다는 이유만으로 같은 기관이라고 판단하지 않았다. 기관명과 특구가 일치하는 등 명확한 기준을 충족하는 경우에 연결하도록 했다.

정보가 없는 경우를 다루기

생산품 정보가 비어 있거나 의미 있는 내용이 없는 경우에는 관심 분야 검색의 근거로 사용하지 않았다.

데이터가 있다는 이유만으로 모든 항목에 의미를 붙이기보다, 실제로 설명할 수 있는 정보 안에서 결과를 제공하려고 했다.

지도에는 확인된 위치만 표시하기

좌표가 확인되지 않은 기관을 특구 중심점에 임의로 표시하면 실제 위치로 오해할 수 있다. 그래서 검증된 좌표만 지도에 표시하고, 위치를 확인하지 못한 기관은 주소 정보로 안내했다.

이 과정을 거치면서 공공데이터를 활용하는 일에는 데이터를 어떻게 보여줄지뿐 아니라, 어디까지 설명할 수 있는지 판단하는 일도 포함된다는 것을 배웠다.

구현에 사용한 기술

프론트엔드는 Next.js와 TypeScript, 백엔드는 Spring Boot와 Java를 사용했다.

지도는 MapLibre와 PMTiles로 구성했다. 지도 데이터를 서비스와 함께 제공하도록 만들었고, 전체 실행 환경은 Docker Compose로 구성했다.

실제 화면을 확인하는 과정에서는 지도 일부가 회색으로 표시되는 문제도 있었다. 확인해보니 상세 지도 데이터가 비어 있는 구간에서 배경이 드러나는 문제였다. 더 넓은 범위의 지형과 바다 데이터를 바탕에 표시하도록 수정하고, 로컬 환경에서 정상적으로 보이는지 확인했다.

이런 작은 문제들도 직접 화면을 사용해봐야 발견할 수 있었다.

5분 안에 서비스를 설명하기

개발한 내용을 짧은 발표로 전달하는 것도 별도의 작업이었다.

설명하고 싶은 기능과 데이터 처리 과정은 많았지만, 발표 시간은 약 5분이었다. 기능을 하나씩 나열하기보다는 다음 흐름으로 내용을 정리했다.

  • 왜 이 서비스를 만들었는지
  • 사용자가 무엇을 할 수 있는지
  • 공공데이터를 어떤 기준으로 연결했는지
  • 검색 결과를 어떻게 설명하는지

발표 자료에는 실제 웹 화면을 넣었다. 관심 분야를 선택하고, 관련 기업을 찾고, 검색된 근거를 확인하는 과정을 화면으로 보여주려고 했다.

발표를 준비하면서 서비스의 핵심도 다시 정리할 수 있었다.

특구핏은 관심 분야에 맞는 특구와 기업을 찾고, 그 연결 근거까지 확인하도록 돕는 서비스다.

 

대상 수상, 그리고 남은 것

대상을 받았다는 결과는 기쁘고 오래 기억에 남을 것 같다.

이번 프로젝트에서는 기획부터 데이터 연결, 개발, 화면 구성, 발표까지 하나의 서비스를 완성하는 과정을 경험했다. 특히 공개된 데이터를 사용자가 이해하고 탐색할 수 있는 정보로 바꾸는 데 생각보다 많은 판단이 필요하다는 것을 느꼈다.

앞으로도 데이터 갱신과 위치 검증, 다양한 기기에서의 사용성처럼 개선할 부분이 있다. 실제 사용자가 어떤 정보를 찾고 어디서 막히는지 살펴보면서 발전시키고 싶다.

 

그리고 더 중요한 것은 발표이다. 

1. 이 서비스를 왜 만들었는지 ??

2. 그래서 사용자가 무엇을 할 수 있는지 ??

이 두가지를 청중한테 어떻게 잘 녹여내서 설명하는지가 젤 숨겨져있는 핵심인 것 같다. 다음 발표 때도 잊지 말자

 

공공데이터에서 출발한 아이디어를 직접 작동하는 서비스로 만들고, 대상이라는 결과까지 얻은 경험. 다음 프로젝트를 시작할 때도 이번에 고민했던 기준과 과정을 기억해두려고 한다.

 

 

 

혹시나 궁금하다면

https://daisy.wisoft.dev/innopolis