분류 전체보기 170

RIBs

🚀 RIBs란 무엇인가?RIBs는 Uber가 만든 모바일 앱 아키텍처야.큰 규모의 앱과 많은 개발자가 함께 일할 때 생기는 문제들을 해결하기 위해 만들어졌어.iOS / Android 크로스 플랫폼 공통 패턴이고복잡한 상태 관리와 많은 기능을 모듈 단위로 깔끔하게 나누는 데 최적화되어 있어.🧠 왜 RIBs를 쓰는 걸까?RIBs는 다음과 같은 장점이 있어:✔ 플랫폼 간 협업 쉬움iOS와 Android 모두 같은 구조를 쓰니까 팀 간 코드 이해와 리뷰가 쉬움.✔ 글로벌 상태가 줄어듦앱 전체의 상태를 전역에서 관리하는 대신, 작은 기능 단위(RIB)별로 상태를 숨김 → 오류 예측이 쉬움.✔ 테스트하기 쉬움각 부분이 독립적으로 구성·분리돼 있어서 단위 테스트가 쉬움.✔ 개발 생산성 향상코드 생성 도구, 정적 ..

iOS/Swift 2025.12.11

VIPER

이제 MVVM 단계로 넘어가서, MVVM → VIPER로의 변화를 차근히 살펴보겠습니다.이번에는 “왜 MVVM에서 만족하지 못하고 VIPER로 갔는가?” 즉, MVVM의 한계 → VIPER의 필요성을 먼저 알아보겠습니다.🧩 2️⃣ MVVM → VIPER : “확장성과 협업의 한계”🧠 MVVM의 본질MVVM은 분명히 MVC보다 훨씬 나은 구조입니다.ViewController는 화면만 관리하고, ViewModel이 데이터 로직을 담당하니까요.하지만, 프로젝트가 커지고 팀 단위로 개발하기 시작하면곧 두 가지 큰 문제가 드러납니다.⚠️ 문제 1️⃣ — “ViewModel이 커진다 (Massive ViewModel)”MVVM은 Controller의 부담을 ViewModel로 옮겼을 뿐,ViewModel이 또다..

iOS/Swift 2025.12.06

MVVM (Model-View-ViewModel)

MVC에서 이어서 말하자면 MVC로 작성하다보면 ViewController가 굉장히 커집니다. 🔁 해결 방향 – ViewModel의 등장이 문제를 해결하기 위해 등장한 게 바로 MVVM입니다.핵심은 단순합니다:“Controller(UI)는 단순히 보여주기만 하고,모든 데이터/로직은 ViewModel이 관리하자.”즉, ViewController의 역할을 최대한 줄이자는 겁니다.🧠 MVVM 구조 핵심Model: 데이터View: UIViewModel: View가 표시할 데이터를 가공하고, 이벤트를 처리UI와 ViewModel은 바인딩(binding) 으로 연결됩니다.즉, ViewModel 값이 바뀌면 UI가 자동으로 업데이트됩니다. 구분MVCMVVM핵심 역할Controller가 모든 걸 담당ViewMode..

iOS/Swift 2025.12.05

MVC (Model - View - Controller)

기본적인 아키텍처 공부를 하기 위해서 처음부터 정리를 해보려고 합니다.MVC 개요MVC (Model - View - Controller) 는 iOS의 기본 아키텍처로, UIKit이 처음 등장할 때부터 존재하던 구조입니다.Model: 데이터, 비즈니스 로직 (예: User, Product)View: 화면 UI, UIKit View들 (UILabel, UIButton 등)Controller: View와 Model을 연결하는 다리 역할 (UIViewController)MVC의 장점간단하다. (학습 곡선 낮음)iOS 프레임워크 구조에 완벽히 녹아있다.소규모 앱에서는 빠르게 개발 가능하다. iOS UIkit을 사용해서 앱을 만들때 만들어지는 가장 기본적인 구조입니다. 문제는 모든 로직인 Controller에 모인..

iOS/Swift 2025.12.04

다시 정리하는 디자인 AI

한동안 회사일에 집중하느라 개인앱에 대해서는 신경쓰지 않고 지냈었습니다. 애플 제품들이 OS를 26으로 변경하면서 제 인텔맥도 이제는 지원이 끊어져서서 당근으로 m3 맥북에어를 구매했습니다. m6가 나올 때까지 기다릴까 하다가 구매 당시에는 m5에 대한 이야기도 안 나오는 상황이고 m6가 27년에 나올 수도 있다는 글까지 나오는 상황이어서 당근으로 얼른 구매했습니다. 매우 만족스런 거래를 했는데 구매 몇일 후에 m5 출시를 발표하더군요...그래도 사용할 때마다 잘 샀다는 생각이 듭니다.오랜만에 개인앱을 관리하기 위해 AI 디자인툴은 발전했을까 해서 둘러보았는데, 굉장히 큰 변화들이 있었습니다. 저는 creatie를 굉장히 좋게 보고 있었는데, 정작 creatie 회사는 서비스를 종료했더군요... 계속 검..

디자인/AI 2025.11.05

Let us: Hack 2025

