악질 이름 생성기를 마치고…
프로젝트 소개
악질 이름 생성기는 웹사이트에서 할 수 있었던 악질 이름 생성기를 iOS 앱으로 구현한 프로젝트로 안드로이드 개발 공부를 접고 iOS앱을 배우기 시작한 후 처음으로 진행한 프로젝트이다.
- 플랫폼 : iOS/모바일
- 사용 기술 : Swift, UIKit, StoryBoard
- 진행 기간: 2023.01.24 ~ 2023.01.25 (1일)
- 진행 인원: 개인 프로젝트 (1인)
- 깃허브 리포지토리
개발 배경
사실 해당 프로젝트는 예전부터 하고 싶었던 프로젝트로 전에는 안드로이드로 구현해보려고 했었으나 이미 앱으로 만들어져 출시까지 이루어졌길래 포기했었다가
안드로이드 개발 공부를 접고 iOS를 시작한 후 중간 정도 학습한 내용을 복습하기 위해 할 프로젝트를 찾다가 다시 한번 떠오른 프로젝트이다.
당시 고른 프로젝트 선택 기준은
- 난이도가 그렇게 어렵지 않아야 한다
- 배운 내용을 활용해서 제작할 수 있는 앱이여야 한다
- 프로젝트를 하는 내가 재미를 느낄 수 있어야 한다
으로 해당 조건을 모두 만족하는 프로젝트는 프로젝트 아이디어 노트에서 이것뿐이었기에 진행하게 되었다.
사용 예제
GIF
사진
앱을 실행한 모습은 위와 같다.
구현 기능
- 악질 이름 조합
- 각종 “악질” 태그들과 입력한 지역(선택)과 이름을 조합하여 완성된 악질 이름을 보여준다
- 글자수 제한
- 조합된 악질 이름 글자수가 너무 길어지지 않도록 원하는 글자수를 선택하여 제한하면 해당 글자수에 맞는 이름 조합을 보여준다
- 예시 닉네임을 보여주는 기능
- 이름과 지역(선택)을 입력하면 어떠한 악질 닉네임이 나올 지 예시 닉네임들을 보여주는 기능
이슈
악질 이름 태그 만들기
해당 프로젝트를 진행하면서 가장 고민했던 부분은 악질 이름 태그를 만드는 방법이였다.
악질 이름 생성기에서 이름을 조합하는 태그들은 크게 4부분으로 나뉘는데
- 지역 (선택)
- 위치
- 직업
- 물건
해당 태그들을 조합하고 여기에 사용자가 입력하는 이름을 붙이는 식으로 로직이 이루어진다
코드
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
func createName(myLocation: String, myName: String) -> String {
var villainName = ""
villainName += myLocation
let locationNum = Int.random(in: 0...1)
let location = locationNum == 0 ? locations[0][Int.random(in: 0..<71)] : locations[1][Int.random(in: 0..<40)]
villainName += location
villainName += locationNum == 0 ? "" : specificLocations[location]!
let jobNum = Int.random(in: 0...1)
let job = jobNum == 0 ? jobs[0][Int.random(in: 0..<18)] : jobs[1][Int.random(in: 0..<23)]
let object = jobNum == 0 ? objects[Int.random(in: 0..<58)] : ""
villainName += object
villainName += job
villainName += myName
return villainName
}
이렇게 로직자체는 어렵지 않게 구성할 수 있었지만 가장 큰 문제는 이러한 여러 태그들을 하나 하나 만드는데 시간이 오래걸리고 힘들다는 것이었다.
그래서 방법을 찾던 중 감사하게도 원본 악질 이름 생성기 사이트를 만드신 분께서 MIT 라이센스로 소스 코드를 깃허브에 공개해주셔서 이름 태그 부분을 가져온 뒤
내 코드에서 사용할 수 있게 조금 수정하고 몇가지 태그를 추가하는 식으로 바꿔 데이터를 집어 넣는 방식으로 구현하였다.
UI 구현
악질 이름 생성기 프로젝트를 하며 고민했던 또 하나의 부분은 바로 UI 구현 부분이였다 원래는 그대로 옮겨 개발하려고 했으나 원본 사이트는 웹 사이트로 만들어졌기에 이것을 그대로 옮긴다면 배운 내용을 정리하는 목적으로는 상관 없겠지만
나중에 앱 출시하거나 실제 사용할 때 글자수 제한에서 자리 수 설정 방식이 아무리봐도 불편함을 느낄 거 같았다 그래서 어떻게 구현할까를 고민하던중
원본 사이트에 디자인 적 느낌은 유지하되, iOS에서 기본적으로 제공하는 UI를 사용하여 개발하여 개발하기로 계획을 바꿔
위와 같이 폰에서 사용하기 조금 더 편안하고 iOS 네이티브 앱적인 형태로 글자수 제한 부분 UI를 만들게 되었다.
느낀점
앞에서 설명했던 것처럼 해당 프로젝트는 프로젝트로 배운 내용을 바탕으로 정리할 겸 만든 나의 첫 iOS 앱이다.
해당 프로젝트를 하기까지는 생각보다 많은 스트레스가 있었는데 방학 동안 하루종일 앨런 Swift 마스터 스쿨에서 Swift 언어의 기초적 부분부터 세세한 부분까지 배우고 앱 개발 파트에서도 낯선 iOS 앱 개발 방식과 Xcode 사용법을 배우다보니 머리 속에 input만 가득차서 스트레스를 많이 받은 상태였다.
그렇기에
- 난이도가 그렇게 어렵지 않아야 한다
- 배운 내용을 활용해서 제작할 수 있는 앱이여야 한다
- 프로젝트를 하는 내가 재미를 느낄 수 있어야 한다
프로젝트 선택 기준에서 “프로젝트를 하는 내가 재미를 느낄 수 있어야 한다” 부분이 있었다.
그렇게 고른 “악질 이름 생성기”를 밥도 거를 정도로 몰입해서 제작하며 내가 그동안 input만 받으며 쌓여있었던 스트레스도 어느 정도 풀 수 있었고
낯선 iOS 앱 개발 방식에 대해 익숙해질 수 있었으며 개발 진로쪽에서도 안드로이드 개발자보다 iOS 개발자쪽으로 내 진로쪽으로 기울어지게 되었다.