1년 4개월차 iOS '주니어'개발자입니다.지극히 개인적인 생각을 담고 있습니다.채용공고의 기술스택을 읽다보면, 같은 iOS앱을 개발하더라도 이렇게 서로 다른 기술들을 사용하고 있구나 라고 생각하게 됩니다. 1. 우리회사 프로젝트는 object-c 도 많이 사용하고 있어요.글을 쓰는 현재 2024년10월 기준 듣는 순간 엥? 하게 만든다.하지만 이전부터 시작된 프로젝트의 경우, 스위프트로 마이그레이션 하는 기간을 회사 사정에 의해 할당 받지 못한 경우일 수 있다.실제 지인의 회사에서 50%정도가 object-c로 구성되어 있었다.그렇기에 비지니스적으로 수정이 있지 않은 이상, 해당 코드는 별도의 수정없이 유지되고 있다.실제 시니어들의 이야기를 들어본다면) 잘 돌아가는 기능인데 굳이 손대서 모험하기 싫은거..
나는 회사에서 실수를 많이 하는 개발자이다.무슨 실수를 많이 하냐면, 기능적이 QA도 다른 팀원에 비해 2개정도 더 나오며, 커밋전 주석과 사용하지 않는 코드 삭제를 많이 잊어버린다.물론 처음부터 있던 실수였지만 요즘 부쩍 늘었다. 정말 너무 촉박한 일정에 급한 마음으로 개발하다 보니 빨리빨리! 때문에 그렇게 되버렸다.기존 코드파악은 하지 않고, 그 위에 "대충 빠르게, 대응되도록" 이란 생각으로 작업을 했기 때문이다.급하게 시작하는 개발에서 설계는 제대로 이루어질 리 없고, 그렇다보면 당연 부딪히는 빈도가 많아진다.특히 마음이 급해지면 정말 말도 안되게 효율이 떨어진다. PR에서 팀원들은 실수를 짚어주기 되었고, 건설적인 개발 방향지시는 점점 줄어들게 되었다.물론 PR을 하는 이유는 여러가지이고, 이러..
입사 후 지금까지의 개발 타임라인 별 프로젝트 후기를 작성하는 글입니다.포토위젯은 2주에 한번 빌드하고 있습니다. 1. 설정화면 리펙토링.기간은 약 1달이였습니다.처음 SwiftUI와 TCA를 사용하며 적응하는 기간이였습니다.사실 별 건 없었고, OldMySettingViewController를 SettingView로 리펙토링하는 작업이였습니다.너무 어려웠고, TCA의 화면전환 방식도 머리속에 들어오지 않아 정말 간단한 작업인데도 꽤 오랫동안 작업하였습니다.해당 기술들을 적용시켜 개발하는 것은 거의 iOS개발을 처음하는 듯 한 느낌이였습니다... 2. 포토위젯의 메인화면 투데이 페이지 개발.기간은 3주였습니다. iOS - 1인 처음으로 SwiftUI를 제대로 사용하고, 많이 공부한 프로젝트 입니다.그림자..
2023.06.19 ~ 포토위젯에서 iOS개발자 1년차를 맞이하였다.오랜만에 회고록을 남겨보려 한다. 포토위젯에서 작업한 프로젝트들을 기준으로 정리해보려 한다.포토위젯에 입사 후 가장 어려웠던 것은 사실상 처음 다뤄보는 기술들에 적응하기 였다.SwiftUI와 TCA, 이 둘은 그동안 익숙해져 있던 UIKit과 MVVM방식과 많이 차이가 있었다고 느꼈다.SwiftUI관계를 맺어 조건을 주는 오토레이아웃 방식이 아닌, 이 위치에는 이 뷰가 들어갈거야! 그 다음 이 위치에선 이 뷰가 들어갈거야! 라고 선언하는 듯 한 느낌이 들었다.그리고 문법이 Swift가 맞나..? 싶을 정도로 간결했다. (자세히 이해하려 들며 읽어보면 역시 스위프트이긴 하다.) - UIKit과의 차이점SwiftUI는 익숙해지면 생산성은 ..
22년 코드스쿼드를 수료하고, 여러회사의 채용과제를 하였습니다. 과제가 끝나면 "회사에서 내주는 채용과제 안에서 내가 어떤것을 보여주길 원할까?"는 생각으로 과제를 복기하였습니다. 채용과제는 얼마나 비용을 절약하며 만들 수 있나?를 확인하는 시험이라 생각하기에 이를 예를 들어보겠습니다. 성능적으로 빠르다 (효율적이다)는 비용을 절약하는 앱이 충족하는 조건들 중 하나라고 생각합니다. ( 성능이 전부가 아님. ) - 얼마나 빠르고 효율적으로 개발할 수 있을까? - 얼마만큼 읽기 쉽게 개발할 수 있을까? - 부가적인 것들 ( 추가구현 + 테스트 ) or 사용 기술스택(채점비율이 높을 수 있음) HIG, 인터넷 속도, 에러처리 등 보통 채용과제에서 무한스크롤을 보여주는 이미지Cell을 구현해야 하는 경우가 많습..
앱개발에 있어 화면전환, 관리는 매우 중요합니다. 최근 공부한 기술 NavigationTree와 NavigationStack에 관한 정리글입니다. 1. Tree구조 트리구조입니다. 자료구조 트리와 같은 모양입니다. 3번의 화면이 사용자에게 노출되려면, 1번 화면이 먼저 노출되어야 합니다. 또한 5번 화면이 노출되려면 3번화면이 먼저 노출되어야 합니다. 어떠한 화면이 노출되기 전, 선행되어 노출되어야 하는 화면을 강제할 수 있는 장점이 있습니다. 하지만 독립적으로 7번화면만 보여주고 싶다!는 의도라면 트리구조와는 어울리지 않을 수 있습니다. - (1, 4 화면이 강제적으로 표출이 되어야 하기 때문) 해당 구조는 다음과 같은 딥링크에서 유용하게 사용할 수 있습니다. 예) 인스타그램 - 특정 게시글의 새로운 ..
모바일 개발팀이 없는 회사이며 백, 프론트 개발자들로만 이뤄진 개발팀에 합류하였다. 그간 열심히 하지 않은 죄를 달게 받을 때가 온 것이다. 면접때 질문은 클린코드와 CS지식이 전부였고 구현해야 할 기능들을 설명해주고 할 수 있냐 물어봤다. 질문은 모두 대답하고 할 수 있다 말하였다. 시리즈A투자도 받았으며 서비스들도 이미 매출이 많이 나오고 있는 회사였다. 괜찮을 거라 생각하고 입사하기로 하였다. 신입 iOS 개발자 3주차가 지났다.. 사실 배울 게 많을까? 라는 생각을 많이 하고 들어갔는데.. 역시 배운거 엄청 많다. 혼자 공부했으면 평생 공부 못했을 것들 수두룩 빽빽이다. 기억에 남는 것들이 몇가지 있다.. 1. 배포 자동화. (CI/CD다.) 프론트, 백이 구축해둔 라인을 그대로 따라가라 했다. ..
Publish, Behavior, Replay를 면접 질문으로 받았었는데,,.. 어버버 했던 기억이 트라우마가 되어 개념을 공부하고 직접 구현해보았습니다. 1. Publish 구독 이전의 이벤트는 모두 무시되며 구독 이후 이벤트만 발행한다. 2. Behavior 구독 시 구독 이전 가장 최근에 이벤트를 발행한다. 만약 구독 이전에 이벤트가 없었다면, 생성 시 받았던 초기값을 발행한다. 3. Replay 생성 시 BufferSize를 입력받고 구독 이전, BufferSize만큼의 이벤트를 받아둔 후 구독 시 해당 이벤트들을 발행한다. https://gist.github.com/rising-jun/0addc43aa0d402c587a13c91b714365a 공부하면서 느끼지만 ReactiveX에서 만들어준 구..
Moya를 사용하였습니다. 이유는 URLProtocol을 사용하지 않고 응답으로 Mock데이터를 받고 싶었습니다. 목적에 맞게 SampleData를 사용하여 MockData를 응답으로 받는 serviceStub를 구현하여 테스트하였습니다. 또 하나의 장점은 BaseAPI를 제공하였기에, URLRequest를 매우 편한 방법으로 사용하고, 재활용할 수 있었습니다. 얼마전 Alamofire내부 코드를 읽어보았습니다. - 올해 초 부트캠프를 하며 다른 조원의 PR을 보고 의구심을 갖게 되었습니다. '가장 네트워크쪽에 있을 Alamofire를 요청하는 부분이 View를 바로 설정할 수 있도록 응답이 main에서 실행된다..? 그럴리가 없는데..' 분명 이유가 있을것이다!! 내부의 코드를 읽고 주석을 읽어보니 경..
Alamofire는 URLSession 기반의 네트워크 통신 라이브러리입니다. Alamofire를 사용하는 이유는 코드의 가독성과 사용성입니다. URLSession 기반 라이브러리 답게, request뿐 아니라 download, upload 등의 기능을 모두 사용할 수 있습니다. 일단.. 네트워크통신을 해보겠습니다..!! 간단히 이미지만 가져오는 로직을 구현하려 하는데.. 엥? url하나만 넣었는데 알겠다고.. 잘 가져오는데 문제는! 네트워크작업인데 메인 쓰레드에서 하고 있다는 것..? 왜지... URLSession에서는 자동으로 백그라운드 쓰레드가 실행하도록 하는데.. Alamofire코드를 살펴보겠습니다~ 1. AF ? 먼저 사용하는 방식에서도 알 수 있듯 AF는 싱글톤입니다. Public let A..