다음을 통해 공유


Windows 애플리케이션 개발 - 모범 사례

이 문서의 모범 사례는 전 세계 약 15억 명의 다양한 PC 사용자에게 판매되고 고객을 만족시키는 훌륭한 Windows 앱을 빌드하는 데 도움이 됩니다. 이 문서는 다음 섹션으로 나뉩니다.

  1. 사용자 환경: 이 섹션의 지침은 앱의 모양, 느낌 및 사용성을 개선하는 데 도움이 됩니다.
  2. 성능 및 기본 사항: 이 섹션의 지침은 앱의 성능 및 리소스 사용률을 개선하는 데 도움이 됩니다.
  3. 운영 체제/하드웨어 최적화: 이 섹션의 지침은 다양한 하드웨어 구성의 패키징 및 배포를 최적화하는 데 도움이 됩니다.
  4. 애플리케이션 검색 및 관리: 이 섹션의 지침은 사용자가 앱을 더 쉽게 검색, 설치, 업데이트 및 제거할 수 있도록 도와줍니다.
  5. 접근성: 이 섹션의 지침은 쉽게 액세스 가능하고 포괄적인 환경을 구축하는 데 도움이 됩니다.
  6. 보안 및 개인 정보 보호: 이 섹션의 지침은 보안 위험을 완화하고 사용자의 개인 정보 보호 요구 사항을 충족하는 데 도움이 됩니다.

UX(사용자 환경)

Windows 11은 Windows의 모양, 느낌 및 사용성을 향상시키는 Windows 운영 체제의 시각적 진화를 보여줍니다. 저희 연구에 따르면, 사용자는 Windows 앱에 대한 기대치가 높습니다.

  • 사용자는 Windows 앱이 전체 입력 범위에서 작동할 것을 기대합니다.
  • 현재와 미래의 디바이스에서 전혀 이질감이 느껴지지 않는 디자인과 상호 작용 패턴을 기대합니다.
  • 현대식 창 워크플로 및 셸 통합 지점에 대한 지원을 기대합니다.

애플리케이션이 Windows 스타일 및 표준 Windows 동작을 준수하면 사용자가 상호 작용 패턴을 다시 학습할 필요가 없습니다. 그러면 사용자가 앱을 훨씬 쉽게 사용할 수 있습니다. 멋지게 보이는 앱은 좋은 첫인상을 만들 수 있지만, 그러면서도 사용하기 쉽고 사용자의 목표 달성에 도움이 되는 앱은 지속적으로 깊은 인상을 줄 것입니다.

Windows 11은 Windows 11 디자인 원칙을 기반으로 합니다. 앱을 빌드할 때 이러한 지침을 따르면 훌륭한 앱 환경에 대한 고객의 기대를 충족하는 데 도움이 됩니다. 최신 및 권장 Windows 애플리케이션 UI/UX 패턴을 Windows 애플리케이션에 통합하는 것을 고려할 때는 다음 5가지 영역에 집중하는 것이 좋습니다.

  • 레이아웃
  • UI 상호 작용
  • 비주얼 스타일
  • 창 동작
  • 셸 통합 지점

WinUI 3공통 컨트롤을 통해 이러한 많은 환경 및 스타일을 기본적으로 지원합니다. WinUI 3을 사용할 수 없는 경우 디자인 도구 키트WinUI 갤러리에 설명된 스타일을 에뮬레이트하는 것이 좋습니다.

레이아웃

Windows 애플리케이션은 사용자의 요구 사항에 맞는 다양한 구성에서 실행됩니다. 다양한 차원, 디바이스, 창 크기, DPI 설정 및 스케일링 설정에서 애플리케이션의 창 및/또는 페이지를 테스트합니다. 애플리케이션은 작은 크기로 크기를 줄여도 예상대로 작동해야 합니다.

DPI 인식

WinUI 애플리케이션은 실행 중인 각 디스플레이에 맞게 자동으로 스케일링됩니다. 다른 Windows 프로그래밍 기술(Win32, WinForms, WPF 등)은 모니터별 DPI 크기 조정을 자동으로 처리하지 않습니다. 이러한 기술에 대한 모니터별 DPI 조정을 지원하기 위한 추가 작업이 없으면 애플리케이션이 흐릿하거나 크기가 잘못 표시될 수 있습니다. 자세한 내용은 Windows에서 높은 DPI 데스크톱 응용 프로그램 개발을 참조하세요.

