UWP(유니버설 Windows 플랫폼) 앱이란?What's a Universal Windows Platform (UWP) app?

유니버설 Windows 플랫폼 앱은 다양한 디바이스에서 실행되며, 적응형 사용자 인터페이스, 자연스러운 사용자 입력, 하나의 Store, 파트너 센터, 다양한 클라우드 서비스를 지원합니다.

UWP 앱은 다음과 같습니다.A UWP app is:

  • 보안: UWP 앱은 액세스할 디바이스 리소스와 데이터를 선언합니다.Secure: UWP apps declare which device resources and data they access. 사용자는 이러한 액세스에 권한을 부여해야 합니다.The user must authorize that access.
  • Windows 10을 실행하는 모든 디바이스에서 일반적인 API를 사용할 수 있습니다.Able to use a common API on all devices that run Windows 10.
  • 디바이스 특정 기능을 사용하고 다른 디바이스 화면 크기, 해상도 및 DPI에 맞춰 UI를 조정할 수 있습니다.Able to use device specific capabilities and adapt the UI to different device screen sizes, resolutions, and DPI.
  • Windows 10에서 실행되는 모든 디바이스(또는 사용자가 지정하는 항목만)의 Microsoft Store에서 사용할 수 있습니다.Available from the Microsoft Store on all devices (or only those that you specify) that run on Windows 10. Microsoft Store는 앱에서 소득을 올릴 수 있는 다양한 방법을 제공합니다.The Microsoft Store provides multiple ways to make money on your app.
  • 시스템에 위험이 되거나 "시스템 rot"이 발생할 위험 없이 설치 및 제거를 수행할 수 있습니다.Able to be installed and uninstalled without risk to the machine or incurring "machine rot".
  • 참여: 라이브 타일, 푸시 알림, Windows Timeline과 Cortana의 "중단한 위치부터 다시 시작" 기능과 상호 작용하는 사용자 활동을 활용하여 사용자의 참여를 이끌어냅니다.Engaging: use live tiles, push notifications, and user activities that interact with Windows Timeline and Cortana's Pick Up Where I Left Off, to engage users.
  • C#, C++, Visual Basic 및 Javascript에서 프로그래밍이 가능합니다.Programmable in C#, C++, Visual Basic, and Javascript. UI에서 XAML, HTML 또는 DirectX를 사용합니다.For UI, use XAML, HTML, or DirectX.

이러한 내용을 좀 더 자세히 살펴보겠습니다.Let's look at these in more detail.

보안Secure

UWP 앱은 마이크, 위치, 웹캠, USB 디바이스, 파일 및 등에 대한 액세스와 같이 필요한 디바이스의 기능을 매니페스트에 선언합니다.UWP apps declare in their manifest the device capabilities they need such as access to the microphone, location, Webcam, USB devices, files, and so on. 사용자가 이러한 액세스를 승인하고 인증해야만 앱에 이 기능에 대한 사용 권한이 부여됩니다.The user must acknowledge and authorize that access before the app is granted the capability.

모든 디바이스에서 공통되는 API 화면A common API surface across all devices

Windows 10에는 Windows 10을 실행하는 모든 디바이스에 공통 앱 플랫폼을 제공하는 UWP(유니버설 Windows 플랫폼)가 도입되었습니다.Windows 10 introduces the Universal Windows Platform (UWP), which provides a common app platform on every device that runs Windows 10. UWP 핵심 API는 모든 Windows 디바이스에서 같습니다.The UWP core APIs are the same on all Windows devices. 앱이 핵심 API만 사용하는 경우에는 데스크톱 PC, Xbox 또는 혼합 현실 헤드셋 등, 다양한 대상의 Windows 10 디바이스에서 실행됩니다.If your app only uses the core APIs, it will run on any Windows 10 device no matter whether you are targeting a desktop PC, Xbox, Mixed-reality headset, and so on.

C++ /WinRT 또는 C++ /CX로 작성된 UWP 앱은 UWP의 일부인 Win32 API에 액세스할 수 있습니다.A UWP app written in C++ /WinRT or C++ /CX has access to the Win32 APIs that are part of the UWP. 이러한 Win32 API는 모든 Windows 10 디바이스에서 구현됩니다.These Win32 APIs are implemented by all Windows 10 devices.

