델파이는 윈도우10 기능들을 최대한 활용할 수 있는 기능들을 제공합니다. 사용하기도 정말 간편하죠.

 

RemObjects 일원이자 엠바카데로 MVP인 Jon L. Aasenden 이 이 그 핵심적인 기능들을 정리했습니다.


 

Jon L. Aasenden이 생각하는 윈도우10에서 활용 가능한 델파이 기능들, 그 중에서도 가장 유용한 다섯가지 기능을 정리해보았습니다.

 

일반 컴퓨터 사용자들(비개발자)에게 윈도우10은 그냥 또 다른 윈도우 버전으로만 보일 수 있습니다. 왜 아직도 윈도우7을 사용하는 분들이 있을까요? 일반 사용자든, 개발자든지요. 그리고 윈도우10만의 특별한 기능은 무엇이 있을까요?

 

윈도우10이 왜 멋진 버전인지 이해하기 위해서는 직전의 버전 윈도우8을 먼저 살펴볼 필요가 있습니다.

 

윈도우8 출시 당시, 마이크로소프트는 모바일 시장에서 굉장히 활발하게 움직이고 있었습니다. 그리고 윈도우8은 윈도우 측면에서 실질적인 대표 주자였죠. 마이크로소프트는 ARM - 마이크로소프트와 애플 모두에게 여전히 목표 지점이죠 - 지원을 위해 x86을 포기하겠다고 했습니다. 그리고 이를 위해서는 OS를 원점부터 설계해야 했습니다.

 

퀄컴은 가장 강력한 ARM SoC(칩에 탑재된 시스템)을 생산하고 있습니다. SnapDragon 800 시리즈는 인텔 i5와 근접한 성능을 제공하지만,

가격은 굉장히 저렴합니다. SnapDragon SoC는 마이크로소프트 서피스 태블릿에도 탑재되어 있으며, 최신 삼성 갤럭시 노트10에도 공급됩니다.

 

 

 

이렇게 해서 나온 결과물이 WinRT (Windows Runtime) 입니다. 이걸 활용하면 어떤 CPU용으로든 컴파일 가능한 애플리케이션을 작성할 수 있습니다. (이건 파이어몽키나 데스크탑, 모바일, 임베디드 상의 추상화 계층과는 다릅니다)

 

 

 

유니버설 윈도우 플랫폼 (UWP)

 

알고계신 것처럼, 윈도우8은 마이크로소프트가 계획한대로 진행되지 못했습니다. 마이크로소프트는 윈도우 모바일을

철수하고, 가장 잘 할 수 있는 것. 즉 윈도우 데스크탑에 집중하기로 했습니다.

 

UWP는 WinRT의 후계자정도로 보면 될 것 같습니다. 동일한 기술을 제공하는데 보다 더 넓은 의미와 더 다양한 기술을 포용하기는 합니다. 가장 중요한 점은 다른 언어나 비주얼 스튜디오를 사용하지 않는 개발자들도 윈도우8 제약없이 사용할 수 있다는 것입니다 (WinRT는 C++만 지원했습니다). 마이크로소프트는 UWP에 에뮬레이션 레이어를 추가해 x86과 WinAPI용으로 작성한 애플리케이션이 ARM에서도 문제없이 실행될 수 있도록 했습니다.

 

델파이가 현재 윈도우10의 가장 본질적인 부분이라고 할 수 있는 WinRT API를 지원한다는 점을 강조하고 싶네요.

VCL(WinAPI 아래)에는 약 40여개의 유닛이 있고, 이들을 활용해 윈도우에서 직접 작업할 수 있습니다. 이 글을 통해서

윈도우 10용으로 제공되는 컴포넌트들에 대해서도 살펴보겠습니다.

 

 

 

 

 

1: 확장 그리고 DPI 인식

 

윈도우10의 그래픽은 윈도우8 (특히 윈도우7) 보다 매끄럽습니다.

