델파이는 윈도우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 22591
공지 [UX Summit 요약] 오른쪽 클릭은 옳다 (Right Click is Right) 관리자 2020.11.16 21024
공지 [10.4 시드니] What's NEW! 신기능 자세히 보기 관리자 2020.05.27 23083
공지 RAD스튜디오(델파이,C++빌더) - 고객 사례 목록 관리자 2018.10.23 28881
공지 [데브기어 컨설팅] 모바일 앱 & 업그레이드 마이그레이션 [1] 관리자 2017.02.06 30050
공지 [전체 목록] 이 달의 기술자료 & 기술레터 관리자 2017.02.06 25397
공지 RAD스튜디오(델파이, C++빌더) - 시작하기 [1] 관리자 2015.06.30 46348
공지 RAD스튜디오(델파이,C++빌더) - 모바일 앱 개발 사례 (2020년 11월 업데이트 됨) 험프리 2014.01.16 182325
1397 N 윈도우와 맥 개발 시작을 위한 파이어몽키 코스북: 무료 다운로드 제공(385페이지) 관리자 2013.04.05 152367
1396 ComPort(시리얼 통신) 컴포넌트 설치안내 [11] file 험프리 2013.12.04 112782
1395 [REST API] REST 기반 파일 업로드와 다운로드 구현하기 험프리 2020.08.31 84739
1394 델파이 튜토리얼 자습서 이용 안내 관리자 2014.09.01 71988
1393 이 달의 기술자료 - 2014년 11월 험프리 2014.10.13 54176
1392 이 달의 기술자료 - 2014년 6월 file 험프리 2014.06.05 50406
1391 Find the O/S Language Type c2design 2014.07.30 48422
1390 RAD Studio Resource Center 박병일 2012.01.26 46645
1389 CD-ROM 열고 닫기 박병일 2011.12.22 44787
1388 [Android] 폰번호 가져오기 [1] 타락천사 2014.09.05 38644
1387 이 달의 기술자료 - 2014년 12월 file 험프리 2014.11.26 32514
1386 RAD Studio XE6 Update1 발표 [1] Humphery 2014.06.20 29499
1385 델파이XE2 파이어몽키 기반 아이폰앱 개발에서 제스춰를 인식시키는 방법 박병일 2012.01.25 23342
1384 [10.4 시드니 신기능] 새로운 VCL TEdgeBrowser 컴포넌트 험프리 2020.05.18 23197