반응형 레이아웃

반응형 디자인 기술을 사용하여 다양한 창 크기에 맞게 앱 페이지를 최적화합니다. 이동 또는 스크롤에 대한 지침에 따라 앱 창이 아무리 작아져도 사용자가 항상 콘텐츠에 액세스할 수 있도록 합니다.

UI 상호 작용

Windows 사용자는 다양한 입력 디바이스 중에서 선택하여 애플리케이션과 상호 작용할 수 있으며 Windows에는 사용자가 사용하는 데 익숙한 특정 시스템 환경이 있습니다. 애플리케이션이 이러한 환경을 준수하는 경우 사용자는 애플리케이션을 안정적으로 사용할 수 있습니다. 앱이 이러한 규칙을 따르지 않으면 사용자가 혼란스럽거나 실망스러울 수 있습니다.

개체 내 명령

상황에 맞는 메뉴, 살짝 밀기 명령바로 가기 키와 같은 개체 내 명령을 사용합니다. Windows 11은 오른쪽 클릭 상황에 맞는 메뉴의 동작을 개선하므로 앱에서 상황에 맞는 메뉴를 생성하는 경우 최신 상황에 맞는 메뉴 통합 지침을 참조하세요. WinUI 텍스트 컨트롤은 잘라내기/복사/붙여넣기 명령을 자동으로 노출하지만 다른 컨트롤은 이러한 명령을 지원하기 위해 추가 작업이 필요할 수 있습니다.

텍스트 상호 작용

애플리케이션에 텍스트가 있을 때마다 사용자는 해당 텍스트를 선택하고 복사할 수 있기를 기대합니다. 텍스트를 편집할 수 있는 경우 잘라내어 붙여넣을 수도 있습니다. 사용자에게 일관된 바로 가기를 제공하여 작업을 보다 효율적으로 완료할 수 있습니다. 키보드, 마우스 또는 트랙 패드, 터치 및 펜을 사용하여 이러한 작업을 수행할 수 있는지 확인합니다.

이동 & 스크롤

애플리케이션의 UI가 스크롤할 필요가 없는 단일 페이지 안에 완전히 맞추는 것은 드문 일입니다. 몇 개의 UI 요소만 있는 경우에도 사용자는 앱 창의 크기를 자유롭게 조정하고 일부 UI 요소를 숨길 수 있습니다. 애플리케이션의 UI가 스크롤 및 이동(키보드, 마우스 또는 트랙 패드, 터치 및 펜 사용)을 제대로 지원하여 사용자가 표시되는 창 영역 밖으로 이동했을 수 있는 모든 UI 요소에 액세스할 수 있도록 해야 합니다.

비주얼 스타일

Windows 11 Windows 11 디자인 원칙인 간편함, 차분함, 개인화, 친숙함, 완전성 + 일관성을 기반으로 합니다. 이러한 원칙을 따르는 환경은 Windows에서 훌륭한 사용자 환경을 가져온다고 믿습니다.

재질: 아크릴 및 Mica

아크릴Mica는 대화형 UI 컨트롤에 고유한 "막힌" 시각적 스타일을 제공하는 시각적 재질입니다. 상황에 맞는 메뉴, 플라이아웃 그리고 빠르게 해제될 수 있는 기타 요소와 같은 일시적인 표면에 반투명 스타일을 적용하려면 아크릴을 사용합니다. 제목 표시줄과 같은 오래 지속되는 UI 표면에 미묘한 적응 색조를 추가하려면 Mica를 사용합니다.

아크릴 및 Mica 재질에 대한 자세한 내용은 Windows 11에서 앱을 잘 만들기 위해 할 수 있는 일에서 찾을 수 있습니다.

어두운 테마 및 밝은 테마