특히 높은 DPI를 지원하는 모니터로 비교해보면 차이가 더 잘 드러납

니다. HD와 SD를 지원하는 모니터들을 하나의 PC에 연결할 수 있죠.

 

모니터 DPI는 애플리케이션 매니페스트에서 관리하지만, RAD스튜디오

IDE 프로젝트 옵션으로 설정할 수 있습니다. 즉 PC용 애플리케이션 DPI는 몇 번의 클릭만으로 충분합니다.

 

IDE의 컴포넌트 화면 (또는 폼 화면)에서 TImageCollection이나

TVirtualImageList 로 HD 그래픽 지원이 가능합니다. 이 컴포넌트들은

필요할 때 HD 디스플레이를 지원하고, 사용하지 않을 때는 이전

SD(낮은 해상도)를 지원하도록 해줍니다.

 

 

 

 

2: UWP 계약

 

예전에는 컴퓨터 환경의 특징적인 기능을 파악하는 것은 어렵고 낮은 수준의 작업이었습니다. 윈도우10의 경우 여러 CPU 아키텍처 (예. x86, ARM)를 지원하기 때문에, 다양한 디바이스들을 일일이 맞추어 특정 하드웨어 기능을 확인한다는 것은 굉장한 골칫거리입니다. 하지만 이 점을 WinRT/UWP가 계약(contracts) 개념을 통해 해소해주었습니다.

 

UWP의 "계약(contracts)" 개념은 애플리케이션이 하드웨어 특징을 파악해 환경에 더 잘 적응하도록 해야 한다는 것입니다.

 

예를 들어, 그래픽 프로그램이 카메라와 연결될 때 카메라 기능을 보여주어야

합니다. 카메라가 없는 경우에는 버튼이나 옵션을 생략할 수 있습니다

(적응형 UI - adaptive UI). 계약이라는 것은 윈도우에게 "이 환경이 실제로 발생하면 알려줘"라고 말하는 방식이라고

할 수 있습니다.

 

이 기술은 언뜻 보기에는 중요하지 않아 보일 수 있습니다. 

하지만 UWP가 Xbox, 홀로렌즈(Hololens), 서피스(태블릿PC) 와

 같은 디바이스들을 지원한다는 점을 생각해보면, 이 장치들의 활용 가능한 기능을 자동으로 감지하고 대응하는 것이 매우 중요합니다.

 

반응형 애플리케이션의 기본 개념은 필요한 기능을 파악하고, 사용 가능한 경우에만 활용하는 것입니다. 전통적인 방식에서는 OS 버전을 확인한 후 API를 사용합니다.

윈도우10에서는, 개발한 앱의 클래스, 방법, 속성, 이벤트, API 계약이 현재 OS에서 지원되는지를 런타임 시에 확인할 수 있습니다.

이렇게 해서 적합한 API를 호출할 수 있게 되는 거죠.

 

RAD스튜디오는 WinRT API 맵핑과 오브젝트 파스칼 인터페이스, 윈도우10 서비스, 계약(contracts)을 지원합니다. 그래서 다른 언어와 동일한 방법으로 이 기능을 직접 활용할 수 있습니다.

 

 

 

 

3: 마이크로소프트 스토어에 배포하기

 

통합 앱스토어 (또는 패키지 매니저)는 처음에 리눅스때문에 인기를 끌었습니다. 그리고 이후에는 애플에 의해서 퍼졌죠. 애플리케이션을 바로 구입해서 디바이스에 설치하고, 업데이트를 자동으로 관리할 수 있는 소프트웨어 스토어는 정말 멋진 아이디어입니다. 오늘날 윈도우10을 포함한 모든 주요 운영 체제에는 앱 스토어가 내장되어 있습니다.

 

마이크로소프트 스토어를 통해 판매 또는 배포해야 하는 애플리케이션을 개발할 때에는 특정 방식(*.appx 패키지 파일)으로 패키징해야 합니다. 맥OS, iOS, 안드로이드용 앱과 마찬가지로 윈도우10 스토어용 앱도 반드시 프로비저닝하고 서명까지 해야하죠. 그런데 이 작업이 RAD스튜디오에서는 정말 쉽습니다. 구글플레이, 애플 앱스토어, 마이크로소프트 스토어 모두 방법이 다 동일합니다.

 

 

아래의 짧은 영상도 참고해보세요:

 

 

 

4: 윈도우10 알림

 

앞서 WinRT는 WinAPI를 대체할 수 없고, 대신 현재 UWP (Universal Windows Platform)와 통합되었다고 간단하게 언급했었습니다. 마이크로소프트가 작업한 또 다른 부분은, 수준은 낮지만 시간은 오래 걸렸던 작업을 크게 단순화하여 사용성을 극대화하고 제공하는 기능은 확장한 것이었습니다.

 

CD-ROM이나 USB 처럼 하드웨어의 변화를 알리는 건 그리 새로운 일은 아닙니다. 하지만 윈도우10의 알림 계층(notification layer)은 클라우드 서비스를 포함한 여러 알림 채널들을 모두 통합합니다.

 

프로그래밍 관점에서 보자면, 이 기능은 삶을 굉장히 편하게 만들어주었습니다. 예를 들어, 로컬과 원격을 포함한 다양한 서비스들을 활용해 데이터를 저장하는 애플리케이션이 있습니다. 이 경우 클라우드와 로컬에 대해 각각 별도의 신호 처리를 작성할 필요없이, 일관성있게 단 하나의 방법만으로도 통합 지원할 수 있습니다.

 

참고: UWP의 이 부분은 마이크로소프트가 아직 개발중에 있습니다. 향후에는 BaaS를 통한 푸쉬 알림과 같은 기능들을 지원할 것으로 예정되어 있습니다.

 

 

토스트 알림 (Toast notifications)

 

토스트 알림은 앱이 새로운 메세지, 새로운 친구 요청, 속보, 캘린더 이벤트 등 정보와 이벤트를 사용자에게 알려주는 기능입니다. 사용자가 알림을 "추적"하고자 한다면(알림 메세지를 누르거나 클릭해서 앱을 활성화 함), 앱은 사용자에게 해당 페이지를 보여주어야 합니다.

 

RAD스튜디오의 새로운 컴포넌트 "TNotificationCenter"가 바로 이 기능을 지원합니다. 이 컴포넌트를 사용하면 윈도우10 토스트 알림은 물론 로컬 다중 장치 알림을 처리하는 방법이 매우 단순해집니다. 이 컴포넌트 하나만으로 iOS, 안드로이드, OSX/맥OS, 윈도우10 모든 플랫폼 알림 기능을 통합 관리할 수 있습니다.

 

 

 

5: 윈도우 10 VCL 컴포넌트들

 

델파이는 델파이/C++빌더 개발자들이 WinRT(UWP) 기능을 사용할 수 있도록 해주는 약 40여개의 유닛들을 제공합니다.

 

윈도우10은 윈도우7을 포함한 이전 버전의 윈도우에서는 제공하지 못하는 정말 멋진 기능들을 제공합니다. 여전히 운영OS가 윈도우7으로 되어있는 사용자들이 있고, 업그레이드를 두려워하는 분들이 있다는 걸 알고 있습니다. 하지만 이제 MS는 윈도우7 지원을 공식 종료했고, 윈도우10으로 가야만 하는 때가 왔습니다.

 

윈도우10은 모든 면에서 이전의 윈도우들과는 완전히 다릅니다. 훨씬 빠르고 편리합니다.

 

RAD스튜디오가 제공하는 윈도우10 관련 컴포넌트들을 확인해보세요:

 

앞서 얘기했던 HD와 SD 그래픽 모두를 지원하는 새로운 컴포넌트들도 있죠:

 

윈도우10이 지원하는 블루투스 API도 꼭 짚고넘어가야죠. 이 기능은 델파이에서는 표준 TBlueTooth 컴포넌트로 캡슐화되어 있습니다. 블루투스와 같은 기능들은 많이 낮은 수준의 작업들, USB 장치들, BT 어댑터 오브젝트 찾기 등을 포함하고 있습니다. 하지만 델파이와 C++빌더는 매우 깔끔하면서도 사용자들에게 친숙한 활용 방식을 제공합니다.

 

아직 블루투스 기능이 낯설다면, 다음 글들이 도움이 될 것입니다:

 

아직 새로운 컴포넌트들이 만족스럽지 못하더라도, 윈도우10은 아직 출시되지 얼마 않았다는 점을 고려해 볼 필요가 있습니다. 하지만 VCL은 윈도우10과는 달리 굉장히 다양하게 활용되어왔고, 수십년에 걸쳐 많은 테스트를 거쳐왔습니다. 현재는 기본 윈도우 애플리케이션을 개발하는데 가장 빠르고 효율적인 방법이죠.

이러한 기존 VCL 컨트롤들이 이미 윈도우10에서도 잘 작동하고 있습니다. 그리고 윈도우10만의 고유한 기능들을 캡슐화하는 건 VCL에게는 식은 죽 먹기이죠.

 

 

 

결론

 

델파이와 C++빌더로 윈도우10을 직접적으로 활용하는 방법과 명확한 경로를 제공하는 방법 등에 대해서 간단하게 살펴봤습니다. - 정말 아주 표면적인 것만 간단하게 살펴본 정도이죠!

 

우리 개발자들이 종종 잊는 사실이 있는데, 바로 엠바카데로는 기술 파트너들에 대한 책임감을 갖고있다는 점입니다.

고객에게는 최신 기능을 활용할 수 있도록 보장하고, 기술 파트너들은 컴포넌트 패키지와 솔루션들을 구축할 수 있도록 하죠.

 

델파이와 C++빌더의 컴포넌트와 기술은 풍부한 생태계가 있어 개발자들에게도 활용할 정보가 정말 많습니다. 간단한

부분부터 클라우스 서비스 통합에 이르기까지 어떤 것이든 필요한 해결책은 늘 찾아서 사용할 수 있죠.

바로 이 점이 지금까지도 델파이와 C++빌더가 많은 사랑을 받고있는 이유 중 하나입니다.

 

제가 델파이 10.x 버전이 정말 좋아졌다고 말하는 또 다른 이유는 런타임 라이브러리에서 최적화가 매우 빠르게 이루졌다는 것입니다. VCL과 FMX 프레임워크 성능도 그러하죠. 하지만 아직 델파이의 미래는 무궁무진합니다.

 

델파이는 더욱 강력해지고 있고, 델파이 커뮤니티 공동체도 다시 살아나고 있습니다. 이미 많은 분들이 그렇게 느끼고 있구요. 우리는 다양한 이유로 델파이, C++빌더로 다시 돌아오는 개발자들 뿐만 아니라 많은 새로운 개발자들의 유입도 보고 있습니다. 개발자들이 델파이, C++빌더로 오는 가장 큰 이유 중 하나는 바로 윈도우 소프트웨어 개발에 대해서는 델파이와 겨룰 도구가 없다는 것입니다. 속도, 생산성, 품질 어떤 것 하나 뛰어나지 않은 것이 없죠. 특히나 윈도우10이라면, 델파이는 가히 최고의 소프트웨어 개발 시스템입니다.

 

델파이 개발자가 되기에 가장 좋은 순간이라는 건 없었습니다. 바로 지금 델파이를 시작해보세요!

 

 

 

번호 제목 글쓴이 날짜 조회 수
공지 [DelphiCon 요약] 코드사이트 로깅 실전 활용 기법 (Real-world CodeSite Logging Techniques) 관리자 2021.01.19 7316
공지 [UX Summit 요약] 오른쪽 클릭은 옳다 (Right Click is Right) 관리자 2020.11.16 7083
공지 [10.4 시드니] What's NEW! 신기능 자세히 보기 관리자 2020.05.27 9481
공지 RAD스튜디오(델파이,C++빌더) - 고객 사례 목록 관리자 2018.10.23 14553
공지 [데브기어 컨설팅] 모바일 앱 & 업그레이드 마이그레이션 [1] 관리자 2017.02.06 16288
공지 [전체 목록] 이 달의 기술자료 & 기술레터 관리자 2017.02.06 12049
공지 RAD스튜디오(델파이, C++빌더) - 시작하기 [1] 관리자 2015.06.30 31388
공지 RAD스튜디오(델파이,C++빌더) - 모바일 앱 개발 사례 (2020년 11월 업데이트 됨) 험프리 2014.01.16 167007
1120 [도서/PDF] 한 번에 개발하는 안드로이드&iOS 앱 with 델파이 1편 - 3장. 파이어몽키 이해하기 [2] 관리자 2020.02.04 426
1119 [고객사례-유틸리티, 델파이] SyncBackPro - 데이터 백업/동기화 솔루션 관리자 2020.02.04 207
1118 델파이 개발자를 위한 이더리움(Ethereum)! 관리자 2020.02.04 278
» 윈도우10에서 활용 가능한 델파이만의 5가지 기능들 관리자 2020.02.04 762
1116 [업데이트][패치][10.3.3] C++빌더 10.3.3 스레딩 및 TLS 패치 험프리 2020.02.03 157
1115 Delphi / C ++ Builder를 사용하여 Azure에서 MSSQL 데이터베이스 만들기 및 연결 험프리 2020.02.03 154
1114 이 달의 기술자료 - 2020년 02월 험프리 2020.01.31 184
1113 [고객사례-유틸리티, 델파이] ALLMediaServer - 미디어 컨텐츠 플레이 프로그램 관리자 2020.01.31 192
1112 [발표자료] 20200130 실제 사례로 살펴보는 소프트웨어 현대화 방안 file 관리자 2020.01.31 169
1111 [코드레이지2019] VCL 현대화: WinAPI, COM & Shell 인터페이스, WinRT 통합하기 김원경 2020.01.30 148
1110 TJumpList 컴포넌트 사용하기 file 김원경 2020.01.30 188
1109 데브기어 컴포넌트 컨버터 소개(마이그레이션 자동화 도구) 험프리 2020.01.29 336
1108 [코드레이지2019] 파이어몽키에서 사용자 정의 Message Box 디자인하기 김원경 2020.01.23 194
1107 파이어몽키에서 Message 대화상자 사용하기/Message 대화상자와 유사하게 폼 사용하기 file 김원경 2020.01.23 1971
1106 [업데이트][패치][10.3.3] RAD 스튜디오 10.3.3 아이폰 XS와 XR 디버깅 패치 험프리 2020.01.23 194
1105 [코드레이지 2019] 웹소켓(WebSocket)과 델파이 험프리 2020.01.22 858
1104 프로젝트 경험을 통해 터득한 효과적인 마이그레이션 프로세스 file 험프리 2020.01.22 379
1103 RAD서버에서 데이터를 JSON으로 어떻게 오픈할 수 있을까요? (JSONValue와 JSONWriter 활용하기) 관리자 2020.01.21 234
1102 파이어몽키 TListBox 컴포넌트 사용방법: 사용자 정의 아이템데이터 동적으로 표시하기 file 김원경 2020.01.20 424
1101 [고객사례-유틸리티, C++빌더] Reg Organizer - 시스템 레지스트리 구성&최적화 유틸리티 관리자 2020.01.20 252