확장 SDK는 특정 디바이스 유형의 고유한 기능을 노출Extension SDKs expose the unique capabilities of specific device types

유니버설 API를 대상으로 하는 경우, Windows 10을 실행하는 모든 디바이스에서 앱을 실행할 수 있습니다.If you target the universal APIs, your app can run on all devices that run Windows 10. 그러나 UWP 앱에서 디바이스 고유의 API를 활용하고 싶은 경우에는 그렇게 할 수 있습니다.But if you want your UWP app to take advantage of device specific APIs, you can.

확장 SDK는 서로 다른 디바이스에 특화된 API를 호출할 수 있도록 해줍니다.Extension SDKs let you call specialized APIs for different devices. 예를 들어, UWP 앱이 IoT 디바이스를 대상으로 하는 경우에는 IoT 디바이스 고유의 기능을 대상으로 삼도록 IoT 확장 SDK를 프로젝트에 추가할 수 있습니다.For example, if your UWP app targets an IoT device, you can add the IoT extension SDK to your project to target features specific to IoT devices. 확장 SDK를 추가하는 자세한 방법은 디바이스 제품군 개요확장 SDK 섹션을 참조하세요.For more information about adding extension SDKs, see the Extension SDKs section in Device families overview.

특정 유형의 디바이스에서만 실행되고 Microsoft Store에서의 배포는 해당 유형의 디바이스로만 제한되도록 앱을 작성할 수 있습니다.You can write your app so that you expect it to run only on a particular type of device, and then limit its distribution from the Microsoft Store to just that type of device. 또는 실행 시 API가 있는지 조건부 테스트를 실시하고 이에 따라 동작을 조정할 수 있습니다.Or, you can conditionally test for the presence of an API at runtime and adapt your app's behavior accordingly. 자세한 내용은 디바이스 제품군 개요코드 작성 섹션을 참조하세요.For more information, see the Writing Code section in Device families overview.

다음 동영상은 디바이스 제품군과 적응형 코딩에 대해 간략하게 설명합니다.The following video provides a brief overview of device families and adaptive coding:

적응형 컨트롤 및 입력Adaptive controls and input

UI 요소는 레이아웃과 배율을 조정하여 앱이 실행 중인 화면의 크기와 DPI에 응답합니다.UI elements respond to the size and DPI of the screen the app is running on by adjusting their layout and scale. UWP 앱은 키보드, 마우스, 터치, 펜 및 Xbox One 컨트롤러 같이 여러 유형의 입력에서 원활하게 작동합니다.UWP apps work well with multiple types of input such as keyboard, mouse, touch, pen, and Xbox One controllers. 특정 화면 크기나 디바이스로 UI를 추가적으로 사용자 지정해야 하는 경우에는 앱이 실행되는 다양한 디바이스 및 폼 팩터에 맞게 UI를 디자인할 수 있는 데 새 레이아웃 패널 및 도구를 사용할 수 있습니다.If you need to further tailor your UI to a specific screen size or device, new layout panels and tooling help you design UI that can adapt to the different devices and form factors that your app may run on.

Windows 기반 장치

Windows에서는 다음과 같은 기능으로 UI를 여러 장치에 맞게 조정하도록 도와줍니다.Windows helps you target your UI to multiple devices with the following features:

  • 유니버설 컨트롤 및 레이아웃 패널을 사용하면 디바이스의 화면 해상도에 맞게 UI를 최적화할 수 있습니다.Universal controls and layout panels help you to optimize your UI for the screen resolution of the device. 예를 들어, 단추나 슬라이드 같은 컨트롤은 디바이스의 화면 크기와 DPI 밀도에 자동으로 맞춰집니다.For example, controls such as buttons and sliders automatically adapt to device screen size and DPI density. 레이아웃 패널에서는 화면 크기에 따라 콘텐츠 레이아웃을 편리하게 조정할 수 있습니다.Layout panels help adjust the layout of content based on the size of the screen. 적응형 크기 조정은 디바이스 간의 해상도 및 DPI 차이에 맞게 조정됩니다.Adaptive scaling adjusts to resolution and DPI differences across devices.
  • 일반적인 입력 처리는 터치, 펜, 마우스, 키보드 또는 Microsoft Xbox 컨트롤러와 같은 컨트롤러를 통해 입력을 받을 수 있도록 해줍니다.Common input handling allows you to receive input through touch, a pen, a mouse, a keyboard, or a controller such as a Microsoft Xbox controller.
  • 다양한 화면 해상도에 맞게 조정이 가능하도록 UI를 디자인할 수 있는 유용한 도구입니다.Tooling that helps you to design UI that can adapt to different screen resolutions.

앱 UI의 일부 측면은 장치 간에 자동으로 적응합니다.Some aspects of your app's UI will automatically adapt across devices. 그러나 앱의 사용자 환경은 앱이 실행되는 장치에 따라 수동으로 적응해야 할 수도 있습니다.Your app's user-experience design, however, may need to adapt depending on the device the app is running on. 예를 들어 사진 앱은 소형 핸드헬드 디바이스에서 실행될 때 한손으로 사용하기에 적합하도록 UI를 조정할 수 있습니다.For example, a photo app could adapt its UI when running on a small, handheld device to ensure that usage is ideal for single-handed use. 사진 앱을 데스크톱 컴퓨터에서 실행할 때는 추가 화면 공간을 활용하도록 UI를 조정해야 합니다.When a photo app is running on a desktop computer, the UI should adapt to take advantage of the additional screen space.

모든 디바이스를 위한 하나의 StoreThere's one store for all devices

통합 앱 Store에서는 PC, 태블릿, Xbox, HoloLens, Surface Hub, IoT(사물 인터넷) 같은 Windows 10 디바이스에서 앱을 사용할 수 있습니다.A unified app store makes your app available on Windows 10 devices such as PC, tablet, Xbox, HoloLens, Surface Hub, and Internet of Things (IoT) devices. 앱을 Store에 제출하고 모든 유형의 디바이스에서, 또는 선택한 디바이스에서 이를 사용하도록 할 수 있습니다.You can submit your app to the store and make it available to all types of devices, or only those you choose. 한 곳에서 모든 Windows 장치용 앱을 제출하고 관리합니다.You submit and manage all your apps for Windows devices in one place. UWP 기능으로 현대화하고 Microsoft Store에서 판매하고 싶은 C++ 데스크톱 앱이 있나요?Have a C++ desktop app that you want to modernize with UWP features and sell in the Microsoft store? 그것도 가능합니다.That's okay, too.

사용자에 대한 이해를 높이고 앱을 개선하는 데 중요한 도구인 상세 원격 분석용 Application Insights에 UWP 앱이 연결됩니다.UWP apps integrate with Application Insights for detailed telemetry and analytics—a crucial tool for understanding your users and improving your apps.

앱으로 수익 창출Monetize your app

앱으로 수익을 창출하는 방법을 선택할 수 있습니다.You can choose how you'll monetize your app. 앱으로 수익을 창출할 수 있는 다양한 방법이 있습니다.There are a number of ways to make money with your app. 예를 들어 자신에게 가장 적합한 앱을 선택하기만 하면 됩니다.All you need to do is choose the one that works best for you, for example:

  • 가장 간단한 옵션은 유료 다운로드입니다.A paid download is the simplest option. 가격만 정하세요.Just name the price.
  • 평가판은 사용자가 앱을 구입하기 전에 시험 삼아 사용하여 기존의 "프리미엄(Freemium)" 옵션보다 앱 검색률과 구매전환율을 더욱 쉽게 높일 수 있게 해줍니다.Trials let users try your app before buying it, providing easier discoverability and conversion than the more traditional "freemium" options.
  • 사용자에게 인센티브를 제공하기 위한 판매 가격입니다.Sale prices to incentivize users.
  • 앱에서 바로 구매 기능과 광고도 사용할 수 있습니다.In-app purchases and ads are also available.