어두운 테마 및 밝은 테마는 사용자가 시각적 취향에 맞게 앱을 조정할 수 있는 방법을 제공합니다. Windows 11은 순수한 흰색과 검정색을 피하고 눈에 더 부드럽게 색조를 업데이트하여 더 기분이 좋아지는 색을 만듭니다. WinUI는 기본적으로 어두운 테마와 밝은 테마 간의 전환을 지원합니다(XAML 테마 리소스 참조). Win32 앱의 경우 Win32 앱에서 어둡고 밝은 테마 지원을 참조하세요. (Win32 앱의 제목 표시줄은 어두운 테마에 자동으로 적용되지 않습니다. 문서의 제목 표시줄 지침을 따라야 합니다).

새로 고친 UI 요소

Windows 11의 기하 도형은 최신 앱 환경을 지원하도록 제작되었습니다. 점진적으로 둥근 모퉁이, 중첩된 요소, 일관된 여백이 결합되어 목적과 사용 편의성의 통합을 강조하는 부드럽고, 차분하고, 접근 가능한 효과를 만듭니다.

시각적 개체 및 동작 변경 내용은 WinUI 3에 기본 제공됩니다. 이미 완료된 작업을 활용할 수 있는 WinUI 3을 사용합니다. WinUI 3을 사용할 수 없는 경우 디자인 도구 키트WinUI 갤러리에 설명된 스타일을 에뮬레이트하는 것이 좋습니다.

상황에 맞는 메뉴

상황에 맞는 메뉴는 사용자가 마우스 오른쪽 단추를 클릭하거나 &를 길게 탭하여 호출해 사용자가 상호 작용하는 컨트롤의 컨텍스트와 관련된 명령 메뉴를 표시하는 바로 가기 메뉴입니다. 사용자는 상황에 맞는 메뉴의 모양과 동작이 Windows 전체에서 일관될 것으로 예상합니다. 가능하면 플랫폼 제공 상황에 맞는 메뉴를 사용하여 시스템의 나머지 부분과 일관성을 유지합니다.

아이콘 체계 및 입력 체계

Windows 11은 업데이트된 아이콘("Segoe Fluent 아이콘"), 향상된 애니메이션 아이콘 지원 및 새 UI 글꼴("Segoe UI 변수")을 제공합니다. 가급적이면 이러한 새 아이콘과 글꼴을 사용하여 Windows 11에서 일관성을 유지하는 것이 좋습니다. 새로운 글꼴을 사용하면 형상이 훨씬 더 부드러워지고 텍스트를 훨씬 더 읽기 쉬워집니다.

Windows의 아이콘 체계 및 입력 체계에 대한 자세한 내용은 Windows 11에서 앱을 잘 만들기 위해 할 수 있는 일에서 찾을 수 있습니다.

창 동작 및 스타일

애플리케이션은 Windows에서 제공하는 프레임에서 실행되며, 사용자는 기본 제공 Windows 모양과 동작이 앱 창에서 일관될 것으로 예상합니다. 사용자가 Windows 11에서 예상한 대로 앱이 표시되고 작동하도록 여기에 나열된 기능을 지원하는 것이 좋습니다.

스냅 레이아웃

창 맞춤은 Windows 11 크게 향상되었으며, 스냅 레이아웃 메뉴는 사용자가 창 맞춤 기능을 검색하고 사용할 수 있도록 도와주는 새로운 기능입니다. 앱이 다양한 스냅 크기(예: 1/2, 1/3 및 1/4 화면)를 지원하도록 스냅 레이아웃 메뉴를 사용하여 다양한 스냅 레이아웃에서 앱을 테스트합니다.

앱의 스냅 레이아웃 메뉴가 기본적으로 표시되지 않는 경우 Windows 11에서 데스크톱 앱에 대한 스냅 레이아웃 지원을 참조하여 스냅 레이아웃 메뉴를 사용하도록 설정하는 단계를 알아보세요.

제목 표시줄 및 캡션 단추

제목 표시줄 및 캡션 단추(최소화, 최대화, 닫기)는 사용자가 Windows와 상호 작용하여 앱 창의 크기를 조정, 이동 및 닫는 방법입니다. 일관된 환경을 사용하면 사용자가 애플리케이션을 원활하게 사용하는 데 도움이 됩니다. Windows용 제목 표시줄 및 캡션 단추 디자인에 대해 알아보려면 Windows 앱 제목 표시줄을 참조하세요.

