- 해커톤 공포증
작년 교내 해커톤을 망친 이후로 내게 해커톤은 공포의 대상이었다. 학교 외부적으로 하는 해커톤에도 참가한 적이 없다. 해커톤이 포트폴리오에 굉장히 큰 역할을 하는 것을 생각하면 멍청한 짓이었다. 그걸 깨닫고 하이톤에 참가했지만 서류에서 탈락했다.
그러던 중 기회가 찾아왔다. 교내 겨울 해커톤을 진행한다는 소식이었다. 작년 해커톤을 망친 원인은 1학년이 아니었다. 그랬기에 1학년 끼리만 진행하는 이번 겨울 해커톤이 최적의 기회였다.
- 팀 빌딩
팀 빌딩 조건은 '같은 반 2명 이상 금지'였다. 개발 실력에도 제한을 둘 줄 알았지만 그건 아니었다. 이 조건 안에서 원하는 대로 팀 빌딩을 진행했다. 팀 빌딩은 굉장히 순조로웠다. 1학년 중 안드로이드 개발을 가장 잘하는 친구가 합류 제안을 했다.
그렇게 안드로이드, 디자인, 서버 그리고 iOS 분야로 팀이 결성되었다. 팀 이름은 '우아한 형제들'을 오마주한 '우아한 남매들'로 정했다.
- 브레인스토밍
주제는 '신입생들을 위한 서비스'였다. 생각보다 어려운 주제는 아니었다. 이미 신입생들을 위한 서비스를 개발한 경험이 있었기 때문일 것이다. 커뮤니티, 채팅 앱 등 많은 아이디어들이 나왔지만 학교에 대한 궁금한 점을 물어볼 수 있는 AI 챗봇으로 결정되었다.
그래도 챗봇만 있으면 허전하니 CRUD 커뮤니티를 추가하기로 했다.
- 개발 준비
시간이 촉박한 해커톤인 만큼 디자인 패턴을 포기하기로 했다. 그리고 공부 중이던 UIKit를 뒤로하고 SwiftUI를 사용했다.
시간을 절약하기 위해 최대한 효율적인 계획을 짰다. 앱 디자인이 완성되는 동안 개발자들은 뷰 외의 코드를 짜고, 개발이 시작되면 디자이너가 발표자료를 준비하기로 했다. 서버는 계획과 상관없이 일해야 했다.
- 1일차 오전
클로바 스튜디오에서 AI에게 천 개 이상의 학교 정보를 학습시켰다. 이 기능은 서버를 거칠 필요가 없어서 이것부터 개발하기로 했다. 처음에는 재활용할 수 있는 컴포넌트를 만들었다. 레이블, 버튼 등 그리고 바로 AI 채팅 기능 개발에 집중하기 시작했다.
알레르미에 사용한 경험이 있는 RealmSwift로 DB를 만들었다.그리고 클로바 스튜디오와 API 연동 후 뷰를 짰다. 1일차 오전에는 미친 듯이 개발만 해서 다른 건 기억이 나지 않는다. 그래서 그런지 점심을 먹기 전에 iOS는 채팅 기능 개발을 마쳤다.
- 1일차 오후
오후부터는 서버가 어느 정도 완성되어 커뮤니티를 개발하기 시작했다. 그런데 중간에 문제가 생겼다. OAuth가 터진 것이다. 학생들이 사용하는 OAuth 서비스가 버전 업 이후 서비스가 불안정해졌다. 그래서 독자적으로 회원가입을 개발하기로 했다. 이 때 결정이 늦춰졌으면 개발에 지장을 줄 수도 있었다.
다행히 기능이 빨리 완성되었고, 금방 로그인 기능을 완성했다. 그런데 또 다른 문제가 생겼다.
메인 화면 디자인을 보자마자 뇌정지가 와 버렸다. 형태는 같은데 이런 식으로 뷰를 짜려면 어떻게 해야 할지 막막했다. 한 개는 크게, 네 개는 작게라니. 그래도 디자이너 말에 토 달수는 없고 어쩔 수 없이 만들기 시작했다.
우선 네 개의 셀을 묶어서 하나의 뷰로 만드는 함수를 만들었다. 그리고 인덱스 기반으로 ForEach문을 작성했다. 인덱스를 5로 나눈 나머지로 5개 중 첫 번째 뷰와 두 번째 뷰를 결정하고, 두 번째 뷰를 방금 만든 함수로 인덱스에 1씩을 더해 4개로 만들었다.
그렇게 메인 화면 개발을 마쳤다.
2일차부터는 다음 글에 이어가겠다.
'스토리' 카테고리의 다른 글
유난한 도전, 토스 방문기 (0) | 2023.02.11 |
---|---|
해커톤 공포증 극복기 - 2 (完) (2) | 2023.02.10 |
올 한 해를 마무리하며 - 작품 편 (完) (3) | 2023.01.01 |
올 한 해를 마무리하며 - 학교 편 (0) | 2023.01.01 |
2022 삼성 주니어 SW 창작대회 - 4 (完) (0) | 2022.12.01 |