찍먹톤 해커톤 후기7월에 참여했던 해커톤을 이제서야 정리합니다. 시간이 조금 지났지만, 그날의 긴장감과 집중했던 순간들은 아직도 기억에 남아 있습니다.첫 해커톤은 아니지만, 이전에는 부트캠프나 프로그램 속에서 자연스럽게 진행된 경우가 많았습니다.이번에는 스스로 해보고 싶다는 마음으로 참여했습니다.‘찍먹톤’이라는 이름처럼 당일치기로 진행되는 점도 마음에 들었습니다.하루 동안 몰입해서 개발하고, 저녁에는 집으로 돌아와 쉴 수 있다는 점이 좋았습니다.주제 선정이 해커톤은 WWDC에서 발표된 주제 중 하나를 골라 진행하는 방식이었습니다.새로운 기술을 직접 다뤄볼 수 있다는 점이 흥미로웠습니다.사전에 정해진 팀원들과 디스코드 화상회의를 통해 어떤 프로젝트를 할지 논의했습니다.결국 파운데이션 모델을 활용해 일기의 ..

Cursor Talk to Figma MCP 연결 문제 해결 가이드

문제 상황Cursor의 Tools & MCP 설정에서 TalkToFigma MCP 서버가 빨간 점(연결 실패) 상태로 표시되는 문제가 발생했습니다.증상Figma 플러그인과 WebSocket 서버(port 3055)는 정상 연결됨Cursor가 WebSocket 연결은 감지하지만 MCP 서버 자체는 시작되지 않음AI Agent에게 Figma 작업을 명령해도 실행되지 않음원인 분석1. WebSocket vs MCP 서버의 차이WebSocket 서버: Figma 플러그인 ↔ WebSocket 서버 간 통신 (정상 작동)MCP 서버: Cursor ↔ MCP 서버 간 통신 (연결 실패)이 두 개는 별개의 프로세스입니다.2. 실제 문제 원인mcp.json에서 다음과 같이 설정되어 있었습니다:{ "mcpServers..

디자인/AI 2025.10.07

정적 폰트 vs 가변 폰트

회사 일을 하면서 폰트를 적용하는 것을 하게 되었습니다. 단순히 앱에 넣어서 사용하는 것이 아니라 url에 있는 폰트 파일을 다운받아서 앱에 등록하고 적용하는 작업을 진행하였습니다.잘 마무리하였지만, 이에 관련된 정보를 다른 사람들에게 전파하는 과정에서 공부하게 된 것들을 정리해 보았습니다.🔤 정적 폰트란?정적 폰트는 각각의 스타일(예: Regular, Bold, Italic 등)이 별도의 파일로 제공되는 전통적인 폰트 형식입니다. 하나의 파일에서 하나의 굵기만 다룰 수 있습니다. 보통 이름이 폰트이름-굵기 형식으로 되어 있습니다.✅ 특징스타일별로 개별 파일 필요예: Roboto-Regular.ttf, Roboto-Bold.ttf, Roboto-Italic.ttf 등렌더링 속도가 빠름 (단순 구조)오래..

디자인/개념 2025.05.27

Android 개발자 모드 설정 방법

📱 Android 실기기 테스트를 위한 개발자 모드 설정 방법 (feat. Android Studio)안드로이드 앱을 개발하면서 가장 중요한 것 중 하나는 실제 기기에서 테스트하는 것입니다. 에뮬레이터만으로는 성능, 카메라, 센서 등 모든 기능을 테스트하기 어렵기 때문이죠.이번 글에서는 Android 스마트폰을 Android Studio와 연결해 실기기에서 직접 앱을 실행하는 방법을 단계별로 소개합니다.🛠️ 준비물Android 스마트폰 1대USB 케이블 (데이터 전송 가능한 케이블)Android Studio 설치된 컴퓨터스마트폰에 설정된 잠금해제 (PIN, 패턴 등)🔧 Step 1. 스마트폰에서 개발자 모드 활성화설정 앱 열기휴대전화 정보 또는 디바이스 정보로 이동**빌드 번호(Build numbe..

Android 2025.05.25

iOS에서 UI 변경이 바로 적용되지 않는 이유

🌀 RunLoop와 예약된 작업 처리iOS 앱을 개발하다 보면 setNeedsLayout()이나 setNeedsDisplay() 같은 메서드를 쓰는데,이걸 호출해도 화면이 즉시 바뀌지 않는 경험을 한 번쯤 있습니다..이 글에서는 왜 즉시 반영되지 않고 '예약'만 되는지, 그리고 그걸 언제 처리하는지즉, RunLoop가 어떤 역할을 하는지를 정리해보겠습니다.📌 예약만 하고 바로 안 되는 이유?UIKit은 성능을 위해 UI 변경 작업을 즉시 처리하지 않고,한 번에 모아서 처리하는 구조를 사용합니다.이때 사용하는 시스템이 바로 RunLoop입니다.🔁 RunLoop란?RunLoop는 iOS 앱이 실행되는 동안 돌아가는 이벤트 처리 루프입니다.앱은 항상 RunLoop를 돌며 "터치, 타이머, 네트워크, UI..

iOS/Swift 2025.05.09