Windows 앱 SDK API를 사용하여 WinUI 3, .NET, WinForms 및 WPF 앱에서 제목 표시줄과 앱 콘텐츠를 통합할 수 있습니다.

둥근 모서리

대부분의 경우 Windows 11에서 앱 창은 기본적으로 둥근 모서리를 갖습니다. 앱 창을 사용자 지정했는데 앱 창의 모서리가 둥글지 않은 경우 Windows 11용 데스크톱 앱에서 둥근 모서리 적용을 참조하여 무엇을 할 수 있는지 확인하세요. 창 테두리와 그림자를 사용자 지정하는 것도 피해야 합니다. 시스템이 창 모서리를 둥글게 만들지 못하게 될 수 있습니다.

셸 통합 지점

Windows 셸 통합을 통해 사용자는 앱이 포그라운드 또는 화면에 표시되지 않는 경우에도 앱의 이점을 누릴 수 있습니다. 앱이 Windows와 잘 통합되면 다른 앱과 사용자 워크플로의 일부가 되며 원활한 환경을 만드는 데 도움이 됩니다.

토스트 알림

알림 메시지는 사용자 화면 하단과 알림 센터에 표시되는 Windows 알림입니다.

  • 알림은 개인 설정 가능하고, 실행 가능하고, 사용자에게 유용해야 합니다. 사용자에게 알리고 싶은 것이 아닌 사용자가 원하는 것을 제공해야 합니다.
  • 알림은 시끄럽지 않아야 합니다. 앱이 너무 자주 중단되면 사용자가 앱에 대한 이 중요한 통신 채널을 끄게 됩니다.
  • 사용자의 의도에 대응합니다. 알림을 선택하면 알림 컨텍스트에서 앱이 시작되어야 합니다. 이 지침의 유일한 예외는 사용자가 빠른 회신처럼 백그라운드 작업에 연결된 알림의 단추를 선택하는 경우입니다.
  • 일관적인 알림 센터 환경을 제공합니다. 이전 알림을 지워 알림 센터를 깔끔하게 유지합니다.

알림 메시지에 대한 자세한 내용은 알림 디자인 기본 사항을 참조하세요.

성능 & 기본 사항

Windows 사용자는 Windows 앱의 뛰어난 성능과 기본 사항을 기대합니다. 앱을 디자인하고 빌드할 때는 메모리 사용량, 전력 소비량, 응답성, 안정성 및 장기적 지속 가능성에 미치는 영향의 최적화를 염두에 두어야 합니다. 애플리케이션의 기본 사항 및 성능을 테스트하고 측정하는 시간을 할당하면 사용자가 최상의 환경을 갖출 수 있습니다.

이 섹션의 모범 사례를 따르면 이러한 기준에 대한 고객의 기대치를 충족하는 데 도움이 됩니다.

자세한 내용은 성능 및 기본 사항 개요를 참조하세요. 이 문서에서는 "애플리케이션 성능이란 무엇이며 왜 중요한가요?" 또는 "Windows 애플리케이션 성능을 측정하는 데 사용할 수 있는 도구는 무엇인가요?"와 같은 질문과 사례 연구, 관련 블로그, 지원 커뮤니티 및 성능 엔지니어링과 지속 가능성의 공통점(즉, 애플리케이션이 지구에 미치는 영향 축소)에 대한 링크를 다룹니다.

운영 체제/하드웨어 최적화

Windows 앱은 다양한 방법으로 빌드, 패키지 및 배달할 수 있습니다. 이 섹션의 모범 사례는 하드웨어 구성에서 애플리케이션의 이러한 측면을 최적화하는 데 도움이 됩니다.

MSIX 앱 연결 및 Azure 가상 데스크톱

앱이 엔터프라이즈 환경에서 가장 잘 실행되게 하려면 MSIX 앱 연결에 대한 지원을 추가합니다.

