2021년 1학기: 수업 프로젝트의 종착지, 광대버스
지금의 길을 걷게 된 결정적인 이유가 되어버린 버스 프로젝트
[광대버스 앱 다운로드]
[블로그: 자바 버전 포스팅]
[블로그: 광대버스 소개]
[Github 저장소 바로가기]
[내 인생의 분기점은 ‘버스’다]
고등학생 때까지는 별다른 접점이 없었던 버스. 어렸을 때 그저 ‘빨간 버스’(급행간선) ‘노란 버스’(간선) ‘초록 버스’(지선) ‘연두 버스’(마을) 정도로만 나누어 부르고, 몇몇 자주 타는 노선(첨단09, 봉선37, 문흥18 등) 말고는 크게 관심이 없었습니다. 빨간 버스 같으면 무등산 갈 때 타는 버스. 18번 버스는 형들이 대학교 갈 때 사람 너무 많이 타서 힘들었다는 버스. 이렇게 특징으로 기억했지요. 고등학교까지는 걸어 다닐 만한 거리였기 때문에, 버스를 타는 경우는 저기 유스퀘어 갈 때 아니면 잘 없었습니다.
그러나 2018년 저는 대학생이 되었고, 전남대학교는 집에서 도저히 걸어갈 수 없는 거리이기 때문에 (물론 중학교 때 걸어가 본 적 딱 한 번 있었습니다만… 5시간…) 버스를 정기적으로 타게 되었고, 문흥18번과 수완49번 등 몇몇 노선을 꾸준히 타게 되며 점점 익숙해지기 시작했습니다.
그러다보니, 시내버스에 조금씩 관심이 생겼고, 버스를 타고 통학한 것을 넘어 학교 수업 때 적극적으로 활용하기 시작합니다.
글쓰기 시간, 버스를 주제로 글쓰기
1학년 2학기 당시 글쓰기 수업은 필수교양으로 지정되어 반드시 들어야 했는데, 초반에는 간단한 한두 단락 글쓰기였지만 중간고사 이후에는 완성된 형태의 학술적 보고서를 조금씩 작성해야 했습니다. 희한하게도, 표절 방지 차원인지 제출은 일반 공책에 직접 자필로 작성하여 내야 했습니다(…) 아무튼, 이때 저는 문흥18번의 만차에 점점 질리고 있었고, 그래서 문흥18번의 배차간격을 줄이든 차를 늘리든 해줬으면 하는 생각이 많이 들어, 정말 어쩔 수 없는지 알아보기 위해 버스 관련 자료를 찾아보기로 했습니다. 그렇게 광주광역시 시내버스 관련 자료를 찾을 수 있었고, 이만하면 글을 쓸 수 있을 것 같아 활용하게 되었습니다.
지금 생각해보면 제 인생의 첫 번째 학술적 글쓰기(?)가 되었군요. 길이도 6페이지 수준으로 일반 포스터 논문보다는 길었음을 알 수 있습니다. 읽어보고 싶으시다면 아래 첨부파일을 참고해 주세요.
글쓰기 최종본: 광주광역시 시내버스 혼잡 노선의 개선 방안(대학교 1학년)
생활영어 시간, 버스를 주제로 발표
1학년 2학기 생활영어 시간에 자유 주제로 영어 발표를 해야 했는데, 뭘 할까 고민하다가 글쓰기 시간에 모아둔 자료를 바탕으로 광주광역시 시내버스를 주제로 발표를 준비하게 됩니다. 지금 열어보니 실속은 없지만… 재미는 있어 보이네요. 당시 모아둔 자료 덕분에 발표는 수월하게 진행했던 것 같은데… (학점은 영…ㅋㅋ) 그래도 참 즐거웠던 생활영어 시간이었습니다.
그렇게 두 차례 버스와 인연을 가진 후, 저는 2019년 2월 군 입대를 하게 됩니다.
[전역 및 코로나 이후 첫 수업, 소프트웨어공학기초프로젝트]
그리고 전역한 이후 저는 전공 필수 과목에 더해서, 소프트웨어 개발에 관한 경험을 갖기 위해 ‘소프트웨어공학기초프로젝트’ 교과목을 신청하게 됩니다. 이 수업은 전반기 간단한 이론을 학습하고 중간고사 이후에 팀 프로젝트가 진행되는 방식이었는데요, 그래서 무엇을 만들까 미리 고민해볼 수 있었습니다. 당시 샘플로 제시된 프로그램들은 비교적 간단한 내용이고 포트폴리오로 남기기에는 뭔가 부족한 느낌이었어서, 저는 저만의 무언가를 만들어보고 싶었는데요, 그렇게 저는 무언가를 열심히 검색했고, 가능성을 봤고, 주제를 제시하게 됩니다.
그것은 바로 스마트폰 버스 안내 앱의 PC 버전을 만드는 것이었습니다.
GUI를 요구하는 일이었지만, 당시 제가 알고 있던 지식은 안드로이드 스튜디오를 통해 다져진 Java 언어밖에 없었습니다. 그렇다고 안드로이드 앱으로 만들기에는 발표하기도 불편하고 시연도 어려우므로, Java의 고전 GUI 패키지인 Swing을 한번 사용해보기로 하였습니다. (실제로 지금도 Java 학습 도서에 보면 후반부에 Swing이 있긴 한데…) 사실 제가 이걸 만든 2021년 기준으로도 Swing은 이미 유물이었지만, 그래도 제가 당시에 그나마 쉽게 이해할 수 있는 게 이거였고 이때 아니면 사용해볼 일도 없을 것 같아서 한번 만들어보고 싶었습니다.
공공데이터 포털에 올라와 있는 광주광역시 BIS(버스정보시스템) 관련 API를 요청받아 그 정보를 잘 나눠서 버스 앱 형태로 표시해주기만 하면 되기 때문에 비교적 단순했고, 조금만 신경쓰면 충분히 완성할 수 있다고 생각했습니다. 그렇게 중간고사가 끝난 2021년 4월 말부터 조금씩 시작했습니다.
이 프로젝트는 사실 팀 프로젝트로 진행되었지만, 2학년 1학기가 사실 Java 언어를 막 배우는 시점이었고, 당시 시점에 배우지 않았던 내용을 사용하던 게 좀 많았습니다. 그래서 사실상 제가 팀원에게 설명하면서 일부 페이지만 만들어달라고 요청하고, 실질적으로 저 혼자 주요 부분을 완성했었는데요, 여기에 팀원으로 소속되어 있던 당시 4학년 선배님이 데이터베이스 쪽을 맡아주시면서 (즐겨찾기 저장 기능) 완성도를 더욱 높였습니다.
Java Swing은 코드로 직접 레이아웃을 짜는 방식으로, 안드로이드의 XML 방식과는 차이가 있고 직관적이지 못합니다. 이런 상황에서 원하는 레이아웃을 구성하기 위해, 여러 레이아웃을 중첩하는 아이디어를 내었고 어떻게 중첩하는 게 좋을 지 이해하기 위해 ppt를 활용해 예상되는 화면을 디자인했습니다. 위의 실제 디자인과 비교해 보세요.
그렇게 중간 발표를 마친 지 얼마 후인 2021년 5월 31일, 수업 담당 교수님이 이클래스 쪽지를 통해 연락해 오셨고, 학부 연구생으로 초대해주셨습니다. 잠깐의 고민 끝에 현재까지도 몸담고 있는 연구실에 들어가게 됩니다. 그때만 해도 새로운 경험을 해보는 선에 그치지 않았지만, 어느 순간부터 저는 연구자라는 새로운 목표를 심기 시작하고, 지금에 이르고 있습니다.
[안드로이드로 이식]
처음 연구실에 들어온 2021년 6월. 사실 그때까지만 해도 딱히 시키는 것도 없고, 제가 하고 싶은 일을 할 수 있었기 때문에, 저는 해당 PC 버전 버스 앱을 안드로이드로 이식하는 프로젝트를 개시했습니다. 집에서 가끔, 학교에서 가끔 진행했는데, 사실 Java Swing과 안드로이드는 디자인도 코드도 많이 다르기 때문에 공공데이터 API를 불러와서 클래스로 만드는 부분을 제외하면 거의 다 새로 만들어야 했습니다. 그래도 즐거운(?) 마음으로 한 화면씩 만들었습니다. 만들면서 PC 버전에서는 만들지 못했던 기능도 하나 추가하기도 했습니다. (왼쪽 위 사진인 출퇴근 버스 기능이 그것입니다.)
(Swing에서는 반복문을 활용해 Layout을 일일이 추가했지만, Android에서는 RecycleView를 활용했습니다. 즐겨찾기를 위한 데이터베이스 역시 위에서는 별도의 DB를 썼지만 Android에서는 SharedPreference로 대체했고요.)




