이지스퍼블리싱 서평단으로 선정되어 도서를 지원받아 솔직하게 쓴 글입니다.

 

얼마전에 인스타그램에서 우연히 보게 되어 신청, 본 책의 서평을 작성하게 되었습니다.

약 2년 정도 Swift 를 만지고 있지만, 인터넷, 강의에서 배운게 많았고, 

계속 기능 구현에만 집중하던 상황에서

전반적인 iOS 개발에 있어 한번에 정리된 책을 보고자 했습니다.


 

UIKit을 중심으로 구성된 실습 중심의 입문서

이 책의 가장 큰 특징 중 하나는 UIKit을 기반으로 구성되어 있다는 점입니다.

저는 SwiftUI를 통해 iOS 개발을 시작했고, 그동안 UIKit은 꼭 필요한 부분만 랩핑하여 사용해왔습니다.

출시한 앱들도 모두 SwiftUI로 개발했기 때문에 UIKit에 대한 체계적인 공부가 필요한 시점이었고,

이 책이 제 상황에 매우 적합하다고 느꼈습니다.

 

인터넷 검색이나 GPT를 활용하면 필요한 정보를 빠르게 얻을 수 있지만,

입문자 입장에서는 배경지식이 부족해 무엇을 찾아야 하는지조차 모를 때가 있습니다.

이 책은 이런 고민을 가진 사람들에게 특히 도움이 될 것 같습니다.

 

Swift와 Xcode는 앞으로도 계속 업데이트될 테지만..

이번 8판에서는 최신 버전인 Swift 6.0과 Xcode 16을 반영하고 있습니다.

따라서 지금 iOS 개발에 입문하거나 기본을 다지기에 아주 적합한 타이밍이라고 생각합니다.

 

 

문법과 기능을 자연스럽게 익히는 구성

 

책은 문법과 이론부터 하나씩 차근차근 설명하는 방식보다는 

직접 따라하며 실습할 수 있게 구성되어 있습니다.

 

그리고 필요한 부분에는 중간중간 실제 문법에 대한 이론적인 부분도 제공합니다.

중간중간 문법을 알려주는 부분들

 

기본적인 문법에 대해서도 제공

 

특히, 개발 전공자가 아니거나 관련 지식이 부족한 입문자들에게는 이러한 실습 중심의 접근법이 이해하는데 더 수월할 거라고 생각합니다.

각 장(마당)이 끝날 때마다 학습했던 문법과 응용 문제를 제공하여 복습과 심화 학습이 가능합니다.

단순히 따라 하는 데 그치지 않고, 학습한 내용을 보다 깊이 이해할 수 있도록 구성되어 있는 점도 마음에 듭니다.

 

 


iOS 입문자이면서 서버 연동에 관심이 있다면,

책의 내용을 어느 정도 숙지한 후 Firebase나 CloudKit 같은 서버리스 프레임워크를 추가로 공부하면 좋겠습니다.

구글링이나 GPT와 함께 싸워보시죠

 

추후 SwiftUI도 공부하게 될텐데, 먼저 이 책으로 UIKit에 익숙해진 후 SwiftUI로 넘어가는 것을 추천합니다.

UIKit에 대한 기본적인 이해가 있으면 SwiftUI 학습이 더욱 수월해질 것입니다.

(SwiftUI에 대한 튜토리얼은 애플 개발자 페이지 에서도 학습하기 좋게 나와있습니다.)

 

 

 

전반적으로 초보자부터 중급자까지 폭넓게 활용할 수 있는 가이드북이라고 생각하고

SwiftUI로 공부했다가 UIKit 공부를 하는 사람 입장에서도 추천드립니다

 


 

깃허브 예제 파일도 제공합니다.

https://github.com/doitswift

 

doitswift - Overview

스위프트 6.0 버전이 반영된 개정8판 출간-2025년 3월 / 최근 커밋된 소스는 swift 6.0, Xcode 16에 호환됩니다. - doitswift

github.com

 

만들던 MusicMarker 앱에서 기획자 친구의 피드백으로 

 

타이틀과 아티스트의 길이가 화면 밖으로 길어졌을 때

끝까지 다 보이도록 왼쪽으로 이동하는 애니메이션을 구현하고자 했습니다. 

 

찾아보니 이를 지칭하는 용어는 Marquee라고 하고,

