저는 요즘 SwiftUI 라는 새로운 UI 구현 프레임워크에 빠져있는 상태입니다.
그런 상태에서 유튜브를 돌아다니다가 다음 영상을 보고 느낀점이 있어서 글을 작성합니다.
Q : 우노, 왜 SwiftUI를 익히려고 하시나요?
Uno : 음 ... UIKit이 부족해서라기보다 SwiftUI의 장점들이 정말 매력적인 것 같아서요.
구체적으로 세로로 스크롤 되는 UITableView 를 구현하고 각 셀에 UICollectionView를 구현해야한다고 가정해봅시다.
그러면, 먼져 UITableview를 구현하는 방법이 있는데, 이 방법이 delegation을 알아야하고, 메소드가 어떤 것들이 있는지 익히는 등, UI 자체에 집중하는 것이 아니라 그 외적인 방법들을 열심히 조사하는 시간이 길더라구요.
물론 익숙해지면, 별로 어렵지도 않고 편리한 방법이라는 부분은 인정합니다. 다만, UIKit은 계속해서 문제를 해결하는 방식이 "내가 몰랐던 무언가"를 찾아가는 방식으로 공부를 해야하더라구요.
반면에 SwiftUI는 UI요구사항에 맞추기 위해서는 다른 고민이 필요 없습니다. view 내에 어떻게 구성할지만 고민하면 됩니다. 제가 모르는 새로운 개념이 어디서 튀어나올 걱정이 "상대적으로" 적다는 점이 좋았어요.
이전 프로젝트해서 했던 UI를 그대로 가져오려면, 복사 붙여넣기만 하면 되는 것이 아니라, 다시 오토레이아웃도 맞추고, 프로젝트 타켓부터 시작해서 각종 IBOutlet 등 을 엮어줘야합니다.
이런 부분들이 똑같은 일을 반복하게 한다고 느꼈습니다.
그래서 UIKit으로 작업을 할 때도 코드로 작업하곤 하지만, 제가 한 작업물을 보기 위해서는 매번 빌드를 해야합니다.
이에 비해, SwiftUI는 스토리보드처럼 작업을 해도 코드가 생성되고 코드로 작업해도 스토리보드처럼 바로 볼 수 있죠. 그냥 이 자체가 상당히 재밌었어요!
전 이런 이유로 SwiftUI가 좋습니다!
Q : 근데 UI 구현은 시간이 지나면 모두 익힐 수 있는 것 아닌가요? 그게 개발자의 경쟁력이 될까요?
Uno : ....TT
위 대화처럼, 전 그동안 변하는 것에만 집중하고 있었습니다.
프레임워크는 계속 변할 겁니다.
SwiftUI도 언젠간 낡은 프레임워크가 될 것이고 더 나은 프레임워크가 나오겠죠.
그래도 변하지 않는 개념들은 있습니다.
동기와 비동기처리, 쓰레드의 동작방식 그리고 생명주기 와 같은 개념처럼요.
변하지 않는 개념 == 많은 문제를 해결할 수 있는 방법
변하지 않는 개념은 많은 문제를 해결할 수 있는 방법이라고 생각합니다.
전 변하지 않는 핵심 개념을 공부해야한다고 생각합니다....만
새로운 개념을 SwiftUI로 구현하는 공부도 계속할 예정입니다.
핵심개념이 변하지 않는다는 논리라면,
어떤 프레임워크로 그걸 공부해도 상관 없으니까요.
그리고 결정적으로 SwiftUI는 제가 코딩을하는데 정말 큰 재미를 줍니다^^
지금까지 공부한 SwiftUI 구성요소들과 제가 공부한 개념들을 엮어서
앞으로의 글을 작성할 예정입니다^_^
맨 위에 링크한 영상처럼, 프레임 워크에 집착하진 말아야 합니다.
새로운 프레임워크가 이전 프레임 워크의 문제를 어떤 방식으로 해결했는지 공부하고,
핵심 개념들을 어떤식으로 구현 가능한지 익히는 것이
신기술 습득과 컴퓨터과학의 개념탑재 라는 두 가지 토끼를 잡을 방법이라고 생각합니다.!