MSIX 앱 연결을 통해 물리적 머신과 가상 머신 모두에 MSIX 애플리케이션을 제공할 수 있습니다. 클라우드에서 실행되는 데스크톱 및 앱 가상화 서비스인 AVD(Azure Virtual Desktop)를 위해 특별히 설계되었습니다. MSIX 앱 연결을 AVD와 함께 사용하면 사용자의 로그인 시간을 개선하는 데 도움이 되며, 기업의 인프라 비용을 줄일 수 있습니다.

Arm 기반 Windows

Windows는 Arm 디바이스에서 실행할 수 있습니다. Arm PC는 배터리 수명 연장과 모바일 데이터 네트워크에 대한 통합 지원의 이점을 제공합니다. 이러한 PC는 뛰어난 애플리케이션 호환성을 제공하며 기존 x86x64 애플리케이션을 수정하지 않고 실행할 수 있습니다.

최상의 성능을 발휘하려면 완전한 Arm 버전을 빌드하거나 네이티브 성능의 이점을 대부분 활용하는 코드베이스 부분을 최적화하여 에너지 효율적인 Arm 프로세서 아키텍처를 앱에서 최대한 활용할 수 있도록 해야 합니다. 이러한 기술에 대한 자세한 내용은 Arm의 WindowsArm 기반 Windows 11 앱용 Arm64EC를 참조하세요.

푸시 알림

푸시 알림을 사용하면 성능 최적화 방식으로 클라우드 서비스에서 앱으로 정보를 보낼 수 있습니다. 푸시 알림에는 클라우드 서비스에서 보낸 원시 알림, 배지 알림 및 알림 메시지가 포함됩니다.

  • 사용자의 디바이스에서 성능을 최적화하기 위해 항상 실행 상태를 유지하는 대신 앱/클라이언트를 절전 모드에서 해제하는 푸시 알림을 사용합니다.
  • 알림 채널은 광고를 보내는 데 사용되지 않습니다.
  • retry-after 헤더를 준수합니다. 그러면 서비스가 보호되고 알림 배달 성공이 보장됩니다.
  • 시스템에서 만료/해지된 채널을 제거합니다. WNS(Windows 알림 서비스)는 만료/해지된 채널에 대한 요청을 처리하지 않습니다.
  • WNS에 대한 요청이 갑자기 대량으로 발생하지 않도록 합니다. 이로 인해 응답이 제한될 수 있습니다.
  • MS-CV 헤더를 활용합니다. 그러면 엔드투엔드 추적 및 진단에 도움이 됩니다.
  • 알림이 작동하지 않을 때를 대비한 백업 메커니즘을 구비합니다.
  • ANH(Azure Notification Hubs)를 사용합니다. ANH를 사용하면 대상 그룹 타겟팅, 알림 예약 및 알림 브로드캐스팅과 같은 참여 기능에 액세스할 수 있습니다. 현재 Windows 전용 앱 개발자인 경우 ANH를 사용하면 나중에 알림 인프라를 다른 플랫폼으로 쉽게 전환할 수 있습니다.

애플리케이션 검색 및 관리

안정적인 설치, 업데이트 및 제거 환경은 일관된 고품질 사용자 환경의 중요한 요소입니다. 다음 모범 사례는 사용자가 애플리케이션을 검색하고 관리할 때 좋은 인상을 남기는 데 도움이 됩니다.

애플리케이션 검색

  • Microsoft Store에 앱을 게시하면 사용자가 앱을 더 쉽게 검색할 수 있습니다.
  • 여러 채널(예: 웹 사이트 및 Microsoft Store)에 앱을 호스트하는 경우 애플리케이션이 모든 채널에서 일관된 애플리케이션 ID 및 업데이트 메커니즘을 가져야 합니다.
  • 사용자가 더 쉽게 검색할 수 있도록 Microsoft Store를 통해 앱을 배포합니다. Microsoft Store 앱은 Windows 패키지 관리자 WinGet을 통해 사용자가 사용할 수 있습니다. Microsoft Store에 앱을 게시하지 않더라도 WinGet 리포지토리를 통해 WinGet에서 앱을 쉽게 검색할 수 있습니다.

