본문으로 건너뛰기
피드

윈도우 네이티브 앱 개발이 이렇게 개판인 줄 몰랐음 (현직 개발자 회고)

frontend 약 6분

윈도우 개발 추억 있는 개발자가 소소한 유틸리티 앱 하나 만들려다 현실에 박살난 썰. Win32부터 WinUI 3까지 수십 년간 쌓인 레거시와 미완성 API들 때문에 결국 '그냥 Electron 쓰는 게 맞다'는 결론에 도달함. 마이크로소프트가 자기 플랫폼을 방치하는 수준이 ㄹㅇ 심각함.

  • 1

    WinUI 3까지 7세대 UI 프레임워크를 갈아치웠지만 기능 공백은 여전히 존재

  • 2

    최신 Windows 11에도 .NET 4.8.1만 내장 → 배포 경험이 최악

  • 3

    트레이 아이콘, 글로벌 단축키 등 기본 기능도 Win32 P/Invoke 직접 호출 필요

  • WinUI 3까지 이어지는 UI 프레임워크 역사: Win32 → MFC → WinForms → WPF → WinRT → UWP → WinUI 3, 매번 갈아엎는 거 반복
  • 최신 Windows 11에도 기본 탑재 .NET은 4.8.1인데 현재 버전은 10임 ㄷㄷ
  • 트레이 아이콘, 글로벌 단축키 등 기본 기능도 P/Invoke로 Win32 직접 호출해야 함
  • MSIX 코드 서명 인증서가 비거주자 기준 연 $200~300 ㅋㅋ 그냥 Apple보다 비쌈
  • 결론: "그냥 Electron/Tauri 써라, 웹스택이 훨씬 낫다"

개발자가 만든 앱: Display Blackout

저자는 3모니터 세팅에서 게임할 때 양쪽 모니터를 블랙아웃하는 유틸리티를 만들려 했음. OLED 모니터에 검은 오버레이를 씌우면 픽셀이 꺼져서 전원 차단이랑 사실상 동일한 효과. 간단해 보이는 기능인데 요구사항이:

  • 디스플레이 목록 및 영역 감지
  • 테두리/타이틀바 없는 투명 창 생성
  • 글로벌 키보드 단축키 인터셉트
  • 시작프로그램 등록
  • 설정 저장
  • 트레이 아이콘 + 메뉴

윈도우 앱 개발 역사 요약 (개판의 역사)

시대 프레임워크 특징
1990s Win32 C API 원조, 아직도 안 죽음
1990s MFC C++ 객체지향 래퍼
2002 WinForms (.NET 1.0) Win32 또 래핑
2006 WPF (.NET 3.0) XAML 도입, GPU 렌더링
2012 WinRT (Windows 8) 샌드박스 앱 시도, 새 API 세트
2015 UWP (Windows 10) 제한 일부 완화, 크로스디바이스
2021 WinUI 3 (Windows 11) 또 XAML 기반 새 컨트롤 라이브러리

매번 다시 짜는데 이전 것보다 기능이 빠져있음. 레전드 비효율.

실제로 뭐가 안 되냐

Windows App SDK / WinUI 3으로 할 수 있는 것과 없는 것:

  • ✅ 디스플레이 열거: 되는데 foreach가 아니라 for 루프 써야 함 ㅋㅋ. 변경 감지는 P/Invoke 필요
  • ⚠️ 테두리 없는 창: 대부분 가능하지만 non-activating(창 활성화 방지)은 P/Invoke 필요
  • ❌ 글로벌 키보드 단축키: 완전 불가, P/Invoke만 가능
  • ✅ 시작프로그램 등록: 됨
  • ✅ 설정 저장: 됨
  • 트레이 아이콘: 불가. P/Invoke 필요하고 메뉴 스타일도 패키지마다 달라서 통일 안 됨

배포도 개판

  • 프레임워크 의존 배포: 시스템 .NET이 4.8.1에 묶여 있어서 최신 앱 설치 시 사용자가 .NET 따로 다운로드해야 함 → UX 끔찍
  • .NET AOT: 런타임을 통째로 바이너리에 박아넣음 → 모니터 블랙아웃 앱이 9MB짜리가 됨 ㄷㄷ
  • MSIX 서명: 비미국 거주자 코드 서명 인증서 연 $200~300. Apple은 $99인데?
  • Microsoft Store 거절: "고유하고 지속적인 가치를 제공하지 않음"이라고 반려 ㅋㅋㅋ
  • Rust 바인딩도 시도했다가 포기함

CsWin32도 답없음

