cleanUrl: retrospect/lets-swift-pangyo-2020-01/
2020년의 첫 [Let's Swift in 판교](<https://festa.io/events/803>)
에 참여했습니다. 드디어 iOS개발자 커뮤니티에서도 정기적으로 나갈 수 있는 행사가 생겨서 너무나 기쁩니다. 설레는 마음을 안고 참여했는데, 기대이상으로 훨씬 많은 것들을 얻어 갈 수 있는 시간이었습니다.
노수진님께서는 당연히 게임개발에만 사용될 것 같은 GamePlayKit에 상당히 범용적으로 쓸 수 있는 많은 API가 있다는 것을 알려주셨습니다. 예컨대 뷰의 대부분은 몇 개의 상태를 표현하는 상태기계로 볼 수 있기 때문에 GKStateMachine과 GKState라는 클래스를 활용해 로직을 훨씬 풍부하고 깔끔하게 표현할 수 있습니다.
GKStateMachine뿐만 아니라, GamePlayKit자체를 다시 바라봐야 할 것 같습니다. 사실 대부분의 앱에서 제공하고자 하는 UX는 게임을 많이 참고하기 때문에, GamePlayKit에서 제공하는 여러 API에서 얻어갈 수 있는 인사이트가 적지 않을 것 같습니다.
사실 발표만 들었을 때는 언뜻 잘 이해가지 않았던 부분도 있었는데, 노수진님께서 https://github.com/nsoojin/VoiceControlSample-iOS 에 올려주신 코드를 찬찬히 살펴보고 고쳐보다보니 의도가 훨씬 잘 이해되었습니다. https://www.slideshare.net/soojinro9/gameplaykit-ui 의 슬라이드를 보신 후에, 꼭 코드도 함께 보시는 걸 추천드려요.
UI개발에 있어 스토리보드를 써야 하는지 코드를 사용해야 하는지는 iOS개발자들 사이에서 굉장히 첨예한 주제 중 하나입니다. 이 주제에 대한 논쟁은 감정적으로 흐르는 경우도 많지요. 그래서 그런지, 어떤 도구를 사용할지에 대한 결정
을 주로 개인의 취향에 근거해 내리는 경우가 많습니다.
하지만 정낙천님께서는 이제는 어떤 상황에서 어떤 도구를 골라야 하는지에 대해, 더 이상 취향 에만 의존할 것이 아니라 충분한 근거를 가지고 결정해야 한다고 주장하셨습니다. 즉, 프로토타이핑 용이성, 코드재활용 용이성 등 다양한 척도에서 각 도구의 점수는 조금씩 다르고, 각 팀에서 어떤 척도를 더 중요하게 생각하는지 고민하고, 그 고민의 결과를 바탕으로 개발도구를 골라야 한다는 것이지요.
특히 낙천님께서는 초기개발은 프로토타이핑과 코드분할에 유리한 스토리보드를 사용해 개발하고, 이후 퍼포먼스 이슈가 생겼을 때 CoreAnimation을 끌어들이는 플로우를 best-practice로 제시하셨습니다. 이는, 어떤 도구로 개발 하든, 중간에 상황이 바뀌었을 때 적절한 도구로 갈아 탈 수 있도록 프로젝트를 관리해야 가능하겠지요. 본인이 직접 커다란 프로젝트를 이러한 워크플로우로 개발한 사례를 제시해주셔서 재미있게 들었습니다. 참조: 낙천님의 발표자료
또한 스토리보드로 작업 할 때 가장 거슬리는 것 중 하나가 merge-conflict인데, git lfs의 locking 기능 및, storyboard의 locking기능을 활용하여 merge-conflict를 예방 할 수 있다는 내용도 굉장히 흥미로웠습니다.
너무 크지 않은 규모여서 그런지, 더 밀도있고 재미있는 질의응답이 많이 오고 갔던 것 같습니다. 좋은 행사를 준비하시느라 애써주신 스텝분들과, 양질의 지식을 공유해주신 발표자 분들께 다시 한 번 감사말씀 드립니다!