프론트엔드의 원조인 Web에서 이미 흔하게 사용되는 용어였기에,

SwiftUI에서 Marquee를 구현해 보게 되었습니다.

찾아보니 깃허브에도 SwifUI로 만들어진 Marquee 들이 있었으나,

간만에 디테일한 프론트 작업.. 직접 구현해보고자 나섰습니다.


참고 소스

애플의 LiveActivity나 스포티파이에서도 

음원 타이틀 길이가 길면 일정 간격 움직여서 전부 표시되게 합니다.

Apple의 LiveActivity
Spotify의 재생화면

 

 

저는 애플의 LiveActivity에서의 움직임을 똑같이 구현해 내는데 초점을 뒀습니다. 

 

LiveActivity에서의 움직임 특징

애플 LiveActivity에서 글자가 길어진 경우 애니메이션의 특징은 다음과 같습니다.

 

- 화면이 켜졌을 때 일정 시간 멈춰있다가 왼쪽으로 움직임

- 텍스트가 다 지나가고 나면 이어서 일정 간격 뒤에 같은 텍스트가 따라 나옴

- 뒤의 텍스트가 첫 지점에 도착했을 때 멈춤

- 타이틀과 아티스트 둘 다 긴 경우, 더 짧은 텍스트는 더 긴 텍스트가 올 때까지 정지 상태를 유지

- 타이틀, 아티스트 모두 첫 지점으로 돌아왔을 때 다시 동시에 왼쪽으로 움직임 

 

 

적용하며 어려웠던 점

첫 난관

움직임이 부드럽지 않다.

 

학부시절에도 c++로 게임 만들던 시절, 성능에 따라 프레임이 다르게 나타나는 현상이 있어서

델타 타임(delta time)으로 해결했었던 기억이 있는데

이와 유사한 해결방식일까 생각해 보며 화면 프레임과 애니메이션을 동기화 해주는 관점에서 접근했습니다.

 

speedPerSecond / 60.0 을 offset에 적용하여 애니메이션이 부드럽지 않았던 문제를 해결할 수 있었습니다.

 

 

 

두 번째 난관

타이틀, 아티스트의 애니메이션 싱크 맞추기

 

각각의 텍스트(타이틀, 아티스트)는 움직이고 멈추게 만들었습니다만,

길이 차이에 따라, 상대적으로 짧은 쪽이 먼저 멈추고, 먼저 움직이게 되어

타이틀과 아티스트를 통일성 있게 보기 어려웠습니다.

 

이를 해결하고자

텍스트가 멈추는 시점에 각각의 isPaused 상태를 체크하고,

두 텍스트(isTitlePaused && isArtistPaused)가 모두 멈춘 경우에만

애니메이션을 재개(checkAndResumeMarquees())하도록 로직을 수정했습니다.

덕분에 두 텍스트가 모두 멈춘 후 다시 함께 움직이는 애니메이션을 원하는 대로 구현할 수 있었습니다.

 

완성된 Marquee

 

 

최종 플로우

✅ 화면이 켜졌을 때 잠시 멈췄다가 움직임 .onAppear  checkIfShouldAnimate() 
조건 만족 시 
startMarquee() 실행
✅ 텍스트 지나가고, 일정 간격 뒤에 이어서 따라나옴 updateMarquee() 내부에서 
offset <= -width 일때 offset += width
✅ 두 번째 텍스트가 시작 위치 도착했을 때 멈춤 isPaused = true 로 멈추고, checkAndResumeMarquees()
✅ 타이틀/아티스트 둘 다 길면, 짧은 쪽은 기다림 isTitlePaused && isArtistPaused 조건으로 동기화
✅ 둘 다 처음 위치로 돌아오면 다시 동시에 움직임 delay 후 isPaused = false 처리로 동시에 재출발

 

 

 


잡담

 

기능 구현한 지 2주는 넘은 거 같은데 
벌써 머릿속에서 디테일한 기억들은 휘발되는 것 같다.. 

작성할 사항이 있다면 1주일 내로 글 초안을 끝내놓자...

iOS 개발자 카톡방에서 Objective-C 이야기가 나와서

맞다 나중에 저 개념도 알아야 예전 코드 볼텐데 하고 gpt한테 이것저것 물어봤다. 

 

C++ 기준으로!