설치 및 제거

  • 사용자별 설치를 지원합니다. 그러면 사용자가 더 쉽게 앱을 설치하고 UAC 프롬프트를 방지할 수 있습니다.
  • 애플리케이션 설치 시 오류가 없고, 설치가 투명하며, 파일 관리가 쉬워야 합니다. 애플리케이션 설치 시 임시 파일이 남아 있으면 안 됩니다.
  • 가급적이면 앱을 설치할 때 상승된 권한을 요구하거나 운영 체제를 다시 부팅하지 않도록 합니다.
  • 자동 설치를 지원합니다. 이는 엔터프라이즈 환경에서 간편한 앱 관리를 위해 중요합니다.
  • 앱 -> 설치된 앱 목록에 앱이 나열되어 있는지 확인합니다.
  • MSIX를 사용하여 사용자가 원활한 설치, 업데이트 및 제거 환경을 경험할 수 있도록 하는 것이 좋습니다. MSIX는 앱 이진 파일 및 데이터를 자동으로 제거합니다. 패키지된 앱이 파일 및 레지스트리 항목을 처리하는 방법에 대한 자세한 내용은 Windows에서 패키지된 데스크톱 앱을 실행하는 방법 이해를 참조하세요.
  • 패키지되지 않은 앱의 경우 설정의 앱 -> 설치된 앱 목록을 통해 애플리케이션을 쉽게 제거할 수 있게 합니다. 애플리케이션이 제거되면 시작 메뉴 항목, 파일, 디렉터리, 레지스트리 항목 및 임시 파일도 제거되도록 합니다. 사용자가 애플리케이션을 제거할 때 사용자에게 데이터 보존 옵션을 제공하는 것이 좋습니다.
  • 제거하는 동안 앱이 모든 이진 파일 및 애플리케이션 데이터를 제거하도록 합니다. 사용자가 만든 콘텐츠는 앱이 제거된 후에도 사용자가 유지할 수 있는 Documents 같은 위치에 저장되어야 합니다.
  • 재부팅이 필요할 수 있는 시스템 이진 파일을 설치하거나 업데이트하지 마세요.
  • RestartManager와 통합하여 OS 업데이트 간에 상태를 저장하고 복원합니다.

업데이트

  • 사용자에게 편리한 경우 앱을 다시 시작할 수 있는 업데이트 메커니즘을 지원합니다. Windows 앱 SDK 다시 시작 API를 사용하여 WinUI 3 앱의 앱 동작을 관리하는 것이 좋습니다.
  • 업데이트 메커니즘이 업데이트해야 하는 변경된 필수 구성 요소만 다운로드하도록 합니다. 이렇게 하면 필요한 네트워크 대역폭을 최소화할 수 있습니다.
  • 앱을 업데이트하고 복구하는 방법을 제공합니다. 업데이트 복구를 자동으로 처리하는 MSIX를 사용하는 것이 좋습니다. 자세한 내용은 앱 자동 업데이트 및 복구를 참조하세요.
  • 푸시 알림 기반 업데이트를 사용하거나 앱 시작 시 또는 다시 시작할 때 사용 가능한 업데이트를 확인하는 것이 좋습니다.

추가 리소스

접근성

쉽게 액세스할 수 있는 Windows 애플리케이션은 장애(일시적 장애 및 영구적 장애 모두), 개인 기본 설정, 특정 작업 스타일 또는 상황에 따른 제약(예: 공유 작업 공간, 운전, 요리, 눈부심 등)이 있는 사람을 포함하여 최대한 많은 사람들에게 풍부하고 포용적인 환경을 지원합니다.

사실, 세계보건기구는 장애를 개인적 특징이 아니라 사람과 주변의 물리적/디지털 세계 사이의 어긋난 상호 작용으로 정의합니다.

사용자와 비즈니스 모두에 중요한 접근성

접근성은 책임

전 세계적으로 10억 명이 넘는 사람들이 어떤 형태로든 장애를 안고 있습니다. 그러나 경제와 사회 활동에 온전히 참여하는 데 필요한 보조 기술에 접근할 수 있는 사람은 10명 중 1명에 불과합니다. 일반적으로 장애가 있는 사람들의 실업률은 장애가 없는 사람들의 두 배입니다. 장애(상황적, 일시적 또는 영구적 장애 모두 포함)는 언제든지 누구에게나 영향을 줄 수 있습니다.