Microsoft Store의 앱으로 설치, 제거 및 업그레이드를 원활하게 수행할 수 있는 환경 제공Apps from the Microsoft Store provide a seamless install, uninstall, and upgrade experience

모든 UWP 앱은 사용자, 디바이스 및 시스템을 보호하는 패키지 시스템을 사용하여 배포됩니다.All UWP apps are distributed using a packaging system that protects the user, device, and system. 앱에서 생성된 문서를 제외하고 뒤에 어떤 것도 남기지 않고 UWP 앱을 제거할 수 없기 때문에 사용자가 앱을 설치하고 후회할 일이 절대 없습니다.Users never need regret installing an app because UWP apps can be uninstalled without leaving anything behind except the documents created with the app.

앱을 원활하게 배포 및 업데이트할 수 있습니다.Apps can be deployed and updated seamlessly. 필요에 따라 콘텐츠 및 확장을 다운로드할 수 있기 때문에 앱 패키지로 수익 창출이 가능합니다.App packaging can be modularized so that you can download content and extensions on demand.

사용자의 재방문율을 높이도록 사용자에게 관련성 높은 실시간 정보를 제공Deliver relevant, real-time info to your users to keep them coming back

UWP 앱에서 사용자의 참여도를 높이는 방법은 여러 가지가 있습니다.There are a variety of ways to keep users engaged with your UWP app:

  • 라이브 타일과 잠금 화면 타일은 앱에서 맥락적으로 연관성이 있고 시의적절한 정보를 한눈에 보여줍니다.Live tiles and lock screen tiles that show contextually relevant and timely info from your app at a glance.
  • 실시간 경고를 통해 사용자의 주목을 불러일으키는 푸시 알림입니다.Push notifications that bring real-time alerts to your user’s attention.
  • 사용자 활동 덕분에 사용자가 디바이스 전반의 걸쳐 앱을 떠나는 지점을 선택할 수 있습니다.User Activities allow users to pick up where they left off in your app, even across devices.
  • 알림 센터에는 앱에서 제공된 알림이 정리되어 있습니다.The Action Center organizes notifications from your app.
  • 백그라운드 실행 및 트리거는 사용자가 필요할 때만 앱을 실행합니다.Background execution and triggers bring your app into action when the user needs it.
  • 사용자가 전 세계와 상호 작용하는 데 도움이 되도록 앱에서 음성 및 Bluetooth LE 장치를 사용할 수 있습니다.Your app can use voice and Bluetooth LE devices to help users interact with the world around them.
  • 앱에 음성 명령 기능을 추가하려면 Cortana를 연결합니다.Integrate Cortana to add voice command capability to your app.

이미 알고 있는 언어 사용Use a language you already know

UWP 앱은 운영 체제에서 제공되는 네이티브 API인 Windows 런타임을 사용합니다.UWP apps use the Windows Runtime, the native API provided by the operating system. 이 API는 C++에서 구현되고 C#, Visual Basic, C++ 및 JavaScript에서 지원됩니다.This API is implemented in C++ and is supported in C#, Visual Basic, C++, and JavaScript. UWP 앱을 작성하기 위한 몇 가지 옵션은 다음과 같습니다.Some options for writing UWP apps include:

  • XAML UI 및 C#, VB 또는 C++XAML UI and C#, VB, or C++
  • DirectX UI 및 C++DirectX UI and C++
  • JavaScript 및 HTMLJavaScript and HTML

설정Get set up

시작하기를 확인하여 앱 생성을 시작하는 데 필요한 도구를 다운로드한 다음, 첫 번째 앱을 작성합니다.Check out Get set up to download the tools you need to start creating apps, and then write your first app.

앱 디자인Design your app

