본문 바로가기
앱 프로그래밍/flutter

플러터로 기상청 날씨 앱 만들기 일지 8. 마무리

by 청량리 물냉면 2022. 1. 17.
반응형

완성된 날씨 어플

위치는 한남동 유엔빌리지로 설정...
하단 정보는 gif 파일 촬영 후 추가했다.

 

 

마무리

3주간의 앱 제작 프로젝트가 마무리되었다. 사실 해결할 에러도 하나 있고, 예외처리나 리팩토링도 하고, 앱바의 pin 이모티콘 처리도 해야하지만😭(이모티콘을 삭제하거나 검색 기능을 추가하거나) 초기 구상했던 일반적인 기능구현은 다 끝났다. 따라서 우선 여기서 프로젝트 마무리를 짓고, 추가적인 수정은 앞으로 종종 시간이 날 때마다 해보기로 했다. 이제 프로젝트를 통해 배운 점과 부족한 점을 회고하면서 포스팅을 마무리 하려고 한다.

 

 

배운 점

1. 스택 오버 플로우 사용 및 영어로 코딩관련 질문을 하는 것에 익숙해졌다.

플러터는 아직 자바나 c언어 등에 비해 국내에 자료가 부족하다. 그래서 필요한 정보를 얻기 위해 거의 영어로 구글링을 했고, 이 과정에서 거부감 느껴졌던 영어와 많이 친숙해진 것 같다. 나중에는 자연스레 한국어보다 영어로 검색을 하고 있는 나 자신을 발견하게 되었다. 

 

2. REST API 사용법을 익혔다.

말로만 들었던 REST API를 아주 많이 사용해 보았다. 날씨데이터(단기예보, 초단기실황. 특정 시간 단기예보), 미세먼지 데이터, 구글맵, 카카오맵까지... 다양한 api를 처리하여 json데이터를 파싱하고 불러와 특정 데이터를 추출해 사용하는 방법까지 익혔다. 

 

3. 저작권 준수를 위한 정보를 다수 알게 되었다.

저작권을 지키기 위해 아이콘, 이미지, 폰트 등 하나하나 상업적 사용이 가능한지, 개인 프로젝트에 사용 가능한지 살펴보고 오픈소스 라이센스 고지 방법도 익혀가면서 저작권을 준수하도록 애썼다. 이 과정에서 대학 수업 시간에 들었던 오픈소스 라이선스 종류들과 각 라이선스의 사용 허용 범위 등을 다시 익혔다.

 

4. 플러터 UI 구현에 익숙해졌다.

처음에는 클래스를 만들고 페이지를 이동하고, 위젯 안에 위젯을 만드는 등의 작업이 어렵게만 느껴졌지만 인터넷을 통해 정보를 서칭하고 하나씩 공부해 나가다보니 어느 새 하나의 페이지를 뚝딱 만들 수 있게 되었다. 물론 아직도 부족한 점이 많지만 많은 실습과 프로그램 제작을 해나가다보면 지금보다는 더 나아진 UI를 만들 수 있을 거라고 생각한다. 안드로이드나 웹페이지 제작도 플러터 UI 구현과 크게 다르지 않을 거라고 생각하기 때문에, 다른 플랫폼으로 진출했을 때도 이번 프로젝트에서 배운 경험이 유용하게 쓰일 것 같다. 

 

5. 깃허브에 중요 정보(api key 등)를 은닉하면서 프로젝트를 올리는 법을 습득했다.

관련 포스팅: 2022.01.09 - [앱 프로그래밍/flutter] - 플러터 API key 숨기기

 

플러터 API key 숨기기

플러터 어플을 만들면서 생각없이 api 키를 그대로 깃헙에 올렸다가 api 키가 그대로 노출된 것을 보고 다급히 커밋을 모두 삭제했다. 아까운 커밋들...ㅠㅜ 그러면서 깃헙 브랜치도 바뀌어 버려

florescene.tistory.com

 

그 외에도 플러터 dart 문법이나 날짜, 시간 표현, 깃 사용법 등을 배웠다.😀

 

 

아직 부족한 점

원래 계획은 구글 플레이 스토어 출시까지 해보는 것이었지만 여러가지 이유로 무산되었다.

가장 큰 이유는 기상청 api 호출 시 HTTP 에러가 너무 많이 발생한다. 기상청 데이터를 db화 해서 서비스를 제공하는 어플도 있는 걸로 알지만 현재로서는 db화 구현 자신이 없다. HTTP 에러 발생시 아예 앱 자체가 실행되지 않기 때문에 서비스는 어렵다고 판단했다.

두 번째 이유는 너무 느린 로딩 속도. 코드를 예쁘게 짜고 효율적으로 짜는 방법을 공부해야겠다는 다짐을 하게 만든 계기이다. 어떻게든 필요한 기능을 만들기에 급급하다보니 클린코드는 뒷전이었다. 그리고 여태 여러 번 코드를 작성해 보면서도 클린 코드를 위해 노력한 적은 드물었다. 하지만 많은 사용자에게 서비스하기 위해서는 적은 용량, 빠른 처리 속도를 코드 작성 시에도 계속 유념하고 신경써야만 한다는 것을 깨달았다.

세 번째 이유는 정보의 부정확성이다. 기상청 정보를 바탕으로 했지만 일 최저, 최고 기온과 3일간 오전, 오후 아이콘 데이터는 새벽 2시 데이터에서 얻어온다. 새벽 2시에 발표된 고정된 정보는 아무래도 실시간으로 관측하고 업데이트한 데이터에 비해 부정확할 수밖에 없을 것이다. 그 외에도 여러 api를 불러오기도 했고, 혼자 여기저기 검색해 얻은 정보를 짜깁기하여 코딩을 하다 보니 시간 처리나 날짜 처리에 미흡한 부분도 분명 존재할 것이기 때문에 날씨앱의 신뢰도에 자신이 없었다.

 

 

아직 처리해야 할 에러가 존재하고 리팩토링도 넘어야 할 산이기는 하지만 실제 휴대폰으로 구동되는 어플을 보니 신기하기도 했고 나름 이 정도까지는 만들었다는 보람을 느끼기도 했다. 부족하지만 우선 이 정도에서 프로젝트를 마무리 하고 이번 프로젝트를 통해 배운 것들을 다른 프로그램 제작 시에도 유용하게 활용할 수 있었으면 좋겠다. 

 

프로젝트를 올려놓은 깃허브 주소는 https://github.com/zlecoding/Flutter-App-zleco_weather_app

 

GitHub - zlecoding/Flutter-App-zleco_weather_app: 플러터 날씨 앱 제작

플러터 날씨 앱 제작. Contribute to zlecoding/Flutter-App-zleco_weather_app development by creating an account on GitHub.

github.com

Git master / main 병합을 못해서 master branch에서는 main branch 커밋이 보이지 않는다.😂 깃 관련해서도 많이 공부해 봐야겠다. 

반응형