Swift에서 C++의 코드를 직접 사용할 수 없어서, Objective-C++ 로 래핑을 해야한다. 

Swift는 C 인터페이스(.h - 헤더)를 읽을 수 있지만, C++ 네임스페이스를 지원하진 않는다.

C++ 코드 위에 C 함수 인터페이스를 만들어 제공하면 Swift에서 접근가능!

Objective-C++이라는 걸 사용해서, C++ 코드를 Swift에서 사용 가능한 형태로 감싸야 하는 것이다. 이 과정을 “래핑(Wrapping)”이라고 한다.

 

이때 

  • Swift에서 어떻게 C를 읽고 돌릴 수 있는거지
  • 아니 그전에 Swift는 어떻게 컴파일되서 실행되는거지?
  • Swift가 아닌 다른 언어를 실행시킬 수 있다고??

라는 생각이 들었고

하나씩 하나씩 찾아가보았다.

Swift가 동작하는 근본적인 구조를 이해하면 좋을 것 같았다.

 

Swift는 어떻게 컴파일되고 실행될까?

알아낸 바로는

Swift는 LLVM(저수준 가상 머신, Low-Level Virtual Machine)을 기반으로 동작한다.

정확히는 Swift 코드가 LLVM IR(Intermediate Representation)이라는 중간 코드로 변환된 후, 이걸 기계어로 최적화해서 바이너리를 만든다.

Swift 코드 → Swift 컴파일러 → LLVM IR → 네이티브 기계어 → 실행 가능한 바이너리 (실행파일)

 

그리고 LLVM은 Swift 뿐만 아니라 C/C++, Objective-C 를 돌릴 수 있어서

LLVM을 통해 Swift뿐 아니라 다른 언어(C, C++, Objective-C 등)도 함께 돌아갈 수 있다는 말이다.

 

Swift에서 C++를 “래핑”해서 쓴다는 건 무슨 뜻일까?

그것도 그렇지만 그럼

Swift, C, C++ 모두 LLVM에서 컴파일 할 수 있는데 

왜 꼭 래핑을 해야하는걸까?

-> Swift에서 직접 C++를 사용할 수 없기 때문에 변환을 해주는 무언가가 필요한데 그게 Objective-C++

Swift는 LLVM을 쓰지만, C++의 특성(네임스페이스, 객체 지향적 요소, 다중상속, 메모리 관리 방식) 등을 직접적으로 지원하지 않는다. Swift와 C++은 같은 LLVM 위에서 동작하지만, 구조적으로 많이 다르다.

 

그래서 여기서 말하는 래핑은

Swift가 이해할 수 없는 C++의 문법이나 구조를 Objective-C++로 변환하여 Swift에서 접근 가능하게 만들어주는 중간 과정

이라고 할 수 있다.

Swift → Objective-C++ (.mm 파일에서 C++ 호출) → C++ 코드 → LLVM → 기계어로 변환되어 실행

 

 

그래서 Objective-C++를 써야만 하는 이유는?

또 한번 의문이 든게, 결국엔 모두 LLVM을 쓰는 거라면, 그냥 Swift에서 C++을 바로 호출하게 하면 되지 않나 싶었다.

이유는 메모리 관리 방식의 차이 때문이었다.

또 Swift는 메모리를 자동으로 관리해주는 ARC 방식이고 C++는 직접 delete 해줘야하는, 구조 자체부터 다르다.

 

 

이제 왜 Swift에서 C++를 사용할때 래핑을 해줘야만 하는 지 알게 되었다.

..

라고 생각듬과 동시에 구글에 검색결과

 

그치만 Swift에서 C++를 바로 쓸 수 있는 방법이 이미 있었다.

WWDC23에 Swift에서 C++를 Objective-C++ 래핑 없이 C++ API를 직접 사용할 수 있는 방법이 공개됐다.

무려 2년전이라니, 부지런히 알아가야겠다.

https://developer.apple.com/kr/videos/play/wwdc2023/10172/

 

Swift와 C++ 혼합하기 - WWDC23 - 비디오 - Apple Developer

C++와 Objective-C++ 프로젝트에서 Swift를 사용해 코드를 더 안전하고 빠르고 쉽게 개발할 수 있는 방법을 알아보세요. C++와 Swift API를 사용해 Swift를 앱에 점진적으로 통합하는 방법을 알려드립니다.

