새소식

2020년

Flutter로 다시 만든 앱 - 가야곡초중학교

자바를 사용해 가야곡초중학교 앱을 만든 뒤, 나에게 꾸준히 들려오는 건의가 있었다. 바로, 아이폰에서도 앱을 사용하게 해 달라는 것이었다. 대부분의 경우에는 자바/코틀린을 사용해 안드로이드용 앱을 만들고, swift/objective c를 사용해 ios용 앱을 만든다. 10명도 안 되는 사람을 위해 새로운 언어를 사용해 처음부터 앱을 제작하는 것도 무리가 있었다. 또한, 폐쇄적인 애플의 특성상 ios용 앱을 만들기 위해선 무조건 mac os를 사용해 프로그래밍해야 한다. 

그렇게 ios용 앱은 못 만드나 했으나, 우연히 Flutter를 알게 됐다. Flutter는 구글이 밀던 것으로 한 번 프로그래밍하면 안드로이드뿐만 아니라, ios, 웹, 윈도우, 리눅스, mac 등 다양한 운영체제에서 사용할 수 있는 크로스플랫폼 프레임워크였다. 선언형 프로그래밍 언어로 생산성이 좋다는 점과, 향후 안드로이드의 뒤를 이을, 현재 구글이 개발 중인 퓨시아의 메인 개발환경이 될 것이란 점도 나에겐 흥미롭게 느껴졌다.

 

그렇게 해서, 자바로 만든 가야곡초중학교 앱을 Flutter를 사용해 새로 만들기로 결정했다. 이 앱은 2020년 중반 즈음부터 만들기 시작해 1년이 걸려, 2021년에 개학할 때 완성했다. 코로나로 개학이 미뤄지지 않았다면, 개학하기 전에 완성시키지 못했을 것이었다.

 

앱을 만들 때, 디자인에 적지 않은 신경을 썼었다. 이 앱을 만들기 전에 플레이스토어에 비슷한 앱이 있는지 참고했었는데, 그 앱들보다 더 잘 만들고 싶었기 때문이었다. 예전 앱에선 급식과 일정을 나이스 페이지에 들어가서 크롤링하는 방식을 사용했었는데, 이 버전에서는 나이스 api를 사용하도록 바꿨다.

별 게 아닌 것처럼 보일 수 있지만, 갤러리를 만드는 데 가장 큰 신경을 썼다. 학교 홈페이지는 속도가 많이 느리기 때문에, 학교 홈페이지에 있는 모든 이미지들을 내 서버로 다운로드시켜, 학교 홈페이지를 거치지 않고 내 서버로 접속해 사진을 보여주게 프로그래밍했다.

사진 : 벨로퍼트와 함께하는 모던 자바스크립트

매우 많은 수의 이미지를 다운로드해야 했기 때문에, 이미지의 확장자를 가장 최신에 나온 webp로 바꾸고 크기를 조금 줄여 다운로드하게 프로그래밍했다. 또한, 동기적 처리가 아닌 비동기적 방법을 사용해 이미지들을 다운로드했다. 동기는 한 작업이 끝나기를 기다리고 다음 작업을 처리하는 것을, 비동기는 기다리지 않고 처리하는 것을 의미한다. 비동기로 프로그래밍하는 것이 난이도가 더 높기는 했지만, 비동기로 이미지를 다운로드하는 것이 동기로 다운로드하는 것보다 빨랐기 때문에 비동기로 이미지들을 다운로드했다.

 

Flutter란 새로운 프레임워크(도구)도 알게 되고, 정보를 사용자에게 더 빨리 전달할 수 있게 node.js란 프로그래밍 언어로 서버를 구축했었다. 또한, 이미지들의 전처리를 거쳐 용량을 줄이고 비동기적으로 다운로드해 모든 이미지들을 다운로드하는 데 걸리는 시간을 단축할 수 있었다. 앱의 디자인이 더 좋아졌을 뿐만 아니라, 새로운 프로그래밍 언어들, 비동기로 프로그래밍하는 방법 등 많은 것들을 익힐 수 있는 프로젝트였던 것 같다.

소중한 공감 감사합니다