Microsoft의 디자인 시스템을 Fluent라고 합니다.The Microsoft design system is named Fluent. Fluent Design System은 혁신적인 UWP 기능이 결집된 구현체로서 모든 유형의 Windows 기반 디바이스에서 높은 성능을 발휘할 수 있는 앱을 개발하기 위한 모범 사례가 여기에 통합되어 있습니다.The Fluent Design System is a set of UWP features combined with best practices for creating apps that perform beautifully on all types of Windows-powered devices. Fluent 환경은 태블릿부터 노트북, PC, TV 및 가상 현실 디바이스에 이르기까지 모든 디바이스에 적응하여 자연스러운 경험을 제공합니다.Fluent experiences adapt and feel natural on devices from tablets to laptops, from PCs to televisions, and on virtual reality devices. Fluent Design에 대한 내용은 UWP 앱을 위한 Fluent Design System을 참조하세요.See The Fluent Design System for UWP apps for an introduction to Fluent Design.

좋은 디자인이란 모양과 기능 외에도 사용자가 앱과 상호 작용하는 방식을 고려한 것입니다.Good design is the process of deciding how users will interact with your app, in addition to how it will look and function. 사용자 환경은 앱 사용의 즐거움을 결정하는 데 중요한 역할을 하므로 이 단계를 간과해서는 안 됩니다.User experience plays a huge part in determining how happy people will be with your app, so don't skimp on this step. 디자인 기본 사항에서는 유니버설 Windows 앱 디자인을 소개합니다.Design basics introduces you to designing a Universal Windows app. 사용자를 즐겁게 해주는 UWP 앱을 디자인하는 방법은 디자이너용 UWP(유니버설 Windows 플랫폼) 앱 소개를 참조하세요.See the Introduction to Universal Windows Platform (UWP) apps for designers for information on designing UWP apps that delight your users. 코딩을 시작하기 전에 디바이스 입문을 참조하면 대상으로 지정하려는 다양한 폼 팩터에서 앱을 사용하는 조작 환경을 생각하는 데 도움이 됩니다.Before you start coding, see the device primer to help you think through the interaction experience of using your app on all the different form factors you want to target.

다양한 디바이스에서의 조작 외에도 여러 디바이스의 이점을 수용하도록 앱을 계획해야 합니다.In addition to interaction on different devices, plan your app to embrace the benefits of working across multiple devices. 예를 들어 다음과 같은 가치를 제공해야 합니다.For example:

서비스 추가Add services

스토어에 앱 제출Submit your app to the Store

파트너 센터에서는 모든 Windows 디바이스용 앱을 한곳에서 관리하고 제출할 수 있습니다.Partner Center lets you manage and submit all of your apps for Windows devices in one place. Microsoft Store에서 게시할 앱을 제출하는 방법을 알아보려면 Windows 앱 및 게임 게시를 참조하세요.See Publish Windows apps and games to learn how to submit your apps for publication in the Microsoft Store.

새 기능 덕분에 프로세스는 간소화되고 더 세부적으로 제어할 수 있습니다.New features simplify processes while giving you more control. 자세한 분석 보고서, 결합된 지급 세부 정보, 앱을 홍보하고 고객 참여를 유도하는 방법 등을 알아볼 수 있습니다.You'll also find detailed analytic reports combined payout details, ways to promote your app and engage with your customers, and much more.

자세한 소개 자료를 보려면 Windows 10 디바이스용 Windows 앱 빌드 소개를 참조하세요.For more introductory material, see An Introduction to Building Windows Apps for Windows 10 Devices

고급 항목More advanced topics

유니버설 Windows 플랫폼과 Windows 런타임 API를 연결하는 방법How the Universal Windows Platform relates to Windows Runtime APIs

UWP(유니버설 Windows 플랫폼) 앱을 빌드하는 경우 용어 “UWP(유니버설 Windows 플랫폼)”와 "WinRT(Windows 런타임)"를 어느 정도는 동의어로 처리할 수 있으므로 많은 이점과 편리함을 얻을 수 있습니다.If you're building a Universal Windows Platform (UWP) app, then you can get a lot of mileage and convenience out of treating the terms "Universal Windows Platform (UWP)" and "Windows Runtime (WinRT)" as more or less synonymous. 하지만 기술적 측면을 바라보면 이러한 개념 간에 차이점을 알 수 있게 됩니다.But it is possible to look under the covers of the technology, and determine just what the difference is between those ideas. 이 내용에 대해 궁금한 점이 있으면 마지막 섹션이 도움이 될 것입니다.If you're curious about that, then this last section is for you.

