Skip to content →

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

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주는 이런 간단한 문제들을 해결 할 수 있게 되는 즐거움을 느껴보는 것을 목표로 해보세요.

Start Developing iOS Apps

Swift의 간단한 문법을 어느 정도 맛보셨으면, 본격적으로 간단한 iOS앱을 만들어봅시다. Start Developing iOS Apps 이라는 문서를 통해, 여러분은 식사를 기록하고 평가하는 “Food Tracker”라는 앱을 만들게 될 겁니다.

이 문서만 제대로 따라하고 또 이해한다면, 시중에 나와있는 거의 대부분의 앱을 적어도 어설프게는 따라 할 수 있을 겁니다. 특히 이 문서에서는, 대부분의 튜토리얼들이 종종 누락하곤 하는 다양한 디테일들에 대해 충분하고도 친절하게 설명을 하고 있습니다.

Xcode로 개발 하다가 경고창이 뜨면 “응??”하다가도 Xcode가 제시해주는 Fixit을 눌러서 해결하게 되면 그 Fixit의 맥락이나 내용에 대해 고민하지 않고 지나치게 되는 경우가 많은데, 이 문서를 꼼꼼히 읽는다면, 그런 일을 피할 수 있을 겁니다.

@IBOutlet 을 연결 할 때 어떤 일들이 일어나는지, init(frame:CGRect를 override 할 때 왜 required init(coder: NSCoder 도 구현하라고 하는건지와 같이 사소하지만 중요하면서도 지나치기 쉬운 요소들을 확실하게 익히고 가세요.

Getting Started with Xcode

Start Developing iOS Apps 와 비슷한 성격의 WWDC 발표입니다. 다만 위 문서가 UIKit기반의 튜토리얼이라면, 이 발표는 2019년 내용이기 때문에 SwiftUI를 기반으로 설명이 이루어지고 있습니다. iOS개발을 처음 시작하는 분은 반드시 체크해야 할 내용입니다.

Xcode Help

Xcode에는 굉장히 다양한 기능이 많습니다. 저는 Xcode를 다룬 지 2년이 넘어가지만, 아직도 제대로 쓰지 못하는 기능이 많습니다. Xcode Help 에서는 Xcode가 “어디까지 할 수 있는지”에 대해 한 눈에 볼 수 있습니다. 특히 이 문서는 Xcode를 설명하는 문서들 중에서도 Tutorial로서의 성격을 띄기 때문에 특히 초보자에게 유용합니다. 만약 "How to do .. in Xcode" 와 같은 것을 구글에 검색 하고 싶은 충동을 느낀다면, 먼저 이 문서를 확인해 보세요.


네비게이션

Managing Content in Your App’s Windows

적절한 네비게이션 모델을 고르고 구현하는 것은 iOS개발에서 가장 중요한 부분 중 하나입니다. 이 분서에서 iOS에서 기본으로 제공하는 여러 네비게이션 모델들의 개괄을 확인하고 또 구현해보세요.

Displaying And Managing Views with a ViewController

View와 ViewController의 관계처럼 밀접하면서도 또 헷갈리는 관계도 없습니다. 훌륭한 iOS개발자라면 View의 역할과 VIewController의 역할, 또 그 둘의 관계에 대해서 확실하게 말 할 수 있어야 합니다. 또 각각의 LifeCycle에 대해서도 그리고 각 LifeCycle에서 개발자가 어떻게 대응해야 하는지도 제대로 알아야 하죠. 이 문서에 대부분의 내용이 정리되어 있습니다.

Showing And Hiding ViewControllers

새로운 화면을 띄우는 방법에는 여러가지가 있습니다. 그리고 각각의 방법엔 모두 장점과 단점이 있습니다. 각 앱의 맥락에 맞는 방법을 찾는 것은 개발자의 몫입니다. 다만 어떤 방법들이 있는지 확실히 알고 있어야 그 중 가장 좋은 방법을 고를 수 있겠죠?


리스트 뷰 만들기

사실 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

유저의 입력을 제대로 받아서 검증하는 것은 아주 어려운 일입니다. 특히 깔끔하고 정돈된 방식으로 하려면 더더욱 어렵죠. 하지만 Text Programming Guide 에는 개발자들이 빠지기 쉬운 함정들과 그에 대응하는 여러 방법들이 친절하게 소개되어 있습니다. 비록 archived된 objective-c기반의 내용이지만, 결코 오늘날에 와서 쓸모 없는 내용들이 아닙니다. 이렇게 훌륭한 내용들을 왜 계속 발전시키지 않고 archive시키는지 모르겠어요.

Search Controller

기존에 만들어진 앱의 사용성을 획기적으로 개선 할 수 있는 단 한가지의 기능을 뽑으라고 한다면, 저는 UISearchController를 꼽겠습니다. 아까 말씀드렸듯, 대부분의 앱은 JSON을 예쁘게 보여주는 역할이에요. 따라서 사용자가 관심있는 JSON을 바로 접근 할 수 있게 해주는 “검색”기능은 매우 필요한 기능임에도 상당히 많은 앱들에서 누락되어 있는 기능입니다.

구현하기 어렵지 않고, 그러면서도 사용성은 확연히 개선해주는 UISearchController를 가급적 꼭 사용해줍시다.


Push

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

이 문의에 대답하기 위해 백엔드 개발자가 되어야 할 필요는 없지만, 적어도 아래의 문서들을 잘 읽어 놓는 것은 반드시 필요한 일입니다.

마치며

지금까지 다룬 문서들을 확실히 이해했다면, 아마 어떤 종류의 기획이 들어와도 대부분 대응 할 수 있는 개발자가 되어 있으실 겁니다. 어떻게 그렇게 훌륭한 개발자가 되었느냐고 누가 물어보면 이렇게 대답하세요. “야근하지 않고 공식문서 위주로 충실히 공부했습니다” 라고요. 😁

물론 결코 공식문서만으로 iOS개발을 해야 한다는 얘기는 결코 아닙니다. 때로는 동영상 포맷의 강의들이 훨씬 직관적으로 도움이 될 때가 많습니다. 영어가 너무 불편해 한글로 된 튜토리얼을 찾고 싶을 때도 있지요. 그럴 때는 그런 컨텐츠들을 적극 활용하는 것도 필요합니다. 하지만 특히 초심자일 수록, 가급적 그런 자료들은 공식문서를 이해하는 보조자료로 사용 하시라고 말씀드리고 싶어요. 세상에는 검증되지 않은 강좌나 튜토리얼도 분명 많이 있으니까요.

마지막으로, 위에서 다루지는 못했지만, 반드시 참고하고 넘어가야 할 문서들 몇 개의 링크를 정리하면서 이번 글은 마치겠습니다.


더 확인 할 문서들

UIKit 기초

개발환경 이해

메모리 관리

Best Practices

Published in 프로그래밍 회고, 또는 의견

6 Comments

  1. 원

    잘 읽었습니다. 좋은 글 감사합니다.^^

    • 재밌게 읽어주셔서 감사합니다!

  2. 피가 되고 살이되는 글입니다. 반성하게 되네요.

  3. 임동섭 임동섭

    정리를 너무 잘해주셔서 도움이 많이 되었습니다!

  4. 공식문서 정리해 놓은 글은 처음이네요~ 너무 잘 봤습니다.

댓글 남기기

This site uses Akismet to reduce spam. Learn how your comment data is processed.

%d 블로거가 이것을 좋아합니다: