계기
다니던 회사의 갑작스런 폐업으로 원치않는 취준생이 된지 7개월이 막 넘어갈때쯤 정말 가고 싶었던 회사의 최종면접에서 떨어지고, 새롭게 기회를 얻은 다른 회사의 최종면접에서도 떨어졌습니다.
초반에 떨어졌으면 모르겠는데 최종 면접에서 떨어지니까 너무 괴로웠고 나는 안될 사람인가 싶었습니다.
그래도 개발을 포기하고 싶지는 않았고, 더 길어지는 공백기에 좌절로만 시간을 보낼 수는 없어서 평소 만들고 싶었던 서비스를 만들어서 출시 해보자라고 결심했습니다.
취준 시절에 대학 친구들과 함께 플러터로 앱을 개발해서 출시까지 해본 경험으로(지금도 운영중) 앱을 만들어서 출시까지 해보자는 생각이 들었고, 평소 제가 이런 서비스 있으면 좋을 것 같은데.. 라고 생각했던것들 중 가장 쉽고, 빠르게 구현할 수 있는 아이디어를 선택했습니다.
저의 취미는 뜨개입니다. 뜨개를 본격적으로 시작한지는 3년정도 되었고, 이것저것 사모으다보니 집 서랍장은 실로 가득하고, 바늘도 셀 수 없이 많을정도로 뜨개질을 정말 좋아합니다.
뜨개 작품을 완성하면 인스타그램 뜨개 계정에 어떤 실, 어떤 바늘을 사용했는지, 어떤 도안을 뜬건지 올리거나, 아이패드에 굿노트로 정리하는 뜨개인들이 많은데요. 인스타그램 뜨개 계정들을 구경하다가 문득 뜨개 작품에 대해 기록하는 앱은 없나? 는 생각이 들어 앱스토어를 찾아봤는데 단순히 뜨개를 도와주는 앱은 많은데 기록하는 앱은 하나도 없었습니다.
저는 인스타그램 뜨개 계정도 없고, 아이패드도 액정 깨짐 이슈로 보상 판매해버려서 완성작을 사진으로만 기록해두는 편인데 나같은 뜨개인이 또 있지 않을까? 그리고 사용자가 많아진다면 뜨개 작품을 공유하는 SNS 처럼 디벨롭 시킬 수 있지 않을까? 라는 생각이 들어 바로 시작하게 되었습니다. 아무도 만들지 않아서 제가 만들었습니다.
플러터
플러터는 2020년 친구들과 사이드 프로젝트로 앱을 만들때 잠깐 접해본게 다지만, 그때는 ChatGPT도 없어서 내가 공부한것과, 구글링만으로 앱을 만들었습니다. 그래도 그 덕분에 Dart의 기본 문법, StatefulWidget, StatelessWidget, provider 같은 개념들은 알고 있어서 조금이나마 익숙한 플러터를 사용해서 앱을 개발하기로 결정했습니다.
그리고 이제는 ChatGPT도 있으니 훨씬 빠르게 개발할 수 있습니다. 아무래도 백엔드 개발만 주로 해오다보니 플러터가 미숙하긴 해서 아이디어를 GPT에게 말하면 Screen의 기본적인 Widget들을 만들어주고, 저는 그 코드를 기반으로 원하는대로 디테일을 수정하고 리팩토링 하는 방식으로 작업하였습니다.
처음 출시하는 버전은 유저가 존재하지 않고, shared_preference를 사용해 로컬에 저장하는 방식으로 개발했습니다.
그래도 만약에 앱 다운로드수가 많아져 다른 사람과 내 기록을 공유하는 기능을 만들어달라는 요청이 많이 들어오면 DB를 붙이기 위해, 기록마다 id도 부여하고, 뜨개 도메인(?)의 특성을 고려하여 단일 값보다는 리스트로 여러 값을 저장할 수 있도록 설계했습니다.(바늘과 실은 작품 하나에 여러개를 사용하는 경우가 많고 게이지도 세탁 전, 세탁 후, 무늬 스와치로 여러개를 만드는 경우가 있습니다.)
class ObjectLog {
static final String name = "object_log";
final String id; // uuid
final String title;
final String subtitle;
final ObjectPattern pattern;
final String description;
final List<ObjectImage> images;
final List<String> yarns;
final List<String> needles;
final List<String> tags;
final List<String> gauges;
bool _isFavorite = false;
DateTime createdAt;
DateTime? finishedAt;
DateTime? likedAt;
bool get isFavorite => _isFavorite;
set isFavorite(bool isFavorite) => _isFavorite = isFavorite;
void like() {
this._isFavorite = true;
this.likedAt = DateTime.now();
}
void unlike() {
this._isFavorite = false;
this.likedAt = null;
}
...
}
사실 기능은 간단한 CRUD, 이미지 업로드, 좋아요 기능이 다 이고, 이미지 업로드를 제외하고는 서버와 통신하는게 아니기때문에 원하는 최소기능을 구현하는데는 일주일내로 개발을 마칠 수 있었습니다.
이미지 업로드
뜨개 작품을 기록하는데에는 사진이 필수입니다. 그래서 사진을 업로드 하는 기능을 구현해야 하는데 Image.file 을 사용해서 디바이스의 사진을 참조하는 경우, 해당 사진을 지워버리면 앱에서도 그 사진을 볼 수 없습니다.
그래도 기록앱인데 로컬 이미지를 지워버렸다고 앱의 사진까지 삭제되는게 맞나 싶기도 하고, 추후에 DB에 저장하게 될 수도 있으니 이미지저장소에 업로드해야겠다고 생각했고, cloudinary같은 서비스들은 현실적으로 비용이 많이 들기 때문에 Lambda를 사용해서 S3에 이미지를 업로드 하기로 결정했습니다.
기존에 이미지 프로세싱 람다를 개발해본 경험도 있고, S3에 업로드 하는건 간단한 로직이기 때문에 하루만에 개발할 수 있었습니다.
간단한 작업이었지만 이슈를 해결하는 과정에서 이것저것 배울 수 있었습니다.
- busboy 사용 방법
- serverless-dotenv
- aws-sdk에서 S3를 사용하는 것이 아닌, S3Client로 command를 보내는 방법
디자인 & 디테일 수정
제일 오래 걸렸던 작업입니다. 저는 디자이너도 아니고, 미감이 그닥 좋지 않기 때문에 프로덕트 디자이너인 제 동생에게 도움을 요청했습니다. 저는 백수고 동생은 바쁜 직장인이라서 크리스마스 연휴때 전체적인 색상과 폰트, 앱 아이콘, 스플래시 화면을 작업해주었습니다.
기록앱인만큼, 테마를 변경하고자 하는 니즈가 있을 것 같아 테마 변경 기능을 대비해, 플러터의 ThemeData를 활용했습니다.
따뜻하지만 쿨(?)한 느낌을 원했고, 따뜻한 배경색에 차가운 포인트색으로 테마를 정했습니다.
미리보기 이미지는 그냥 제가 피그마로 작업했습니다.
앱 스토어
안드로이드는 디바이스 사이즈가 다양하고 안드로이드 기기가 없어서 테스트가 어렵기 때문에 iOS만 출시하기로 결정했습니다.
애플 개발자 멤버쉽에 가입하고(129000원..) 복잡한 과정을 거쳐서 심사 요청을 했습니다.
보통 myfo 같이 간단한 앱은 빠르게 심사를 한다고 들었는데 심사 요청을 12월 31에 했는데 3일이 지나도 심사 대기 중 상태라 구글링해보니 빠르게 심사 요청을 따로 할 수 있다고 합니다. 그래서 심사 요청을 하였더니 한시간도 안되서 바로 심사 중 상태로 변경되었습니다.
바로 통과되리란 기대를 안했긴 했는데 심사는 바로 리젝되었고,
Guideline 5.1.1 - Legal - Privacy - Data Collection and Storage Issue Description
사진 접근 문구를 수정하여 다시 심사 요청을 하였고, 빠르게 심사 승인이 되어 앱을 출시하였습니다. 👏👏👏👏👏👏
후기
대단한 기능도 아닌 단순한 기록 앱이지만 무언갈 하고 있다는것만으로도 성취감을 느낄 수 있었고, 백엔드 작업은 단순히 Lambda 하나 개발한게 다 이지만 앱을 개발하면서 나중에 DB를 도입할 경우 로컬 데이터와 동기화를 어떻게 해야할지, 만약 데이터를 백업해야 한다면 어떻게 해야 좋을지를 백엔드 개발자로써 고민하는 시간을 가질 수 있었습니다.
이 앱은 절대 혼자만의 힘으로 만들어진게 아니라 여러 친구들의 도움 덕분에 성공적으로 출시할 수 있었습니다. ☺️
다음 계획으로는 로컬라이징, 테마 변경 기능을 만들어보려합니다. 그 전에 빨리 취업을 할 수 있었으면 좋겠습니다 .... ㅠㅠ
앱은 여기서 다운 받을 수 있습니다. 많은 관심 부탁드립니다!
myfo
나만의 뜨개 기록 앱 myfo - 내 FO를 기록해보세요. - 내 작품의 제목, 도안, 완성 날짜를 기록할 수 있어요. - 사용했던 실과 바늘, 게이지에 대해 기록하여 다음 작업에 참고할 수 있어요. - 후기
apps.apple.com
'후기' 카테고리의 다른 글
내가 만든 앱에 국제화 적용하기 (0) | 2025.02.12 |
---|---|
women tech week 24 참여후기 (2) | 2024.12.10 |