그렇게 2021년 6월 27일, 광대버스(광주광역시 대학생이 만든 버스 앱)라는 이름으로 공식 출시하게 되고, 이날 이후로 저는 광주광역시 시내버스 알림을 오직 이 앱으로만 받고 있습니다. 내돈내산(내 돈으로 내가 산다)이 아니라 내만내쓴(내가 만들어 내가 쓴다)의 좋은 예시가 되었죠.
[버스 앱 근황]
2021년 6월 말 출시 이후 약간의 수정을 거쳐 2022년 초에 현재 모습이 되었고, 그 이후로는 연구실 일이 본격적으로 많아지면서 더는 손대지 못하고 있습니다. 그렇지만 광고가 없는(!) 이점으로 인해 앱 사용자는 조금씩 늘어갔고, 결국 광주권 앱임에도 불구하고 500회 다운로드를 개인 통산 3번째로 돌파하고, 올해 1000회 다운로드 돌파를 앞두고 있습니다.
사실 시간만 있었다면 더 좋은 기능을 추가할 수도 있었겠지만, 현 시점에서 이 앱에 신경 쓰기에는 너무나 멀리 왔기에… 있는 그대로 서비스 종료 시점까지 잘 사용하고 싶습니다.
이렇게 광대버스는 저의 2학년 대표 프로젝트로 자리잡게 되었습니다. 다음 글에서는 3학년 프로젝트를 소개해드리려고 합니다.