새로운 강의는 이제 https://memi.dev 에서 진행합니다.
memi가 Vue & Firebase로 직접 만든 새로운 사이트를 소개합니다.
앱(iOS Android) 둘 다 만들기 - iOS 준비하기
모바일앱을 개발한다고 하면 대부분은 안드로이드와 iOS 둘 다 원합니다.
힘들지만 결국 둘 다 해야하는데 문제는 모바일 혼자서는 할 수 있는 일이 별로 없습니다.
그래서 서버와의 인터페이스가 중요합니다.
안드, iOS, 웹, 백엔드, 디비.. 다 할려니 너무 복잡하죠..
슬프지만 다 하진 않더라도 알고는 있어야 다른 업체와 소통이 가능합니다.
시대가 그러니 어쩔 수 없는 것이 더 문제입니다.
뭔가 장황해서 엄두가 나지 않지만..
최근에 나온 솔루션들이 매우 개발자 친화적이라 쉽게 개발이 가능한 부분이 많습니다.
물론 깊게 들어가면 곤란한 상황도 많지만.. 그런 걸 극복하는 것이 개발자입니다.
어짜피 앞으로도 주욱 라이브러리니 언어는 변해갑니다.
어떤 기술에 초점을 두지 말고 무엇을 만든다 에 집중하면 됩니다.
먼저 iOS를 간단하게 진행하고 안드로이드로 넘어가겠습니다.
iOS 개발에 앞서
iOS를 하려면 개발언어인 오브젝트씨 혹은 스위프트가 필요합니다.
애플은 스위프트를 권장하기 때문에 당연히 최신버전인 스위프트4로 진행하면 그만입니다.
그래서 대부분 먼저 스위프트를 공부합니다.
그럴 경우 공부하면서 지쳐서 어느 순간 포기하게 되는 경우가 많습니다.
왜냐하면 언어공부는 실체가 없기 때문이죠..(콘솔에 프린트만 하다 끝남)
제가 프로그램을 시작하는 분들께 늘 권하는 이야기가 있습니다.
바로 “선구현 후개선” 입니다.
먼저 빈 껍데기 뿐이라도 핸드폰에서 정말 돌아가는 지 눈으로 확인하고 진행하는 것이 좋다고 생각합니다.
버튼, 테이블들을 추가하면서 목표에 대한 감을 잡고 언어를 같이 습득하는 것이 지루하지 않게 목표에 다가가는 방법입니다.
앞으로 진행할 내용들을 간략히 계획해봅니다.
준비물
iOS 개발을 하려면 돈이 듭니다..
우선 개발툴 Xcode가 돌아갈 맥이 있어야합니다.
그리고 최소한 개발자 등록(약 십만원?) 하고 앱 실행까지는 되야 강좌 진행이 가능합니다.
인터넷에 등록 절차는 널려있으니 준비하고 진행합니다.(회사가 아닌 경우 어떻게 진행해야할 지 잘 모르겠습니다. 인터넷 찾아보세요..)
유의 사항
개발 시 유의할 사항은 구글링 할 경우 최근 1년으로 필터를 걸어서 검색하시기 바랍니다.
왜냐하면 검색 시 상위에 노출되는 대부분이 스위프트 구버전 혹은 오브젝트씨 인데 참고가 될 수는 있으나 대부분 혼란만 가중시킵니다.
스위프트4 역시 나온지 1년도 안된 것 같은데 곧 스위프트5가 나온다고 합니다.
지금 진행할 이 강좌도 2,3년 후엔 쓰래기가 될 정도로 세상은 빨리 변합니다.
낙담하지 마시고 적응하시고 즐기세요~
UI
기본적인 것만으로 구현할 예정입니다.
나머지 탭바, 세그먼트, 슬라이더등 몇가지 써보면 어떻게 쓰는 지는 느낌으로 알 수 있습니다.
버튼
어느 페이지던 대부분 버튼이 액션을 취할 때 어떤 일을 하게됩니다.
모바일에선 주로 적용이나 취소에서 많이 쓰입니다.
테이블뷰
대부분의 모바일에서 가장 많이보는 테이블입니다.
목록을 읽기 매우 편리하죠.
페이징 기법이 필요한 UI라 가장 많은 공부 에너지가 소모될 것입니다.
네비게이션
페이지간 이동이 필요한데 그 때 네비게이션콘트롤러로 제어합니다.
상단 바에 뒤로가기(< Back)등을 많이 보셨을 겁니다.
텍스트필드
텍스트를 입력 받을 곳입니다.
텍스트뷰
html의 textarea 같은 것입니다.
콘솔에 찍어보는 것보다 이곳에 찍는 게 직관적입니다.
얼러트
기본 경고창도 모바일은 뷰가 괜찮아서 간단하게 쓰기엔 좋을 것 같아서 사용합니다.
언어
구현에 필요한 생기초만 사용하고 꼭 필요할 때 스위프트만의 매력 있는 문법을 알아볼 예정입니다.
조건
if switch 등 기초적인 것들
변수
각 변수들이 어떤 종류가 있는 지 어떻게 선언하는지 확인(Int String double 등)
JSON 표현 변수들(struct, class..)
앞으로 해야할 일은 거의 대부분 REST API로 JSON 데이터를 가져와서 표시해야됩니다.
당연히 스위프트에서 JSON 자체를 쓰지는 못하기 때문에 스위프트에 맞는 형식으로 변경이 필요합니다.
배열
대부분 목록에 표현할 배열
반복문
배열을 쓴다는 것은 반복문이 꼭 필요하죠.
함수
오묘하게 다른 언어랑 다르지만 결국 비슷합니다.
옵셔널
다른 언어에서 늘 고민하던 null, nil 등을 사전 방지할 수 있습니다.
기능
라이브러리 설치
코코아팟을 이용해 써드파티 라이브러리를 손쉽게 사용 가능합니다.
예를 들어 스위프트 기본 날짜 클래스도 좋지만.. 이미 잘 쓰고 있던 모먼트 같은 것이 훨씬 생산성이 높겠죠?
앱푸쉬
fcm을 통해 쉽고 간단하게 구현됩니다.
사실 앱을 만드는 가장 큰 이유일 수도 있습니다.
웹이 하지 못하는 일을 하는 것이니까요~
통신(http CRUD)
로컬로 돌아가는 앱이면 모르겠지만 대부분의 경우 제일 중요한 것은 서버와의 소통입니다.
RESTful API로 백엔드 서버와 urlSession으로 가볍게 구현해봅니다.
기존 모던웹강좌를 들으셨던 분들은 프론트엔드
<axios>
백엔드 에서 앱<urlSession>
백엔드로 바뀌었을 뿐입니다.
JSON 파싱
항상 방법은 여러가지이지만 신규언어 버전(현 스위프트4)일 수록 더 좋은 방법을 제공합니다.
이제 codable이란 구조로 깔끔하게 파싱이 가능합니다.
테이블뷰 페이지네이션
10000개의 데이터를 다불러 올 수는 없습니다.
대부분 skip과 limit로 페이징 처리를 합니다.
모바일의 꽃이라고 생각합니다.
저장소
어떤 프로그램이던 자신만의 저장소가 있어야합니다.
디비가 필요한 정도가 아닌 토큰과 간략한 정보들을 UserDefaults를 이용해 저장해 볼 것입니다.
배치
아이폰만 돌아갈 수 있는 앱은 아쉽습니다.
애플은 개발자가 항상 유니버셜로 만들기를 희망합니다.
그러려면 디바이스마다 자동으로 배치되고 사이즈가 맞게 배치하는 기술이 필요합니다.
결론
제가 iOS or swift등 너무 잘해서 강좌를 진행하는 것이 아닙니다.
오히려 처음 해보지만 어떻게 접근하고 어떻게 풀어가는 지 보여드리는 것이 목적입니다.
최대한 인터넷에 돌아다니는 코드 조각(스니펫) 사용하지 않고 정규 문서를 바탕으로 만드는 것이 중요합니다.
댓글남기기