Search
Duplicate
🛠️

공식문서 만으로 iOS 개발 배우기

Created
2020/01/12
Tags
Programming
Opinion
iOS개발에 처음 발을 내딛은 분들에게는, 당장 “어디서 어떻게 배워야 하는지”만큼 시급하고도 중요한 질문이 없습니다. 좋은 유튜브 강좌나 블로그 튜토리얼 등을 보면 될까요? 하지만 그 유튜브 강사나 블로그 저자가 정말 신뢰할 만한 사람인지, iOS개발에 대해 아무것도 모르는 입장에서 어떻게 판단 할 수 있을까요?
더 운이 나쁜 경우는, 회사에서 다른 개발을 하다가 갑자기 iOS개발을 떠맡게 되는 경우입니다. 이런 경우에는 기존에 짜여진 코드를 최대한 존중해야 하기 때문에, 자칫 잘못된 방식으로 짜여진 코드들도 “원래 이렇게 짜나보다” 하고 오해하고 잘못된 습관을 체화 시키게 되는 경우도 있겠습니다.
iOS개발자로서 중심을 잡고 개발을 배워나가기 위해서는 무엇보다도 공식문서들을 최대한 자주 들춰보아야 합니다. 각 API의 원래 의도가 어떤 것이고, 어떤 방식으로 사용되기를 애플이 기대하는지에 대해, 애플만큼 더 정확히 설명 할 수 있는 유튜브 강사는 없을 테니까요.
이번 포스트에서는, 오직 애플의 공식문서들 만으로 iOS개발을 처음부터 끝까지 배우는 방법에 대해 적어보겠습니다.

iOS개발 시작하기

A Swift Tour

정말 완전완전 iOS개발이 처음이신 분은 당연히 Swift부터 배우셔야겠죠. Swift를 배우는 여러가지 방법이 있지만, 가장 중심이 되어야 하는 방법은 공식문서를 확실하게 이해하는 것입니다. 특히 Swfit는 이 공식문서 자체가 playground라는 포맷의 interactive한 방식으로 만들어져 있기 때문에 굉장히 편하고 재미있게 이해 할 수 있습니다. (링크: Swift공식 문서 Playground 버전) 충분히 많은 시간을 가지고 그야말로 Play해보세요. 이것 저것 망가뜨려보고 실험해보고 실패해보고 오류메시지를 읽어보세요. 정말정말 프로그래밍이 처음이라면, Control플로우에서 많은 시간을 보내보세요. 이 정도만 익혀도 https://programmers.co.kr 의 level1 문제들을 충분히 풀 수 있게 됩니다. 처음 1~2주는 이런 간단한 문제들을 해결 할 수 있게 되는 즐거움을 느껴보는 것을 목표로 해보세요.
Swift의 간단한 문법을 어느 정도 맛보셨으면, 본격적으로 간단한 iOS앱을 만들어봅시다. iOS App Dev Tutorials 에서는, 간단한 리마인더 앱을 만들면서 애플이 권장하는 BestPractice 들을 자연스럽게 취득할 수 있게 됩니다. 많은 시중의 튜토리얼들에서 놓치는 퍼포먼스, 접근성 관련 이슈들에 대해서도 놓치지 않고 공부 할 수 있습니다.
Xcode에는 굉장히 다양한 기능이 많습니다. 저는 Xcode를 다룬 지 2년이 넘어가지만, 아직도 제대로 쓰지 못하는 기능이 많습니다. Xcode Help에서는 Xcode가 “어디까지 할 수 있는지”에 대해 한 눈에 볼 수 있습니다. 특히 이 문서는 Xcode를 설명하는 문서들 중에서도 Tutorial로서의 성격을 띄기 때문에 특히 초보자에게 유용합니다. 만약 "How to do .. in Xcode" 와 같은 것을 구글에 검색 하고 싶은 충동을 느낀다면, 먼저 이 문서를 확인해 보세요.

네비게이션

적절한 네비게이션 모델을 고르고 구현하는 것은 iOS개발에서 가장 중요한 부분 중 하나입니다. 이 분서에서 iOS에서 기본으로 제공하는 여러 네비게이션 모델들의 개괄을 확인하고 또 구현해보세요.
다양한 iOS의 네비게이션 모델
View와 ViewController의 관계처럼 밀접하면서도 또 헷갈리는 관계도 없습니다. 훌륭한 iOS개발자라면 View의 역할과 VIewController의 역할, 또 그 둘의 관계에 대해서 확실하게 말 할 수 있어야 합니다. 또 각각의 LifeCycle에 대해서도 그리고 각 LifeCycle에서 개발자가 어떻게 대응해야 하는지도 제대로 알아야 하죠. 이 문서에 대부분의 내용이 정리되어 있습니다.
새로운 화면을 띄우는 방법에는 여러가지가 있습니다. 그리고 각각의 방법엔 모두 장점과 단점이 있습니다. 각 앱의 맥락에 맞는 방법을 찾는 것은 개발자의 몫입니다. 다만 어떤 방법들이 있는지 확실히 알고 있어야 그 중 가장 좋은 방법을 고를 수 있겠죠?

리스트 뷰 만들기

사실 Start Developing iOS Apps 에서 이미 tableView와 tableViewCell을 활용하는 법에 대해 다루긴 했었죠. 하지만 해당 문서는 앱 개발 전반을 다룬 튜토리얼 문서이기 때문에 “tableView 다루기”에 대해서만 잠시 리마인드를 하고자 할 때에는 지나치게 많은 정보를 담고 있습니다.
아래의 문서들은 tableView를 다루는 부분에 대해서만 딱 정리하고 있습니다. 특히 Self-Sizing-Cell 을 만드는 원리와 방법에 대해 더 깊이 다루기 때문에 별도로 체크 해 둘 필요가 있습니다.

네트워크에서 JSON을 받아와 보여주는 앱 만들기

대부분의 앱은 HTTP네트워크를 통해 json을 받아와 그 json을 예쁘게 보여주는 기능이 핵심입니다. 애플에서도 당연히 이를 알고 있고, 따라서 이 부분을 개발자들이 잘 개발 할 수 있도록 양질의 문서를 만들어 놓았습니다.
혹시 “How to make HTTP request in Swift” 같은 내용을 검색하고 싶은 유혹을 느끼셨다면, 먼저 아래의 문서들을 확인해 보세요. 아마도 별도의 블로그 튜토리얼이나 3rd Party 네트워크 라이브러리는 필요 없을 겁니다.

자주 쓰이는 패턴

이 쯤 되면 자주 보이는 코드 패턴들이 보이기 시작 할 겁니다. 이런 패턴들을 “그냥 쓰나보다” 하지 말고, 다음의 문서를 통해 해당 패턴들이 나온 맥락을 이해하고 더 잘 쓸 수 있기 위해 노력합시다.

유저 입력 다루기

유저의 입력을 제대로 받아서 검증하는 것은 아주 어려운 일입니다. 특히 깔끔하고 정돈된 방식으로 하려면 더더욱 어렵죠. 하지만 Text Programming Guide 에는 개발자들이 빠지기 쉬운 함정들과 그에 대응하는 여러 방법들이 친절하게 소개되어 있습니다. 비록 archived된 objective-c기반의 내용이지만, 결코 오늘날에 와서 쓸모 없는 내용들이 아닙니다. 이렇게 훌륭한 내용들을 왜 계속 발전시키지 않고 archive시키는지 모르겠어요.
기존에 만들어진 앱의 사용성을 획기적으로 개선 할 수 있는 단 한가지의 기능을 뽑으라고 한다면, 저는 UISearchController를 꼽겠습니다. 아까 말씀드렸듯, 대부분의 앱은 JSON을 예쁘게 보여주는 역할이에요. 따라서 사용자가 관심있는 JSON을 바로 접근 할 수 있게 해주는 “검색”기능은 매우 필요한 기능임에도 상당히 많은 앱들에서 누락되어 있는 기능입니다.
구현하기 어렵지 않고, 그러면서도 사용성은 확연히 개선해주는 UISearchController를 가급적 꼭 사용해줍시다.

Push

iOS에서 Push관련 기능은 대부분 서버에서 관리해야 하는 경우가 많습니다. 하지만 막상 외부 사람들은 그렇게 생각하지 않아요. iOS푸시니까 iOS개발자가 잘 알아야 한다고 생각하죠. 사실 실제로도 그렇습니다. 푸시 기능은 서비스 초장기에 구현되기 때문에, 해당 기능을 구현해놓은 서버 개발자분이 지금은 다른 곳에 계실 가능성이 많습니다. 자연스럽게 여기에 문제가 생기거나 새 기능이 필요하다고 하면 iOS개발자에게 문의가 들어오기 마련입니다.
이 문의에 대답하기 위해 백엔드 개발자가 되어야 할 필요는 없지만, 적어도 아래의 문서들을 잘 읽어 놓는 것은 반드시 필요한 일입니다.

마치며

지금까지 다룬 문서들을 확실히 이해했다면, 아마 어떤 종류의 기획이 들어와도 대부분 대응 할 수 있는 개발자가 되어 있으실 겁니다. 어떻게 그렇게 훌륭한 개발자가 되었느냐고 누가 물어보면 이렇게 대답하세요. “야근하지 않고 공식문서 위주로 충실히 공부했습니다” 라고요.
물론 결코 공식문서만으로 iOS개발을 해야 한다는 얘기는 결코 아닙니다. 때로는 동영상 포맷의 강의들이 훨씬 직관적으로 도움이 될 때가 많습니다. 영어가 너무 불편해 한글로 된 튜토리얼을 찾고 싶을 때도 있지요. 그럴 때는 그런 컨텐츠들을 적극 활용하는 것도 필요합니다. 하지만 특히 초심자일 수록, 가급적 그런 자료들은 공식문서를 이해하는 보조자료로 사용 하시라고 말씀드리고 싶어요. 세상에는 검증되지 않은 강좌나 튜토리얼도 분명 많이 있으니까요.
마지막으로, 위에서 다루지는 못했지만, 반드시 참고하고 넘어가야 할 문서들 몇 개의 링크를 정리하면서 이번 글은 마치겠습니다.

더 확인 할 문서들

UIKit 기초

개발환경 이해

메모리 관리

Best Practices