전체 글

회고

[회고] 신입 iOS 개발자 1개월간 회고

iOS 개발자로써 회사에 입사하게 된지 어느덧 1개월이라는 시간이 지났다!! 카페->집->카페->집 의 반복된 일상생활에 질려서 거의 합격하자 마자 일주일도 안된 날짜에 입사시기를 결정했는데, 약간 후회가 되기도 하지만 일을 하면서 부족함을 많이 느끼고 있어서 오히려 좋아(?)라는 생각으로 회사에 다니고 있다. 첫 출근 전날 친구들에게 정장 입고 가야되는지를 물어봤던 것이 떠오른다. 깔끔하게 입고 가긴 했지만 만약 정장을 입고 갔더라면.. 두고두고 놀림감이 되지 않았을까 싶다. 자유로운 분위기라 반바지를 입고 다니시는 분도 있다 아무튼 현재 내가 맡게 될 업무는 기존에 웹 뷰 형식이던 서비스를 iOS 네이티브 앱으로 전환하는 것이다. 그러나 아직 기획안이 나오지 않아서 1~2개월이라는 시간이 나에게 주어..

iOS 개발/Combine

[Combine] Publisher & Subscriber란?(1)

현재 다니고 있는 회사에서는 UIKit + Combine을 활용한 앱을 개발하고 있다. 따라서 이제껏 Combine을 써오긴 했지만 뭐가 뭔지도 모르고 항상 쓰고 있어서 이번에는 꼭 깊게 공부를 해보려고 다짐하며 글을 쓰게 되었다. 진짜 이번에도 안하면 내가 사람이 아니지 Combine 5가지 프로토콜 1. Publisher 2. Subscriber 3. Subject 4. Scheduler 5. Cancellable Publisher란? Publisher는 프로토콜. 타입이 시간에 따라 일련의 값을 전송할 수 있음을 선언한다. Publisher는 하나 이상의 Subscriber 인스턴스에게 element를 제공한다. Publisher는 receive(subscriber:) 메소드를 구현해 subscri..

iOS 개발

[iOS 개발] Compositional Layout이란?

Compositional Layout이란? 요즘 앱들을 보면 단순히 TableView, CollectionView 하나로 이루어져 있는 경우보다 섹션별로 각각 다른 레이아웃으로 구성되어 있는 경우가 대부분이다. 과거에 나 또한 TableView에 CollectionView를 넣어서 화면을 구성했던 기억이 나는데, 기억상 데이터 전달을 할 때 어지러웠던 기억이 난다. 이러한 경우 Compositional Layout을 사용하게 된다면 유연하고 편리하게 화면을 구성할 수 있다. Compositional Layout 구성 Compositional Layout은 Layout, Section, Group, Item으로 구성된다 Layout안에는 Section들이, Section안에는 Group들이, Group안에..

Clean Architecture

Coodinater Pattern 정의 및 예제(1)

Coodinater Pattern이란? Coordinator는 뷰 컨트롤러의 움직임을 조정하기 위한 타입이다. 이러한 Coordinater가 필요한 이유는 1. Massive View Controller의 문제점 2. 기존 화면전환 시 존재하던 ViewController간의 수평적인 관계 또는 강한 결합의 문제점 을 해결하기 위해서 등장하게 되었다. 이러한 문제점을 극복하기 위해 아예 화면전환을 관리하는 독립적인 클래스를 이용하자는 것이 주 아이디어이다. 한 두개의 화면으로 구성된 프로젝트의 경우 큰 문제가 없을지 몰라도, 프로젝트가 커질 경우 다양한 방식의 화면 전환이 이루어질 가능성이 있고, ViewController들이 서로서로 종송적으로 연결되어 있다면 관리하기 또한 어려울 것이다. 따러서 Vie..

Clean Architecture

클린 아키텍쳐 정리 및 예제

클린 아키텍처란? 오늘날까지 수많은 아키텍처(마이크로 서비스, 서버리스 등)들은 전반적으로 '관심의 분리'(Seperation of concerns)와 '테스트 가능성'(Testability)을 보편적인 요구를 갖고 있습니다. 클린 아키텍처는 이러한 요건을 만족하는, 간단히 말하면 '추상화 개념'(Abstraction principle)으로써 관심사를 분리시키고 의존도를 낮추는 것에 목적을 둔 아키텍처입니다. 의존도를 낮추고 서로에게 주는 영향을 감소함으로써 유지보수의 용이성이 향상됩니다. 덕분에 낮은 비용으로 새로운 기능을 추가할 수 있습니다. 기본적인 원리는 종속성 규칙(Dependency Rule)을 지키는 것입니다. 각 코드의 종속성은 외부에서 내부로 안쪽으로만 가리킬 수 있고, 고수준 정책(Hi..

iOS 개발

BaseViewController란?

BaseViewController란? BaseViewController는 UIViewController를 상속받는 커스텀 뷰컨트롤러를 뜻한다. 이러한 BaseViewController를 사용하는 이유는 개발자가 사용하기 편하게 커스텀 한 후 ViewController를 생성할 때 UIViewController가 아닌 BaseViewController를 상속받아 사용하기 위함이다. 기존: MyViewController: UIViewController 커스텀: BaseViewController: UIViewController -> MyViewController: BaseViewController BaseViewController에 들어가야 할 내용 중복적으로 사용하게 되는 부분들을 주로 넣는데 가령, - 앱..

기타

Adjust 정리

Adjust는 모바일 앱 딥링킹을 위한 라이브러리. 모바일 앱 딩링킹은 사용자가 웹 페이지 또는 다른 앱에서 URL을 클릭할 시 앱을 실행하고 페이지를 여는 기술이다. 가령 음악 앱을 출시했을 경우, 웹 사이트에서 짧은 미리듣기를 제공한 후 해당 음악 앱으로 연결할 수 있다. 이처럼 사용자 경험을 원활하게 하고 전환율과 유지율을 크게 높일 수 있다. 또한 이런 딥링킹은 광고에서도 유용하다. 예를 들어 웹 사이트에서 상품을 미리 보여주고, 사람들이 웹 사이트가 아닌 앱에서 이 내용을 보기를 원할 때 딥링크가 유용한 수단이 된다. 앱이 이미 설치된 경우 사용자가 링크를 클릭하면 앱이 열리고 제품이 바로 표시되도록 할 수 있다. 딥링크의 주요 목적은 사용자를 유지하는 것에 있다. 궁극적으로 딥링킹은 앱 생태계..

iOS 개발/HIG

[HIG] Human Interface Guide 정의

iOS 신입 개발자로써 공부해두면 좋을 게 무엇이 있을까 고민하다가 HIG에 대해 자세히 공부한 시간은 없다는 것을 깨달아 남는 시간을 활용해 HIG를 정리하는 시간을 갖고자 했다. HIG란? Human Interface Guide의 약자로, 애플스러운 앱을 만들기 위한 디자인 가이드 라인 HIG가 필요한 이유 - 리젝 사유 대비 - 디자이너, 기획자와의 원활한 소통 앱 스토어에 2개의 서비스를 출시하면서 HIG를 따르지 않아 리젝이 된 경우도 있었고, 기획자 디자이너 분들이 설계한 화면을 보고 이 부분은 리젝 사유일텐데..? 이렇게 생각한 적이 있었기 때문에 내가 확실히 알아두어야 할 필요가 있다고 생각했다. HIG의 핵심 가치 1. 명확성(Clarity) - 글자는 어떠한 크기로 설정하던 알아보기 쉬..

bamtorii
bamtori