developer.apple.com

 

 

아직은 진행중인 프로젝트에 사용해볼 예시가 없어서 추후에 C++를 사용해보게 된다면 직접 프로젝트에 적용해볼 생각이다.

궁금증에서 시작한 생각의 흐름이 이것저것 살펴보며 기술 발전의 흐름을 볼 수 있었다. 

gpt로는 가볍게 물어보고, 무엇을 공부할지 물어보고, 딥하게 파볼때는 역시 구글링, 공식영상만한게 없다!

 

정말 빠르게 발전하고 있어서,, 불안과 두려움이 더 배가 되고 있는 시기지만,

발전된 기술 내가 적응하면 되는게 아닌가 

자동차 나왔다고 계속 마차, 인력거 고집하기 보다, 빠르게 적응하면 되는게 아닌가 싶다. 

 

 

 

2024.09.02 ~ 2024.12.05

 

담백하고 솔직하게 협업과정에서 느꼈던 것들을 풀어보겠습니다.

 

 

 

마지막 챌린지

라서 팀을 정하는데도 개인적인 고민이 많았고, 정하고도 3개월이라는 기간동안 어떤 앱을 만들지 가장 고민이 많았습니다.

좋아하는 사람들이랑 각자가 하고싶은, 해보고 싶은 것들을 이루기 위해 달렸고, 그럼에도 모두가 만족한 앱을 만들었나 생각해보면 그렇게 되진 않았습니다.

 

“내가 이렇게 했/안했으면 어땠을까?”

“이걸 선택하지 않았다면?”

“좀 더 다른 시도를 했다면?”

 

마지막 프로젝트를 하면서 위 생각들이 많이 들었습니다. 

선택에 대한 후회는 없고,

아쉬웠던 것들에 대해선 내가 아직 그만큼 못미치기 때문이라고 생각하고

내가 어떤게 부족한지 명확하게 더 알 수 있었던 기회라고 생각합니다.

오랜기간 이렇게 그 순간에 집중하며 치열하게 고민할 수 있는 환경, 더 하고 싶어지는 생각이 듭니다.


팀원들간의 의견이 모두 같은 상황은 아니었고, 그렇게 맞지 않는 부분들을 서로 양보하며 붙여갔고,

중반까지는 그런것들의 균형을 잘 잡아가며 만들어갔지만

마지막 결과는 모두가 만족할만한 결과를 냈냐라고 했을때 그렇지는 않았습니다. 

 

의사결정시 투표에서 다중선택이 가능하게 되면 가장 애매한 결과가 나올 수 있습니다.

모두가 원하는게 다를때, 각자가 생각하는 1순위 아이디어, 2순위 아이디어가 있을때,

1순위 아이디어는 겹치기 어렵지만, 그냥 뭐 괜찮은 2순위, 3순위 아이디어가 많아져 최종 결과가 누군가의 1순위 결과가 나오지 않는,

2순위, 3순위가 되어버리는 경우가 생길 수 있습니다. 

 

또한, 한 가지 아이디어 안에서도 서로 다른 방향성이 나올 수 있는데,

이 경우 최종적으로는 서로의 아이디어가 왜 ‘안 되는지’ 반박하는 방향이 아니었나 생각합니다.

시간이 지날수록 서로 지치게 됐던거 같습니다.

후반부로 갈수록 뭔가 서로 주장은 하는데, 상대의 말은 알겠는데 내 말이 왜 맞는지만 주장하는 느낌이랄까...

그렇게 합치가 아닌 한쪽이 내려놓는 방향..?

 

그래서 이 프로젝트가 끝나고 멘토링을 했을때,

저 사람을 어떻게 끌어들일까 어떻게 이해시킬까가 아닌,

서로 반대의 입장에서 변호하며 서로의 방향을 이해하는 방향은 어땠을지, 말씀해주셨던 게 기억남고

팀원들을 설득하거나 끌어들이기보다, 서로의 입장을 진심으로 이해해보는 과정이 있었다면 어땠을까 생각해보게 되었습니다.

 

아쉬움만 적었지만..

서로 후반부로 갈수록 힘들어했지만

의견 차이가 날 때도 언성이 높아지며 싸우지 않고, 끝까지 서로 포기하지 않고 결론을 내렸던 점,