P/Invoke 고통을 줄여주려는 CsWin32 프로젝트도 문제 많음:

  • 구조체 안 문자열도 제대로 못 감쌈
  • 버전 1.0도 못 찍은 언더펀딩 프로젝트
  • C# 언어 자체가 Win32의 [optional, out] 파라미터 개념을 표현 못함 → 메서드를 두 버전씩 생성하는 웃긴 상황

C# 언어팀도 방치

WPF 출시(2006) 이후 20년이 지났는데 데이터 바인딩 보일러플레이트가 거의 그대로임. 프로퍼티마다 getter/setter 쌍 + 동일값 가드 + 이벤트 발화... JavaScript는 데코레이터/프록시로 해결했는데 C# 언어팀은 뭐 했냐는 소리.

결론: 그냥 Electron 써라

저자 최종 판단:

  • 마이크로소프트 자체가 VS Code, Outlook, 시작 메뉴까지 웹 기술로 만들고 있음
  • Tauri 쓰면 Chromium 번들 없이 시스템 웹뷰 사용 가능
  • 시스템 웹뷰는 4주마다 업데이트되는데 시스템 .NET은 4.8.1에 멈춰 있음 ㅋㅋㅋ
  • Avalonia, Uno Platform 같은 서드파티 프레임워크가 오히려 더 잘 관리됨
  • TypeScript/React/CSS가 C#/XAML보다 솔직히 나음

마이크로소프트가 자기 OS의 앱 플랫폼을 이렇게 방치하고 있으면 개발자들이 Electron으로 가는 거 당연한 수순임. 네이티브 앱 복고풍 감성은 이해하지만 현실은 그냥 웹스택이 맞다는 게 슬프면서도 공감 100%.

댓글

댓글

댓글을 불러오는 중...

frontend

번은 좋은데, 이제 앤트로픽 품에 있어서 불안하다는 얘기

글쓴이는 번이 빠르고 실용적인 자바스크립트 런타임이라는 점은 인정하지만, 앤트로픽 인수 이후 장기적인 방향을 신뢰하기 어려워졌다고 말한다. 특히 클로드 코드의 품질 저하, 과금 혼란, 서드파티 하네스 제한 사례를 보며 번도 같은 제품 운영 방식에 휘말릴 수 있다고 우려한다.

frontend

왜 터미널 UI가 다시 뜨고 있나

데스크톱 네이티브 UI 툴킷이 플랫폼마다 흔들리고, Electron 앱은 일관성과 키보드 워크플로를 놓치면서 개발자들이 다시 터미널 사용자 인터페이스(TUI)로 돌아가고 있다는 글이다. 저자는 Claude, Codex 같은 명령줄 도구의 성공을 단순한 복고가 아니라, 운영체제 UI 생태계가 제공하지 못한 빠르고 자동화 가능한 인터페이스에 대한 반응으로 본다.

frontend

애플워치 지도 UI 하나에 6년을 갈아 넣은 이야기

Pedometer++ 개발자가 애플워치용 지도 경험을 6년 동안 다듬어 온 과정을 풀어낸 글이다. 서버 렌더링 지도에서 시작해 SwiftUI 기반 커스텀 렌더링 엔진, 전용 베이스맵, Liquid Glass 대응, 최종 UI 구조까지 실제 제품 설계의 시행착오가 꽤 생생하게 담겨 있다.

frontend

애플, Studio Display XDR에 새 색상 기준 Apple CMF 2026 적용

애플이 새 Studio Display와 Studio Display XDR을 내놓으면서 Apple CMF 2026이라는 새 색상 매칭 함수 기준을 같이 공개했음. 단순히 애플식 독자 표준처럼 보이지만, 실제로는 CIE와 협력하고 측정 장비 업체들과도 통합을 추진하는 쪽에 가까움. 테스트 결과 일반 Studio Display는 준수한 P3·sRGB 정확도를 보였고, XDR은 2304개 로컬 디밍 존과 2000니트 HDR을 앞세웠지만 모드별 정확도 차이가 꽤 컸음.

frontend

Figma의 'Sketch 모멘트'가 온다 — Claude Design이 바꾸는 디자인 도구 지형

디자이너 Sam Henri Gold가 Claude Design을 체험한 뒤 디자인 도구의 source of truth가 다시 코드로 이동할 것이라고 주장했다. Figma의 폐쇄적 포맷은 LLM 학습 데이터에서 사실상 제외됐고, agentic 시대에는 HTML/JS 같은 모델이 잘 아는 매체에서 작업하는 Claude Design류가 우위를 가져간다는 예측이다.