# 애플 텍스트 에디터를 9년간 혼자 개발한 개발자

> Clean Markdown view of GeekNews topic #12707. Use the original source for factual precision when an external source URL is present.

## Metadata

- GeekNews HTML: [https://news.hada.io/topic?id=12707](https://news.hada.io/topic?id=12707)
- GeekNews Markdown: [https://news.hada.io/topic/12707.md](https://news.hada.io/topic/12707.md)
- Type: GN+
- Author: [neo](https://news.hada.io/@neo)
- Published: 2024-01-06T08:37:35+09:00
- Updated: 2024-01-06T08:37:35+09:00
- Original source: [papereditor.app](https://papereditor.app/dev)
- Points: 28
- Comments: 7

## Topic Body

### "Paper" 텍스트 편집기 솔로 개발자의 9년  
  
- 2015년, 일반적인 풀스택 웹 개발자로서 Apple 개발 세계와는 거리가 멀었음.  
- Mac을 사용하며 독립 개발자들의 앱에 매력을 느껴, 간단하고 우아한 Markdown 편집기인 iA Writer에 영감을 받아 비슷한 앱을 만들기로 결정함.  
- Mac용 네이티브 텍스트 편집기 개발을 위해 Xcode, AppKit, Objective-C 등 새로운 기술 스택 학습 시작.  
- 앱 이름을 *Paper*로 정하고, 극단적인 미니멀리즘을 추구하여 편집기를 단순한 직사각형으로 디자인함.  
- 2017년 Mac 앱 스토어에 Mac 앱 출시, 2019년에는 iOS 앱 출시.  
  
### 네이티브 앱을 선택한 이유  
  
- Electron 앱 대신 네이티브 앱을 선택한 이유는 최상의 사용자 경험 제공을 목표로 했기 때문.  
- 네이티브 앱은 가볍고 빠르며, 텍스트와 관련된 독특한 기능을 구현할 수 있는 더 많은 방법을 제공함.  
  
### Objective-C를 선택한 이유  
  
- 2015년 Swift가 초기 단계였을 때, Objective-C와 Swift로 각각 빈 Xcode 프로젝트를 컴파일하여 `.app` 패키지를 비교함.  
- Swift 앱은 Swift 런타임이 포함되어 약 5MB였고, Objective-C 앱은 매우 가벼운 100KB 정도였음.  
- 더 가벼운 배포 가능한 앱을 원했기 때문에 Objective-C를 선택함.  
  
### 서드파티 의존성  
  
- Paper는 서드파티 의존성이 없음.  
- 모든 것을 직접 구축하여 경쟁자들에게 약간의 우위를 점함.  
- 예를 들어, Paper의 Markdown 파싱 엔진은 맞춤형으로, 전통적인 Markdown 편집기보다 적은 Markdown 구문을 지원함.  
  
### 비전  
  
- Paper의 초기 비전은 iA Writer의 핵심 기능을 가지되, 더욱 우아하고 미니멀한 패키지로 만드는 것이었음.  
- 사용자의 주의를 산만하게 하는 요소를 최소화하여 집중력을 높이는 데 초점을 맞춤.  
- 시간이 지나면서 Paper가 미니멀리즘을 유지하면서도 점진적으로 기능을 추가하는 방식으로 시장에서의 위치를 찾아감.  
  
### 아키텍처  
  
- Paper의 코드는 두 가지 *범위*로 구성됨: **애플리케이션 범위**와 **문서 범위**.  
- 각 범위에 대해 *스토리보드*를 정의하여 뷰와 위젯을 설명하고 범위 내 *모듈*을 결합함.  
- 모듈은 앱 내 기능의 일부를 담당하는 Objective-C 클래스로, 기능을 특정 기능과 관련된 하나의 장소에 그룹화함.  
  
### 크로스플랫폼 코드  
  
- AppKit과 UIKit은 유사하면서도 많은 부분에서 다름.  
- 차이점을 해결하기 위해 Objective-C의 매크로와 카테고리 기능을 사용함.  
  
### 디버깅  
  
- Apple 프레임워크의 경우 코드 대신 문서를 읽어야 하며, 브레이크포인트를 사용하여 컴파일된 스택 트레이스를 분석함.  
  
### 유료 기능  
  
- 2015-17년에는 구독이 아직 널리 퍼지지 않았고, 앱 스토어에서는 일회성 결제가 일반적이었음.  
- 사용자 친화적인 방식으로 유료 기능을 제공하고자 하여, 기능적이 아닌 _화장적_ 업그레이드만 유료로 제공함.  
  
### 가격 책정  
  
- 처음에는 두 세트의 Pro 기능에 대해 각각 5달러의 일회성 결제로 시작함.  
- 현재는 월 10달러 또는 평생 100달러의 단일 세트로 가격을 책정함.  
- 가격 실험을 통해 사용자들이 알려지지 않은 개발자의 앱에 최대 100달러까지 지불할 의사가 있음을 발견함.  
  
### 까다로운 부분  
  
- 텍스트 편집기는 복잡하며, OS 업데이트마다 새로운 텍스트 삽입, 업데이트, 상호 작용 방법이 추가됨.  
  
### 기믹  
  
- Things 앱에서 영감을 받은 *창 크기 조절 바운스*와 같은 즐거운 기능을 추가함.  
  
### GN⁺의 의견:  
1. **혁신적인 접근**: 개발자는 네이티브 앱 개발에 대한 경험이 없음에도 불구하고, 사용자 경험을 최우선으로 고려하여 Paper를 개발했다는 점이 인상적임. 이는 소프트웨어 개발에서 사용자 중심의 설계가 얼마나 중요한지를 보여줌.  
2. **학습과 성장**: 새로운 기술 스택을 배우고 이를 통해 제품을 만들어낸 과정은 초급 소프트웨어 엔지니어에게도 영감을 줄 수 있음. 이는 지속적인 학습과 도전이 개발자로서 성장하는 데 필수적임을 강조함.  
3. **사용자 경험의 중요성**: Paper의 성공적인 요소 중 하나는 사용자 경험에 대한 세심한 주의와 미니멀리즘에 대한 집중임. 이는 사용자가 실제로 원하는 것을 이해하고 이를 제품에 반영하는 것이 얼마나 중요한지를 보여줌.

## Comments



### Comment 22047

- Author: woung717
- Created: 2024-01-06T23:02:47+09:00
- Points: 1

대부분의 애플 개발 문서들이 불친절해서 문서를 잘 뒤져봐야하긴하는데...또 정보가 부족하면 SDK 인터페이스를 뒤져야하는 상황이 많아서...다른의미로 존경스럽네요.

### Comment 22045

- Author: ndrgrd
- Created: 2024-01-06T17:02:35+09:00
- Points: 1

화장적 업그레이드가 뭔가 했는데 원문이 visual changes네요.  
화장적이다 라는 단어를 쓰나요? 저는 처음 봤어요.

### Comment 22095

- Author: geeker
- Created: 2024-01-08T17:23:01+09:00
- Points: 1
- Parent comment: 22045
- Depth: 1

neo 가 ai bot 이다보니 기계적인 번역이 됐나보네요ㅋㅋ

### Comment 22057

- Author: apkas
- Created: 2024-01-07T10:17:34+09:00
- Points: 1
- Parent comment: 22045
- Depth: 1

원문은 cosmetic upgrade네요

### Comment 22062

- Author: cosine20
- Created: 2024-01-08T09:02:59+09:00
- Points: 1
- Parent comment: 22057
- Depth: 2

그럼 미적 업그레이드 정도가 더 괜찮아보이는데...

### Comment 22041

- Author: ragingwind
- Created: 2024-01-06T11:44:29+09:00
- Points: 1

롤모델이 될말한 개발자네요

### Comment 22031

- Author: neo
- Created: 2024-01-06T08:37:35+09:00
- Points: 1

###### [Hacker News 의견](https://news.ycombinator.com/item?id=38866170) 
- "주변부의 세심한 부분들이야말로 마법과 같음"
  - 사용자들은 처음에는 앱의 세밀한 부분들을 눈치채지 못할 수 있지만, 시간이 지나면서 그러한 부분들을 발견하게 됨.
  - 이러한 세심한 추가 기능들이 사용자가 앱을 단순히 좋아하는 것에서 사랑하게 되는 요소로 작용함.
  - 개발자가 사용자를 이해하고 있으며, 제품이 잘 관리되고 있다는 느낌을 줌.
  - Procreate 앱을 예로 들며, 사용자 인터페이스(UI)를 간결하게 만들면서도 발견할 수 있는 숨겨진 기능들이 많음을 칭찬함.

- "iOS 앱 개발자로서 15년 동안의 경험을 바탕으로 한 훌륭한 글"
  - 네이티브 개발을 고수하고, 제3자 의존성을 배제하며, Objective-C를 사용한 결정들이 좋았음을 언급함.
  - Swift로 전환했지만, 때때로 Objective-C의 장점이 그리워짐.
  - 앱을 다운로드하여 사용해보고, 메뉴 바에 있는 작은 힌트들이 마음에 들었다고 함.

- "Apple 플랫폼에서의 저/무 의존성 개발 가능성"
  - AppKit/UIKit의 풍부함과 깊이 덕분에 제3자 요소 없이도 완성도 높은 앱을 실용적으로 만들 수 있음.
  - 다른 프레임워크들, 예를 들어 Qt와 비교해도 Apple의 프레임워크가 경쟁력이 있음을 언급함.

- "Swift의 발전과 플랫폼 내장 또는 바이너리 최적화에 대한 추측"
  - Swift 5부터 ABI(Application Binary Interface) 안정화가 이루어짐.
  - 2014년부터 Swift만 사용하기로 한 결정이 잘 작동하고 있음을 밝힘.
  - SwiftUI에 대해서는 아직 UIKit/AppKit를 대체할 만큼 발전해야 할 부분이 많다고 생각함.

- "의존성 선택에 대한 불신과 학습의 중요성"
  - 코드를 작성하기 전에 외부 패키지와 라이브러리를 추가하는 것에 대한 반감을 표현함.
  - Apple 생태계의 단점을 긍정적인 학습 경험으로 바꾼 글쓴이의 접근 방식을 높이 평가함.

- "AppKit과 Mac 개발에 대한 학습 자료와 추천 요청"
  - Mac 개발에 대한 정보를 찾는 데 어려움을 겪고 있음을 언급함.
  - Apple의 최신 문서가 부족하고, 오래된 문서도 Swift 업데이트가 되지 않아 Xcode 자동완성에 의존해야 하는 상황을 설명함.

- "세부 사항에 대한 주의와 장인정신에 대한 존경"
  - 글쓴이의 세심한 주의와 장인정신을 높이 평가하며, 글이 아름답고 영감을 준다고 칭찬함.

- "회전하여 실행 취소하는 제스처에 대한 흥미로운 언급"
  - 영화 "닥터 스트레인지"의 주인공이 시간을 되돌리고 앞으로 돌리는 장면을 연상시키는 제스처라고 언급함.

- "블로그와 앱의 미니멀리즘에 대한 칭찬"
  - 자신이 만든 앱을 사용하며 느끼는 기쁨을 표현하고, vim-motions이나 Neovim 사용 시 비슷한 감정을 느낀다고 함.

- "Apple 개발 생태계에서 SDK 코드에 대한 접근 부족에 대한 놀라움"
  - 어셈블리 코드를 직접 봐야 한다는 사실에 대해 의아함을 표현하며, 이에 대한 확인을 요청함.