접근성은 기회

Microsoft 접근성 방식 데이터시트에 따르면, 직장에서 장애가 있는 사용자를 고용하고 지원하는 모범 사례를 수용하는 포용적 조직은 다른 조직에 비해 성과가 높고 우수한 인재를 유치 및 유지하는 데 더 뛰어납니다. 2020년 기준으로 전 세계 인력의 75%를 차지하는 밀레니엄 세대는 일반적으로 자신의 가치를 알아주는 고용주를 선택합니다. 이 목록의 맨 위에는 다양성과 포용성이 있습니다.

접근성 통합

Windows 앱에 접근성을 통합하면 사용자 참여를 최대화하고, 제품 만족도를 높이고, 제품 충성도를 높일 수 있습니다. 액세스 가능한 환경을 사전에 설계하고 구현하면 일반적으로 장기 개발 및 유지 관리 비용이 감소합니다.

액세스 가능한 Windows 앱을 빌드하는 방법에 대한 자세한 지침은 Windows 11 및 Windows 10의 접근성을 참조하세요.

접근성 테스트

Accessibility Insights는 개발자가 앱 및 서비스의 접근성을 테스트할 수 있는 강력한 도구 모음입니다. 다음은 접근성 테스트에 활용할 수 있는 도구입니다.

  1. Accessibility Insights for Windows의 Inspect. 접근성 트리를 검사하여 레이블의 힌트, 잘못된 역할 등과 같이 쉽게 달성할 수 있는 목표를 찾습니다.
  2. Accessibility Insights for Windows의 이벤트 모니터링 - Accessibility Insights. 이벤트 모니터링에 대한 자세한 내용은 UI 자동화 컨트롤 형식 지원을 참조하세요.
  3. PR 또는 CI/CD에서 Accessibility Insights 자동 검사를 실행합니다. 자세한 내용은 axe-pipelines-samples를 참조하세요.
  4. 발견하는 모든 버그를 수정합니다. 모든 버그는 접근성에 직접적인 영향을 줍니다.

보안 및 개인 정보

안전하지 않은 애플리케이션은 공격자가 악의적인 활동을 수행할 수 있는 진입점이 될 수 있습니다. 앱에 보안 버그가 없더라도 공격자는 앱을 사용하여 피싱 및 보안과 개인 정보 보호 경계를 위반하는 다른 형태의 소셜 엔지니어링을 통해 공격을 시작할 수 있습니다. 이 섹션의 모범 사례는 보안 및 사용자 개인 정보 보호와 관련된 위험을 완화하는 데 도움이 됩니다.

