[6월 회고] 오래 고민한 흔적이 남는 앱을 만들고 싶다
·
경험
6월의 한 문장빠르게 만든 결과보다 오래 고민한 흔적을 남기고 싶다. 6월에는 예상하지 못했던 일도 있었고, 몇 주 동안 이어진 프로젝트를 마무리하기도 했다. 새로운 도전을 준비할 기회도 생겼다.서로 다른 사건들이었지만 돌아보니 하나의 생각으로 이어졌다. 나는 단순히 동작하는 코드를 작성하는 개발자가 아니라, 내가 작성한 코드를 내 언어로 설명할 수 있는 개발자가 되고 싶다. 그리고 언젠가는 개발자가 들인 시간과 애정이 자연스럽게 보이는 앱을 만들고 싶다.예상하지 못했던 사고6월에는 교통사고를 당했다.다행히 크게 다치지는 않았지만 병원에 가야 하는 날이 생겼고, 이전보다 신경 써야 할 것도 많아졌다. 자연스럽게 온전히 몰입할 수 있는 시간도 줄었다. 해야 할 일은 그대로인데 사용할 수 있는 시간과 집중력..
[Apple Developer Academy] Challenge3 회고
·
Apple Developer Academy
안녕하세요! 피피아노입니다 🎵 Apple Developer Academy의 Challenge3를 마쳤습니다.🎉이번 챌린지에서 저희 팀은 visionOS 기반 소방 안전 훈련 앱을 만들었습니다. 저희 앱은 Apple Vision Pro를 착용한 사용자가 실제 공간 위에 나타난 화재를 보고, 손 추적을 통해 소화기를 직접 조작하며 초기 진압을 훈련하는 앱입니다. 단순히 영상을 보거나 설명을 듣는 방식이 아니라, 실제 화재 상황에서 필요한 행동을 몸으로 경험해보는 것을 목표로 했습니다. 이번 글에서는 Challenge3에서 어떤 기준으로 주제를 선정했는지, 제가 맡은 소화기 진압 파트를 구현하면서 어떤 기술적 어려움을 겪었는지, 그리고 visionOS 개발을 통해 무엇을 배웠는지 정리해보려고 합니다.왜 v..
[Swift] 좋은 코드 만들기
·
Apple/Swift
안녕하세요! 피피아노입니다 🎵 오늘은 "좋은 코드"에 대해 이야기해보려고 합니다.개발을 하다 보면 한 번쯤 이런 생각을 하게 됩니다. 대체 좋은 코드가 뭘까요?동작만 잘하면 좋은 코드일까요?아니면 짧으면 좋은 코드일까요?아니면 디자인 패턴이 많이 들어가 있으면 좋은 코드일까요? 음... 사실 좋은 코드를 한 문장으로 정의하기는 어렵습니다. 그런데 반대로 좋지 않은 코드는 생각보다 금방 느껴집니다. 읽기 어렵고, 수정하기 무섭고, 기능 하나 추가했을 뿐인데 여기저기서 문제가 터지는 코드 말이죠.그래서 이번 글에서는 좋은 코드를 만들기 위한 기준을 크게 네 가지로 정리해보겠습니다.Naming상수화관심사의 분리View Component 분리가볍게 시작해보겠습니다.Naming코드를 작성할 때 가장 많이 하는 ..
[Swift] 왜 동시성 프로그래밍이 필요할까?
·
Apple/Swift
안녕하세요! 피피아노입니다 🎵 예전에 동시성에 대한 포스팅을 몇 번 한 적이 있는데 이 동시성이라는 개념이 왜 나왔고 왜 필요한지에 대한 설명이 부족한 것 같아서 이번 포스팅에서 조금 더 자세히 정리를 해보려고 합니다. iOS 앱을 개발하다 보면 네트워크 요청, 이미지 로딩, 파일 I/O처럼 시간이 걸리는 작업을 반드시 다루게 됩니다. 이 작업들을 잘못 처리하면 앱이 멈추거나 UI가 버벅이는 문제가 생깁니다. 동시성 프로그래밍은 바로 이 문제를 해결하기 위한 도구입니다. 1. 문제의 시작 — 메인 스레드iOS 앱은 시작될 때 메인 스레드(Main Thread) 하나가 생성됩니다. 이 스레드는 두 가지 역할을 동시에 담당합니다.UI 렌더링 (버튼, 텍스트, 애니메이션 등)사용자 이벤트 처리 (터치, 스크..
[Swift] ARC(Automatic Reference Counting)란 무엇인가
·
Apple/Swift
Swift로 개발하다 보면 [weak self]나 unowned를 코드 곳곳에서 마주치게 됩니다. 이것들이 왜 필요한지, 언제 써야 하는지 명확하게 이해하려면 ARC를 알아야 합니다. 이번 포스팅에서는 ARC가 무엇인지부터 실제 문제가 발생하는 상황과 해결 방법까지 정리를 해보려고 합니다. ARC란?ARC(Automatic Reference Counting)는 Swift가 메모리를 자동으로 관리하는 방식입니다. 클래스 인스턴스가 생성되면 Swift는 해당 인스턴스에 대한 참조 카운트(Reference Count)를 1로 설정합니다. 이후 어딘가에서 이 인스턴스를 참조할 때마다 카운트가 1씩 증가하고, 참조가 끊길 때마다 1씩 감소합니다. 카운트가 0이 되는 순간 메모리에서 해제됩니다. class Use..
[Swift] 왜 Class는 Initializer를 자동으로 만들어주지 않을까?
·
Apple/Swift
안녕하세요! 피피아노입니다 🎵 Swift로 개발을 하다보면 한 가지 의문이 생기게 됩니다. 구조체인 Struct는 프로퍼티만 선언하면 init이 자동으로 생기는데, Class는 왜 직접 써줘야 할까?struct Point { var x: Int var y: Int // init(x: Int, y: Int) 자동 생성 }class PointClass { var x: Int var y: Int // 자동 생성 안 됨 -> 직접 써야 함} Struct는 왜 자동 생성이 가능할까?Struct는 상속이 없습니다.(상속이 안 되는 건 아닌데 일단 그냥 구조체와 클래스 두가지로만 보면)컴파일러의 입장에서 보면, 지금 선언된 프로퍼티가 이 타입의 전부입니다. 그래서 모든 프로퍼티를 ..