Windows 런타임 및 WinRT API는 Windows API가 진화한 결과입니다.The Windows Runtime, and WinRT APIs, are an evolution of Windows APIs. 원래 Windows는 일반적인 C 스타일 Win32 API를 통해 프로그래밍되었습니다.Originally, Windows was programmed via flat, C-style Win32 APIs. 여기에 COM API(대표적인 예로 DirectX가 있음)가 추가된 것입니다.To those were added COM APIs (DirectX being a prominent example). Windows Forms, WPF, .NET 및 관리형 언어는 Windows 앱을 작성하는 고유한 방법과 고유한 API 기술 버전을 탄생시켰습니다.Windows Forms, WPF, .NET, and managed languages brought their own way of writing Windows apps, and their own flavor of API technology. Windows 런타임은 내부적으로 볼 때 COM의 다음 단계에 해당합니다.The Windows Runtime is, under the covers, the next stage of COM. 실제 ABI(애플리케이션 이진 인터페이스) 계층에서는 COM의 해당 루트가 표시됩니다.At the actual application binary interface (ABI) layer, its roots in COM become visible. 하지만 Windows 런타임은 유용한 여러 다른 프로그래밍 언어에서 호출할 수 있도록 디자인되었습니다.But the Windows Runtime was designed to be callable from a great range of different programming languages. 또한 해당하는 각 언어에 매우 자연스러운 방식으로 호출할 수 있습니다.And callable in a way that's very natural to each of those languages. 결과적으로, Windows 런타임에는 언어 프로젝션으로 알려져 있는 방식을 통해 액세스할 수 있습니다.To this end, access to the Windows Runtime is made available via what are known as language projections. C#, Visual Basic, 표준 C++, JavaScript 등으로의 Windows 런타임 언어 프로젝션이 있습니다.There is a Windows Runtime language projection into C#, into Visual Basic, into standard C++, into JavaScript, and so on. 또한 적절하게 패키징할 경우(데스크톱 브리지 참조), 다양한 애플리케이션 모델 중 하나에서 빌드한 앱에서 WinRT API를 호출할 수 있습니다. Win32, .NET, WinForms 및 WPFFurthermore, once packaged appropriately (see Desktop Bridge), you can call WinRT APIs from an app built in one of a great range of application models: Win32, .NET, WinForms, and WPF.

물론 UWP 앱에서도 WinRT API를 호출할 수 있습니다.And, of course, you can call WinRT APIs from your UWP app. UWP는 Windows 런타임을 기준으로 빌드된 애플리케이션 모델입니다.UWP is an application model built on top of the Windows Runtime. 기술적으로 UWP 애플리케이션 모델은 세부적인 내용은 공개되지 않을 수 있지만 사용자가 선택한 프로그래밍 언어에 따라 CoreApplication을 기준으로 빌드됩니다.Technically, the UWP application model is based on CoreApplication, although that detail may be hidden from you, depending on your choice of programming language. 이 항목에서 설명하는 것처럼 가치 제안의 관점에서 볼 때, UWP는 사용자가 선택할 경우 Microsoft Store에 게시되고 다양한 디바이스 폼 팩터 중 하나에서 실행될 수 있는 단일 바이너리를 작성하게 됩니다.As this topic has explained, from a value proposition point of view, the UWP lends itself to writing a single binary that can, should you choose, be published to the Microsoft Store and run on any one of a great range of device form factors. UWP 앱의 디바이스 연결은 앱을 호출 기능으로 제한하거나 조건부로 호출하는 UWP API 하위 세트에 따라 달라집니다.The device reach of your UWP app depends on the subset of UWP APIs that you limit your app to calling, or that you call conditionally.

다행히 이 섹션에서는 Windows 런타임 API를 기준으로 하는 기술과 유니버설 Windows 플랫폼의 메커니즘 및 비즈니스 가치 간 차이점을 잘 설명하고 있습니다.Hopefully, this section has been successful in describing the difference between the technology underlying Windows Runtime APIs, and the mechanism and business value of the Universal Windows Platform.