보안 지침

  • 개발의 보안 개발 수명 주기를 따릅니다.
    • 위협 모델링은 보안 결함을 방지하는 데 도움이 될 수 있습니다.
    • 보안 라이브러리, 언어 및 도구를 사용하면 구현 결함이 최소화됩니다.
    • 보안 기본값은 사용자 오류로 인한 보안 문제를 방지할 수 있습니다.
  • 앱을 설치할 때 관리 권한을 요구하지 마세요.
    • 앱에서 관리 설치와 사용자별 설치를 모두 지원하는 것이 가장 좋습니다.
    • 이렇게 하는 방법 중 하나는 MSIX 패키징을 사용하는 것입니다.
  • 앱을 실행할 때 관리 권한을 요구하지 마세요.
    • 관리 권한이 필요한 기능이 있는 경우 해당 기능을 자체 프로세스로 분리하여 공격 노출 영역을 줄이는 것이 좋습니다.
  • 특히 위험한 코드 경로(예: 신뢰할 수 없는 데이터 구문 분석)에는 메모리 안전이 보장된 언어(예: C#, JavaScript 또는 Rust)를 사용하는 것이 좋습니다.
  • 컴파일러 및 도구 집합에서 제공하는 모든 보안 완화 조치를 사용합니다(Visual C++은 Microsoft Visual C++의 보안 기능 참조).
  • 암호화 및 기타 보안에 민감한 코드에는 항상 본인이 선택한 언어 또는 프레임워크의 표준 라이브러리를 사용합니다. 자체적으로 빌드하려고 시도하지 마세요.
  • 설치 관리자뿐만 아니라 제거자(있는 경우)도 애플리케이션의 모든 구성 요소에 디지털 서명합니다. 또한 앱을 구성하는 모든 EXE, DLL 및 기타 실행 파일에 서명합니다.
    • 디지털 서명을 사용하면 사용자가 앱의 신뢰성을 확인하고 엔터프라이즈 관리자가 Windows Defender 애플리케이션 제어를 사용하여 디바이스를 보호할 수 있습니다.
    • 이렇게 하는 방법 중 하나는 MSIX 패키징을 사용하는 것입니다.
  • 모든 네트워크 통신이 SSL과 같은 보안 전송을 통해 이루어지도록 합니다.
  • 공격자가 강제로 작업을 수행하도록 강요한 경우에도 사용자가 실수로 유해한 작업을 수행하지 못하도록 보호하는 데 도움이 되는 가드레일 또는 기타 완화를 제공합니다.
    • 간단한 "정말 X하시겠습니까? 예/아니요" 대화 상자는 사용자가 "예"를 클릭하도록 조건화되었기 때문에 일반적으로 효과적이지 않습니다.

대부분의 최신 앱은 다양한 이유로 개인 데이터를 포함하여 많은 양의 데이터를 수집하고 사용합니다. 원격 분석, 제품 개선 및 수익 창출은 데이터를 사용하는 대표적인 이유이지만, 사용자와 규제 기관은 이러한 관행의 개인 정보 보호 영향에 점점 민감해지고 있습니다. 이들은 앱에서 수집하고 사용하는 데이터에 대한 투명성과 제어를 기대합니다. 다음 팁을 사용하여 사용자의 개인 정보 요구 사항을 충족할 수 있습니다.

개인 정보 지침

  • 앱에서 정확한 개인정보처리방침을 제공합니다. 일반 대상(사용자)을 위해 작성된 요약 문서와 긴 법률 정책(변호사용으로 작성된)을 모두 제공하는 것이 좋습니다.
  • 앱을 제공할 시장의 개인 정보 보호 규정을 숙지하고 앱이 정보의 공개, 사용 권한, 삭제 요청 등에 대한 요구 사항을 충족하거나 초과 충족하게 합니다.
  • 앱 환경을 완성하는 데 필요한 최소한의 개인 데이터만 수집합니다.
    • "만약을 대비하여" 데이터를 수집하지 마세요. 고객의 환경 개선이나 용이한 수익 창출처럼 데이터를 수집하는 유효한 이유가 있어야 합니다.
  • 개인 데이터를 수집하고 저장하기 전에 항상 사용자의 동의를 얻고 나중에 결정을 되돌릴 수 있는 쉬운 방법을 사용자에게 제공합니다. 동의 대화 상자에서 "예" 단추를 "아니요" 단추보다 크거나 더 두드러지게 만드는 것과 같은 "다크 패턴"을 사용하지 마세요.
    • 적용되는 규정을 조사하여 지정된 종류의 데이터에 필요한 공개 및 동의를 확인합니다. 예를 들어 일부 지역에서는 개발자가 저장한 사용자 데이터를 사용자가 보고, 변경하고, 삭제할 수 있습니다.
  • 네트워크를 통해 데이터를 전송해야 하는 경우 항상 보안 연결(예: TLS를 통해)을 사용합니다.
  • 중앙 집중식 위치(예: 웹 사이트)에 개인 데이터를 저장하지 마세요. 개인 데이터를 저장해야 하는 경우 저장하는 데이터의 양을 최소화하고, 꼭 필요한 기간 동안만 저장하고, 안전하게 암호화되도록 합니다.
  • 사용하는 타사 라이브러리 또는 SDK에도 적절한 개인정보처리방침이 있는지 확인합니다. 이는 SDK를 보급하는 것에만 국한되지 않습니다. 인터넷에 연결하는 모든 라이브러리는 앱 사용자의 개인 정보에 영향을 미칠 수 있습니다.