Home 첫 iOS 프로젝트 회고록 - 악질 이름 생성기
Post
Cancel

첫 iOS 프로젝트 회고록 - 악질 이름 생성기

악질 이름 생성기를 마치고…

프로젝트 소개

제목을 입력해주세요_-001 (14)

악질 이름 생성기는 웹사이트에서 할 수 있었던 악질 이름 생성기를 iOS 앱으로 구현한 프로젝트로 안드로이드 개발 공부를 접고 iOS앱을 배우기 시작한 후 처음으로 진행한 프로젝트이다.

  • 플랫폼 : iOS/모바일
  • 사용 기술 : Swift, UIKit, StoryBoard
  • 진행 기간: 2023.01.24 ~ 2023.01.25 (1일)
  • 진행 인원: 개인 프로젝트 (1인)
  • 깃허브 리포지토리

개발 배경

스크린샷 2023-04-13 오전 9 01 18

사실 해당 프로젝트는 예전부터 하고 싶었던 프로젝트로 전에는 안드로이드로 구현해보려고 했었으나 이미 앱으로 만들어져 출시까지 이루어졌길래 포기했었다가

안드로이드 개발 공부를 접고 iOS를 시작한 후 중간 정도 학습한 내용을 복습하기 위해 할 프로젝트를 찾다가 다시 한번 떠오른 프로젝트이다.

당시 고른 프로젝트 선택 기준은

  1. 난이도가 그렇게 어렵지 않아야 한다
  2. 배운 내용을 활용해서 제작할 수 있는 앱이여야 한다
  3. 프로젝트를 하는 내가 재미를 느낄 수 있어야 한다

으로 해당 조건을 모두 만족하는 프로젝트는 프로젝트 아이디어 노트에서 이것뿐이었기에 진행하게 되었다.

사용 예제

GIF

Jan-25-2023 21-36-17

사진

Simulator Screen Shot - iPhone 14 Pro - 2023-01-25 at 21 57 00 Simulator Screen Shot - iPhone 14 Pro - 2023-01-25 at 21 37 25 Simulator Screen Shot - iPhone 14 Pro - 2023-01-25 at 21 37 33 Simulator Screen Shot - iPhone 14 Pro - 2023-01-25 at 21 37 44

앱을 실행한 모습은 위와 같다.

구현 기능

  • 악질 이름 조합
    • 각종 “악질” 태그들과 입력한 지역(선택)과 이름을 조합하여 완성된 악질 이름을 보여준다
  • 글자수 제한
    • 조합된 악질 이름 글자수가 너무 길어지지 않도록 원하는 글자수를 선택하여 제한하면 해당 글자수에 맞는 이름 조합을 보여준다
  • 예시 닉네임을 보여주는 기능
    • 이름과 지역(선택)을 입력하면 어떠한 악질 닉네임이 나올 지 예시 닉네임들을 보여주는 기능

이슈

악질 이름 태그 만들기

해당 프로젝트를 진행하면서 가장 고민했던 부분은 악질 이름 태그를 만드는 방법이였다.

악질 이름 생성기에서 이름을 조합하는 태그들은 크게 4부분으로 나뉘는데

  1. 지역 (선택)
  2. 위치
  3. 직업
  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 구현

스크린샷 2023-04-13 오전 9 01 18

악질 이름 생성기 프로젝트를 하며 고민했던 또 하나의 부분은 바로 UI 구현 부분이였다 원래는 그대로 옮겨 개발하려고 했으나 원본 사이트는 웹 사이트로 만들어졌기에 이것을 그대로 옮긴다면 배운 내용을 정리하는 목적으로는 상관 없겠지만

나중에 앱 출시하거나 실제 사용할 때 글자수 제한에서 자리 수 설정 방식이 아무리봐도 불편함을 느낄 거 같았다 그래서 어떻게 구현할까를 고민하던중

원본 사이트에 디자인 적 느낌은 유지하되, iOS에서 기본적으로 제공하는 UI를 사용하여 개발하여 개발하기로 계획을 바꿔

Simulator Screen Shot - iPhone 14 Pro - 2023-01-25 at 21 37 44

위와 같이 폰에서 사용하기 조금 더 편안하고 iOS 네이티브 앱적인 형태로 글자수 제한 부분 UI를 만들게 되었다.

느낀점

앞에서 설명했던 것처럼 해당 프로젝트는 프로젝트로 배운 내용을 바탕으로 정리할 겸 만든 나의 첫 iOS 앱이다.

해당 프로젝트를 하기까지는 생각보다 많은 스트레스가 있었는데 방학 동안 하루종일 앨런 Swift 마스터 스쿨에서 Swift 언어의 기초적 부분부터 세세한 부분까지 배우고 앱 개발 파트에서도 낯선 iOS 앱 개발 방식과 Xcode 사용법을 배우다보니 머리 속에 input만 가득차서 스트레스를 많이 받은 상태였다.

그렇기에

  1. 난이도가 그렇게 어렵지 않아야 한다
  2. 배운 내용을 활용해서 제작할 수 있는 앱이여야 한다
  3. 프로젝트를 하는 내가 재미를 느낄 수 있어야 한다

프로젝트 선택 기준에서 “프로젝트를 하는 내가 재미를 느낄 수 있어야 한다” 부분이 있었다.

그렇게 고른 “악질 이름 생성기”를 밥도 거를 정도로 몰입해서 제작하며 내가 그동안 input만 받으며 쌓여있었던 스트레스도 어느 정도 풀 수 있었고

낯선 iOS 앱 개발 방식에 대해 익숙해질 수 있었으며 개발 진로쪽에서도 안드로이드 개발자보다 iOS 개발자쪽으로 내 진로쪽으로 기울어지게 되었다.

This post is licensed under CC BY 4.0 by the author.

첫 WEB 프로젝트 회고록 - 세붕이 웹사이트

4월 13일 Today I Learned