일단 swift부터 알아봅시당.
일단 애플에서 자체적으로 만든 프로그래밍 언어임.
뭐 이런 특성이 있다고 소개하고 있는데
기존 ios용 언어인 obj-c와 같이 쓰려고 만든 언어.
그래서 아직도 ios 네이티브 앱을 개발하려면 옵젝씨(이건 언제 공부하지..후)도 알아야 한다고 한다.
요런 식으로 쉽고 빠르게 코드를 작성할 수 있다고 한다.
옵젝씨와 같은 LLVM 방식으로 만들어진 언어라고 하는데, LVVM과 컴파일에 대해서는 다음에 알아보도록 하고!
암튼 LLVM으로 만들어져서 프로그램 최적화가 쉽다고 한다.
원래 swift로 앱을 개발할 때는 스토리보드를 사용했다.
어떻게 하는지는 정확히 모르겠지만 작년에 공부하던 책에서는 스토리보드로 앱을 만드는 방법을 가르쳐 줬는데, 요 스토리보드가 단점이 있다고 함...!!
앱이 커지면 스토리보드도 엄청 커지기 때문에 오류를 잡아내기도 쉽지 않고 협업 및 보수도 어렵기 때문에 요 방법을 안 좋아하는 개발자들이 있었다고 한다.
그래서 SwiftUI가 나왔는데!!
SwiftUI는 이 swift를 사용해 앱을 좀 더 구성하기 쉽게 만든 프로그래밍 패러다임? 이라고 함.
프로그래밍 패러다임은 함수형이나 객체형, 또는 (C++에서는) 절차적, 객체기반, 객체지향, 제네릭 프로그래밍 등 프로그래밍에 대해 여러 방법을 제시하는 것들을 말한다. (프레임워크랑 같은 말이라고 함. 차이점을 잘 모르겠다.)
쉽게 말해서 swift라는 언어를 사용해 어떻게 앱을 좀 더 쉽게 빌드할지 제시해주는 방법이라고 이해하면 될듯.
암튼 요건 선언형 프로그래밍(declarative programming)방법을 사용하기 때문에 디자인 요소들을 생성하고 거기다가 얘네의 속성들을 설정하면 되는 아~~~주 간편한 방법으로 코드를 작성할 수 있다. 가독성도 좋음.
사실 한 학기동안 SwiftUI로 코드를 작성해 본 결과로는 swift의 문법이 어려웠지, 코드 작성하는 방법이 어렵지는 않았다.
Textfield 만들어놓고 뒤에 속성만 몇 개 추가하면 원하는 게 짠! 하고 만들어지는게 넘 편했음.
암튼 다음 알아볼건
ios 앱 빌드에서 가장 기본적이고 기반이 되는 프레임워크이다. 근데 이것도 많이 들어보기만 했지 직접 찾아본 건 처음이다..(진작 좀 찾아볼걸..)
이건 ios, tvOS에 들어가는 앱 빌드에 필요한 오브젝트를 지원하는데, 이벤트를 중심으로 하고, 상속을 기반으로 UI를 제작한다. 이 상속때문에 레거시 코드(테스트가 불가능하거나, 기능이 정상적이지 않거나, 난해한 똥 코드)가 많아져서 SwiftUI가 새로 나왔다고 보면 될듯.
SwiftUI가 이 UIKit을 완벽히 대체하는 건 아니고, 그냥 새로운 패러다임이라고 보면 된다.
즉 UIKit은 기존에 ios앱을 빌드하는 방식이였음!
이건 앱을 만들 때 로그인 기능 구현에서 firebase를 넣으려고 하니 cocoapod이 필요하다고 해서 그때 처음 들어봤다.
터치와 관련된 디바이스 앱을 개발할 때 Cocoa Touch Framework를 많이 쓴다고 함.
이게 바로 UIKit, Foundation, CoreData, MapKit 등 앱 개발할 때 많이 봤던 이 프레임워크를 포함하고 있는 통합 프레임워크라고 하더라...
이걸 제일 먼저 했어야 했던 게 아닐까?
암튼 옵젝씨를 기반으로 하고, NSObject를 상속하는데 Swift와 완벽호환되기 때문에 옵젝씨를 몰라도 쓸 수 있다는 거시다!
Cocoa framework는 MacOS 개발 때 사용한대.
UIKit이 아니라 AppKit을 포함하고 있다는 게 가장 다른점!
코코아팟에다가 사용하고자 하는 라이브러리나 프레임워크 목록을 텍스트로 작성해두면 얘가 알아서 설치랑 업데이트도 해주고,, 귀찮은 일을 도맡아서 해주는 거.
이거 안쓰면 원하는 기능이 있을 때 해당 프레임워크를 손수 다 설치해줘야 하고, 로드시키는 과정도 필요함.
굉장히 쓸만할듯?
근데 나는 이거 쓰는방법을 잘 모르겠어서 이번 프로젝트 때 하나하나 설치해줬다...
ios 오픈채팅방에 들어가서 막 보다 보니까 이 단어가 제일 많이 보이던데!
대체 이게 뭐지? django처럼 swift의 다른 프레임워크인가? 하면서 궁금해했는데 드디어 찾아봤다.
비동기 프로그래밍은 이 영상을 보고 깨달았다. 진짜 미쳤음. 작년 react 스터디 할 때 이분 영상을 봤다면 포기하지 않았을 텐데...
함수는 보통 위에서 아래로, 쓴 순서대로 실행되는데 비동기 처리를 하면 이걸 순서대로가 아니라 비동기적으로 실행이 되는 거.
만약 데이터베이스로 갈 때는 서버로 이동하고 데이터를 가져오기까지 시간이 좀 걸리기 때문에 이걸 비동기 처리를 통해 빠르게 실행해버리는 거임.
일단 Rx 라이브러리라는 게 있다. 다른 언어에도 모두 있는듯? RxJava, RxKotlin 등등..
풀네임은 ReactiveX인데, 리액티브 프로그래밍. 즉 반응형 프로그래밍을 위해 사용하는 것이다.
이게 왜 나왔냐면, 비동기, 데이터 동기화의 중요성이 늘어나서 비동기 프로그래밍이 중요해졌기 때문.
비동기로 하면 뭐가 좋아지냐?
앱이 빠릿빠릿해지고 정보를 가져오는 속도가 빨라지며 안정성도 증가한다고 함.
암튼 RxSwift는 swift의 또다른 프레임워크인데, 비동기 프로그래밍을 지원한다고 한다.
이게 없으면?
비동기 실행에 관한 정확한 예측이 힘들어진다는 것!
일단 여기까지만 알아보고, 다음에 사용하게 될 때 확실하게 공부해서 각 프레임워크별로 써 봐야겠다.