서로를 무시하거나, 비하하거나 그런 상황이 벌어지지 않은 것, 

가장 잘 해내지 않았나 생각합니다.

 

 


 

앱 기획, 개발 과정

(아래는 팀원이 잘 정리해둔 페이지 입니다.)

https://nonchalant-wheel-15f.notion.site/DUKBAM-a88c5904a50644e0a68bc92c584402af

 

‘DUKBAM’이 나오기까지 | Notion

🙌🏻 이 페이지는 이렇게 구성되어있어요!

nonchalant-wheel-15f.notion.site

 

저는 사용자의 음성과 테스트 문장을 검사할 데이터를 파이어베이스에 저장, (사용자의 음성은 저장되지 않습니다.)

채점 과정 중엔 Speech(Apple의 STT 프레임워크), 간단한 알고리즘(편집거리 알고리즘)을 활용한 발음 채점 기능을 구현했습니다.

기술적인 부분도 글로 남겨보도록 하죠.

 

 

덕밤 - 애니 따라말하기 게임, 우린 이렇게 놀아! 

앱스토어에 올라가 있으니 다운받아보실 수 있습니다. 

 

https://apps.apple.com/kr/app/%EB%8D%95%EB%B0%A4-%EC%95%A0%EB%8B%88-%EB%94%B0%EB%9D%BC%EB%A7%90%ED%95%98%EA%B8%B0-%EA%B2%8C%EC%9E%84-%EC%9A%B0%EB%A6%B0-%EC%9D%B4%EB%A0%87%EA%B2%8C-%EB%86%80%EC%95%84/id6738617818?l=en-GB

 

‎덕밤 - 애니 따라말하기 게임, 우린 이렇게 놀아!

‎덕밤 주요 기능 소개 [애니메이션 선택 및 플레이어 세팅] - 참가자들이 함께 좋아하는 애니를 목록에서 선택합니다. - 참가자의 인원 수 및 닉네임을 설정합니다. [첫 순서 및 진행 방향 정하

apps.apple.com

 

나의 일상 '막'노트

 

 

평소 나는 일정관리를 할 때, 아이폰의 미리알림 앱을 자주 사용한다.

하지만 단순히 미리알림에 적어두는 것만으로는 부족하다고 느껴서, 

매일 노트에 날짜를 적고, 미리알림에 있는 리스트를 직접 작성하며 하루를 시작한다.

때로는 더 세분화된 할 일이나 추가적인 메모를 적어두기도 한다.

 

이렇게 하면 단순히 ‘할 일을 기록하는 것’에서 끝나는 게 아니라, 내가 직접 손으로 적으며 하루의 계획을 한 번 더 각인하는 효과가 있고

덕분에 할 일을 마무리하는 데 훨씬 도움이 됐다.


 

Reflect, 그리고 노트 앱의 또 다른 진화

유뷰버 JM님의 영상 중 캡쳐

오늘 JM님의 유튜브 영상에서 Reflect라는 메모 앱을 알게 됐다. 놀란점이 2가지 있는데,

 

1️⃣ 기본 노트 페이지가 날짜 기반으로 생성된다는 것 (내가 평소 노트에 적듯이)

2️⃣ 백링크를 활용해 같은 단어(개념)끼리 자동으로 묶여서 볼 수 있다는 것

 

개발자 친화적이랄까.. 마치 Xcode에서 cmd + 클릭으로 함수 찾아가는 것 처럼, 노트에서도 자연스럽게 연결된 개념들을 탐색할 수 있다니..!

찾아보니 2022년도쯤 만들어졌는데 이제 알게 되었다니, 한편으로 노트 앱도 여전히 진화하고 있다는 점에서 감동 받았다.

 

사실

기존의 옵시디언이나, 노션 같은 경우 (옵시디언도 백링크 기능이 있긴하다.)를 보면서, 와 노트앱(생산성앱) 진짜 편해졌다 생각했는데 

한단계 더 파고든 느낌이다.

 

생산성 앱(노트, 할 일 관리 앱 등)이 어느 정도 완성 단계에 도달했다고 생각했었다. 모바일, pc 흐름도 끝 무렵인 거 같고 더 이상 혁신할게 있을까 싶었는데 Reflect 앱을 보면서, 이렇게도 되는구나 느꼈다.

SNS도 시대에 따라 계속 새로운 앱이 등장하듯이, 생산성 앱도 끝없이 진화하고 있었다.

단순히 GPT 같은 AI 기능을 얹는 수준이 아니라,

 

변화하는 사용자의 사고방식을 깊이 이해하고, 더 나은 흐름을 제공하는 방향으로 발전하고 있다는 점에서 깊은 인상을 받았다.

시대가 지날수록, 플랫폼이 달라지고, 새로운 기술이 등장하면서, 또 거기에 맞게 진화한다.

 

물론 Reflect가 모든 사람에게 필요하거나 적합한 건 아닐 것이다. 이런 생산성 부분에 관심이 많은 사람이나, 백링크 개념 등이 익숙한 개발자 부류의 사람들일거고, 그들에겐 엄청난 편리함으로 다가올 것이다.

 

GPT가 대중화 되면서 뭐 노트에 인공지능 얹어서 뭔가 편하게 해주겠지 정도는 예상을 할 수 있었는데

이번에 느낀 디테일은, 기존의 것들에 생각보다 내가 무지했구나 느꼈던 순간이었다. 

 

깨달은 점

 기존의 것들에 대해 내가 생각보다 무지했구나.

 어떤 기술이든 시대와 플랫폼에 맞춰 계속해서 진화한다.

✅ 부지런히 주변에 더 관심을 갖자

'영감' 카테고리의 다른 글

도쿄 지하철에서 발견한 직관적 정보 디자인  (0) 2025.01.21

2025년도 Swift Student Challenge...

지난 도쿄 여행과 서울에서 종종 겪는 지하철 역 내 방향(@@ 방면)이 헷갈렸던 경험을 녹여 제출했습니다.

 

관련 사진 올려놓고 수정하는 방식으로 작성해보겠습니다.

 

2024.06.27~2024.09.19 (개발기간)

앱스토어 소개 페이지 일부

 

아카데미에서의 5번째 글은, 사이드프로젝트로 진행했던 Music Marker 입니다.

개발 3명, 디자이너 1명, 기획 1명이서 진행하였습니다.

 

춤 동아리 활동을 했던 기획자 친구가 해당 아이디어를 가져오고 이를 디벨롭 하며 아카데미 기간 중 처음으로 앱스토어에 출시한 앱입니다.아카데미에서 각자 챌린지를 통해 협업을 경험해보고 난 후 개개인의 학습과 역량을 프로젝트를 통해 익힐 수 있었던 프로젝트 입니다.


 

기획

5월 말 ~ 6월 27일까지 약 한 달

5월 어느 날 도서관 카페에 앉아 이야기를 나누던 중, 기획 친구가 아이디어를 들고 오고 (쌈@뽕했다..)처음엔 그 친구와 개발 3명(나 포함) 이렇게 팀을 결성하였습니다. 그 후 디자이너 친구도 구하게 되어 5월 29일 5명이서 본격적으로 회의를 진행했습니다.아카데미 생활의 절반이 지나기 전, 배우고 있던 CBL과 협업 과정을 가장 날 것의 느낌으로 프로젝트에 적용할 수 있었습니다.

 

주에 1번씩 모이며 필수 기능에 대한 논의 - 로파이 그리기 - 유저 테스트(로파이를 이용한) - 하이파이 그리기 - 색, 팀 이름, 앱 이름 정하기 - 개발 파트 분배하기를 거쳐 초반 기획을 마무리 했습니다.

 

기획자 친구가 초반 리서치에 포스텍 K-POP 수업 참관, 춤 동아리, 인스타 계정에도 적극 설문을 돌리며 얻은 결과로
빠르게 아이디어에 대한 확신을 갖게 되었습니다.

 

 

개발

역할 분배

아카데미에서의 2인 챌린지(애플의 기본 프레임워크를 익혔던) 때, WWDC 일정과 겹쳐서 AVFoundation 주제를 혼자서 개발하게 되었습니다. - 음원 불러오기, 재생, 정지- 5초 앞, 뒤로 가기- 배속 기능- 마커 기능- 백그라운드 제어프로젝트를 고려하여 AVFoundation을 선택, 구현했고이를 바탕으로 프로젝트에서 iOS 앱의 음원 제어 기능의 베이스를 만들게 되었습니다. 

나 - iOS 개발 전반
개발1 - watchOS와의 연동 부분
개발2 - watchOS 뷰 및 MixPannel 연결

 

 

유저 테스트

MVP를 완성시키고 난 후 3차례 유저 테스트를 진행하였습니다. 

1. 아카데미 내 춤추는 사람 1명

2. 한동대학교 춤동아리

3. 아카데미 내 치어리딩 연습자 1명

 

2, 3번 사용자의 경우에는 실제 춤을 연습하는 환경에서 테스트를 진행하여 이들을 관찰하면서 어려워 하는점, 행동 패턴 등을 직접 볼 수 있었습니다.

 

반복재생 기능이 있으면 좋겠다. -> 1.1.0에서 노래가 끝나고 자동으로 다시 해당 노래를 재생하게 만듦

3번 사용자의 경우 특히 의도했던 워치에서의 재생-정지, 마커 기능을 만족해 해서 뿌듯했습니다. 

 

 


그냥저냥 생각들

PicCharge 앱에 이어 Music Marker도 실제 사용자를 기반으로 하여 그들의 불편함을 앱을 통해 직접 해결할 수 있었다는 점이 만족스럽습니다. 

 

뾰족하게 사용자가 겪고 있는 불편함을 해소해주고,

많은 사람들이 사용하는 앱(SNS, 쇼핑앱, 뱅킹앱, 게임 등)이 아니라면

주변에서의 불편함을 명확하게 해결해주는 앱이

결국 지속적으로 사용할 수 있는 앱이라고 생각이 들어 PicCharge, Music Marker 앱에 애정이 갑니다. 

그리고 이러한 것을 도와주는 앱이 가장 이상적인 앱의 형태가 아니지 않나 느낍니다.

 

현재는 모든 팀원들이 흩어져 있어 자주 만나서 작업하긴 어렵지만 아카데미 수료 후에도 1달에 1번 만나면서 상황을 공유하고 앞으로의 방향성, 유지보수 등을 진행하고 있습니다. 

핵심 코드를 7월경 작업했고 반년이 지난 요즘 다시 보면서 저 코드들 어떻게 최적화 하지... 리팩토링 걱정... 을 하며

반대로는 개발할게 있자냐! 하고 재밌게 작업을 하고 있습니다.

(새로 알게된 것들을 적용하고, 성능을 개선시킨다? 엔지니어 관점에서 이건 몬참쥐~)

최근에 코드를 보면서 더 넣고 싶은 기능들도 있고 그렇습니다..

 

이 앱을 위한 인스타 계정도 만들어 놓고 스레드도 만들어서 글을 올려놓고 했지만 

유저 테스트 이후 실질적인 사용자가 없어 아쉬움이 있습니다. 

기획자 친구도 다시 개강 시즌에 맞춰 학교 춤 동아리에 연락을 돌려보는 등 계획을 세우고 있는데 

아이폰-애플워치 사용자 이면서 춤을 추는 사람의 수가 절대적으로 적기도 해서 사용자를 늘리기 위해 어떤 방법을 고안해볼지가 요즘의 가장 큰 고민 입니다. 

 


 

춤 연습을 하면서, 아이폰-애플워치 사용자라면 한번 다운받아 사용해보세요!

피드백 환영입니다!

<앱스토어 링크>

https://apps.apple.com/kr/app/music-marker-music-control/id6670493674?l=en-GB

 

발표일: 2024.08.24
 
 
2025년도 벌써 2월!
설 연휴 + 픽챠 개발 (출시했습니다!)로 글이 늦었습니다.
작년, 멘토분의 권유로 경상국립대학교에서 진행됐던 
Charming Swift Summer의 연사자로 짧게 발표한 내용과 후기를 작성해 보도록 하겠습니다.
 

Charming Swift 2024 Summer 발표사진

 
발표는 개발 협업 경험과 성장에 대해 주식 장기투자와 빗대어 이야기를 풀어갔습니다!(?)


발표 주제

첫 개발 협업: Learning Skill & Apply
- 주식 장기투자와 개발 협업 성장의 공통점
 
발표 내용 5줄 요약
1. iOS 개발은 혼자 해오다 보니, 협업의 필요성을 못 느꼈다.
2. 첫 사이드프로젝트 협업(멍때리기 대회 앱)에서 ‘노션 복붙’이라는 극단적(?) 삽질을 경험했다.
3. 두 번째 프로젝트부터 깃허브를 활용하여 커밋 규칙, PR 작성 등 협업 프로세스를 처음 경험하였고
4. 가르치며 배우는 과정을 거쳐, 2차 멍때리기 대회 앱은 팀원들과 깃허브를 활용하여 시작, 더 큰 성공을 거두었다.
5. 이 모든 과정이 주식 장기투자처럼 ‘단기적 진동을 견디면 장기 우상향’이 가능하다는 걸 몸소 깨닫게 해줬다.

 


어떤 걸 고려했나

[주제]

  • 우선 주 참석자 분들이 경상국립대학교에서 iOS 개발을 하고 있는 학생분들 및 관계자였습니다.
  • 학생들이 많았고, 저 또한 졸업한 지 반년정도가 지난 상태여서 그들이 무엇을 갈망하고 있을까를 고민했습니다.
  • 팀프로젝트도 진행하고, 대부분이 개발 협업이 아직 익숙하지 않은 학생들이라고 판단했고
  • 제가 바로 직전에 개발 협업을 하며 경험했던 것들을 이야기로 풀어 설명하면 그들을 관심을 끌 수 있을 거라고 생각했습니다. 

[주식..?]
    막연히 개발 협업 경험에 대한 내용을 이들에게 설명할 때 
    추상적인 개념, 이미지와 더불어 설명하면
    이해할 수 있는 소재(?)(소스..?)(플로우.??)가 늘어서 다양한 방향에서 이해할 수 있지 않을까 하는 판단에
    '주식'이라는 소재로 한가지 설명 트랙을 추가했습니다.
 
    저는 주식 투자를 성인이 되고 난 후로부터 5년 동안 해오고 있었는데요, 
    개발 외에 내가 오래했고 경험이 있으며 조금 더 많은 사람들이 이해할 법한 소재는 저한테 주식투자 였기 때문에 선택하게 되었습니다.
    그중 흔히 말하는 단타와 장기투자 중 장기투자에 포커스를 두어 설명하게 되었습니다.
 

발표 핵심 내용

[구체적인 비유]
    무언가를 배우고 성장하는 데 있어서 항상 '계단식 성장'에 공감하며 살고 있어서 이와 함께
    주식에서의 '장기투자'와 함께 비유하며 설명하였습니다. 

계단식 성장

 

장기투자

 
    목적을 갖고 목표를 향해 나아간다면, 
    그 과정에서 겪는 난관, 좋은 일, 성공, 멘붕 등이 있을 거고 
    요소들을 겪는 그 순간에는 기쁨과 슬픔이 마치 주식에서 하루에 수도 없이 반복되는 상승과 하락과 유사하며
    성장에서는(개발 협업) 작게는 처음으로 메인 브랜치에 머지할 때 컨플릭이 났지만 뚝딱 고쳐 합쳤다던지의 관점으로 설명해 나갔습니다.
 
    두 가지 모두 결국 성장의 밑거름이 되어 개발에서는 이미 경험한 것들이기에
    맞이했던 문제는 쉬워져 이는 개발 성장으로 이어지고
    주식의 경우에도 상승과 하락의 경험을 반복하고 기업에 대해 공부하고, 차트 관점에서도 공부하고. 하면서
    좋은 주식을 고를 수 있는 힘이 생기게 됩니다. 
 
    이러한 비유로 사람들을 이해시키고자 했습니다!
 
지금 생각정리가 된(응?) 전하고 싶었던 메세지
    나는 개발 협업을 하면서 이러이러한 것을 경험했고 느꼈어.
    다사다난, 희로애락이 있겠지만 성장은 단기에 바로 느껴지는 게 아니라 길게 보면 올라와 있는 거야!
    라고 생각이 듭니다..ㅎㅎ
 

발표를 마치고

천천히 말하며 발표 시간에 딱 맞게 준비했는데, 실제 발표가 끝나고 시간이 남은 걸 보아
생각보다 말이 빨랐구나.. 직감했고,
대본에 많이 의존하며 청중들을 적게 봤던게 생각났습니다. 
 
앞으론, 올해는! 기술적인 내용을 발표해보고 싶군요!! 
 
 
 
ps.
발표를 권유해 주신 멘토분은! 
링고! 이시구요! 다시 한번 글에서 감사 인사드립니다!!
 

+ Recent posts