AI 요약
윈도우 개발 생태계를 오랫동안 경험해 온 저자는 최근 취미 프로젝트로 'Display Blackout'이라는 유틸리티 앱을 개발하며 현재의 네이티브 앱 개발 환경이 매우 혼란스럽다는 점을 발견했습니다. 이 앱은 3개 모니터 설정에서 게임 중 측면 모니터를 검게 가려 OLED 모니터의 픽셀을 끄고, 윈도우 재배치 문제를 해결하기 위해 고안되었습니다. 개발 과정에서 디스플레이 열거, 전역 단축키 인터셉트, 트레이 아이콘 표시 등 네이티브 API가 필수적이었으나, 저자는 이 과정에서 Win32 C API와 MFC, .NET 등 과거의 유산들이 복잡하게 얽혀 있는 실태를 목격했습니다. 이러한 기술적 부채와 일관성 없는 API 추상화는 윈도우 네이티브 앱 개발의 진입 장벽을 높이고 있습니다. 결과적으로 이러한 환경은 많은 개발자들이 성능상의 손해를 감수하고서라도 일렉트론과 같은 웹 기반 프레임워크로 향하게 만드는 결정적인 원인이 되고 있습니다.
핵심 인사이트
- 저자는 10세 때 Visual C++ 6로 입문하여 .NET 1.0 출시 당시 C#으로 앱을 재작성했던 경험이 있는 베테랑 윈도우 사용자임.
- 개발된 'Display Blackout' 앱은 3개 모니터(Three-monitor setup) 환경에서 모니터 전원을 끌 때 발생하는 윈도우 위치 이탈 문제를 해결하기 위한 목적을 가짐.
- 1990년대에 등장한 Win32 API는 30년이 지난 현재까지도 윈도우 네이티브 개발의 핵심이자 피할 수 없는 기초로 남아 있음.
주요 디테일
- 'Display Blackout'의 주요 기능적 요구사항: 디스플레이 경계값 열거, 테두리 없는 비활성 검은색 창 배치, 전역 키보드 단축키 가로채기, 설정 저장 및 트레이 아이콘 구현.
- OLED 모니터 사용자의 경우, 검은색 화면을 띄우는 것만으로도 픽셀이 완전히 꺼져 물리적 전원을 끄는 것과 동일한 효과를 볼 수 있음.
- 과거 마이크로소프트는 MFC(C++ 라이브러리)를 통해 Win32 C API를 클래스와 템플릿 기반의 객체 지향 방식으로 추상화하려 시도했음.
- 네이티브 개발의 난해함과 환경의 무질서함 때문에 현대의 개발자들은 생산성이 높은 일렉트론(Electron)을 선호하는 경향이 뚜렷함.
향후 전망
- 마이크로소프트가 네이티브 개발 환경의 파편화를 획기적으로 해결하지 못할 경우, 윈도우 전용 네이티브 앱의 입지는 더욱 좁아질 것으로 예상됨.
- 성능 최적화가 필수적인 특수 앱을 제외하고는 대다수의 윈도우용 소프트웨어가 웹 기술 기반의 크로스 플랫폼 프레임워크로 대체될 가능성이 큼.
출처:hackernews
