사이드프로젝트 설계 순서 : 아키텍처패턴 → 디자인 리소스 → 기획 → 사용기술
사이드프로젝트를 시작하기 전에 아키텍처패턴들에 대해서 생각을 해보았습니다. 일단 GUI 아키텍처패턴에 대한 강의를 시청하고, 해당 강의를 시청한 후 느낀점은 아키텍처패턴들로 문제점을 해결해가는 것 이아니라, 개발환경에 따른 아키텍처패턴을 선택하는 것이 중요하다는 점을 매우 공감했습니다.
아래 아키텍처패턴별로 참고하기 좋은 템플릿들을 발견했습니다.
- Better the MVC - MVC 패턴에서 캡슐화원칙을 지키기 위한 방향성 제시
- MVVM - MVVM 패턴에서 ViewModel 규칙 제시
- rx-swift-clean-architecture 브랜치를 참고
- Simple Memo RIBs - RIBs 아키텍처프레임워크에 대한 예제와 튜토리얼이 자세히 작성되어 있음
사이드프로젝트를 개발할 때 Design에 대해서도 고려해야 하는데 Figma Community에서 검색하면 다양한 Mobile Design Template등을 제공하고 있습니다.
서비스 기획측면에서는 어떤 프로젝트를 만들지 고려했습니다.
또한, 기술측면에서 서버에 데이터를 저장할 지 기기에 데이터를 저장할 지에 대해 생각해보다가 이번에 그동안 사용해보지 않았던 SwiftData를 사용해봐야겠다 생각했고, Firebase에서 Emulator를 활용하면 Dev환경에서 요금걱정없이 로컬에서 직접 실행할 수 있는 기능이 있다는 것을 알게 되었습니다.
🙋🏻♂️ 기타 사항
- iOS 프로젝트의 보안을 위해 gitignore를 통해 swift 파일을 올리지 않는 방법을 활용했는 데 xcconfig에서 변수를 설정하여 하는 경우도 있는 것 같습니다.
- 지도와 관련된 서비스를 제공하는 도메인은 우리나라 주소에서 행정동, 법정동, 도로명 주소 중 어떤 주소를 기준으로 기획과 디자인을 설계해야하는지에 대한 부분도 고려하면 좋을 것 같습니다.
- 추가로, 각 주소별로 코드도 제공되고 있습니다.
- Xcode에서 TSan(Thread Sanitizer) 설정을 통해 동시성프로그래밍 중 경쟁상태가 발생하는 부분을 발견해서 수정했습니다.
- 값이 읽고 쓰는 부분을 sync로 처리하던지 barrier를 활용해도 되지만 해당 부분은 다른 큐에서 작업할 필요가 없어서 글로벌큐로 보내지 않도록 수정했습니다.
- Tmap EDC SDK라는 앱투앱으로 Tmap 앱의 데이터를 자신의 앱으로 전달해주는 SDK의 샘플을 실행해봤는데 안드로이드에서는 3rd-party 앱인데 데이터전달이 매끄러운 것이 신기했습니다.