자유롭게 질의 및 응답을 할 수 있는 게시판입니다. 개발자 여러분의 답변이 큰 도움이 됩니다.
- 제품설치/등록 오류 문의: 설치/등록 Q&A 이용 (제품 구매 고객 한정)
[문의가 많아서 자문자답으로 정리했습니다]Q: 델파이로 안드로이드 네이티브 api를 직접 사용할 수 있나요? A: 네, 조건부 컴파일을 사용하면 됩니다. (10분 동영상: https://www.youtube.com/watch?v=xFVarhVy1N8 )
Q: 파이어몽키가 api를 웹핑(wrapping)한다는 건 무슨 의미인가요?A: 델파이가 웹핑했다는 것에 대한 설명을 드리겠습니다.
RAD 스튜디오 (델파이, C++빌더, 앱메소드)를 사용하여 개발하는 방식은 크게 3가지 수준으로 나눌 수 있습니다. 개발자는 이 3가지 수준은 넘나들며 필요할 때 필요한 방식으로 섞어서 구현할 수 있습니다.
[1 수준 - 네이티브 API] - 주로 꼭 필요한 경우에 일부 적용합니다.안드로이드, iOS, 윈도, 맥은 모두 각각의 api가 있습니다. RAD 스튜디오에서도 조건부 컴파일을 사용하면 각 api를 직접 사용할 수 있습니다. (이 부분이 델파이의 강점이기도 합니다. 타 개발환경은 제조사에서 제공하는 기능에만 의존하는 경우가 대부분입니다. 하지만, RAD스튜디오에 특정 운영체제 만을 위한 기능이 컴포넌트나 라이브러리 구현이 되어있지 않더라도, 개발자가 직접 해당 네이티브 api를 사용하여 개발할 수 있습니다)
[2 수준 - 공통 라이브러리] - 컴포넌트로 제공되지 않는 경우에 사용됩니다.엠바카데로의 개발환경은 각각의 네이티브 api를 추상화하여 멀티 플랫폼에서 적용되는 공통 라이브러리를 클래스를 구현합니다. 꼭 OS(운영체제)가 아니라도 같은 방식으로 추상화 합니다.XE8에 추가된 비콘(Beacon) 지원을 가지고 설명드리겠습니다.현재 Beacon은 크게 iBeacon(애플사)과 altBeacon(오픈 표준)이 사용됩니다. 구현은 각각 다르지만, 목적이 같으므로 기능과 속성은 거의 같습니다. (비유하자면, 흑인과 백인이라도 결국은 사람입니다)RAD 스튜디오는 그 공통 기능과 속성을 가지는 클래스인 TBeacon를 XE8부터 제공합니다. 이 때 특정 Beacon에서만 적용하기 위한 코드 라이브러리 중 굳이 오픈할 필요가 없는 것들은 포함시키지 않음으로써 개발자가 더욱 단순하고 명확하게 사용할 수 있도록 합니다. 이 라이브러리는 개발자가 코드에서 사용할 수 있습니다. 그리고 이 TBeacon이 내부적으로 iBeacon를 쓰든 altBeacon을 쓰든 개발자는 고민하지 않고 기능합니다. (이 부분은 개발 환경에서 알아서 처리하도록 구현되어 있습니다. 이것을 wrapping 했다고 표현하였습니다.)
[3 수준 - 컴포넌트와 툴팔레트] - 거의 대부분 이 수준으로 사용합니다. 컴포넌트 가져오고 필요한 내용만 코드로 구현합니다.공통 라이브러리로 구현된 2 수준은 개발자가 코드를 작성하면서 필요할 때 사용할 수 있습니다. 하지만, 코드 편집기를 사용하여 타이핑해야 하고 클래스 구조를 타고 들어가서 찾아서 사용해야 합니다. 이러한 수고를 덜고 쉽게 사용할 수 있도록 공통 라이브러리 중에서 사용 빈도가 극히 적거나, 코드만으로도 매우 간단히 사용할 수 있는 것을 제외하고는 대부분을 컴포넌트로 만들어서 개발자들이 쉽게 사용할 수 있도록 합니다. 그리고 이 컴포넌트들은 개발환경의 툴팔레트에서 바로 찾을 수 있고 드래그하여 개발 화면에 옮기면, 필요한 코드가 자동으로 만들어집니다.RAD스튜디오의 가장 큰 강점 중 하나가 바로 이 광범위한 컴포넌트들입니다.
위 방식은 멀티-디바이스를 위한 파이어몽키(FMX)에서 갑자기 생긴 것이 아닙니다. 이미 20년 전부터 윈도우 애프리케이션 개발을 위해 델파이에 도입된 VCL (비주얼 컴포넌트 라이브러리)도 마찬가지로 복잡한 윈도우 api를 웹핑하여 개발자들이 개발을 보다 쉽고 빠르게 할 수록 도와주고 있습니다. 델파이하면 누구나 VCL을 떠올리는 이유이기도 합니다.
FMX가 구현하는 방식을 깊이 들여다보고 싶으시다면 델파이 개발툴의 소스를 따라가 보시기 바랍니다 (정품 라이선스인 경우 소스가 공개됩니다. 꼭 이 문의가 아니라도 한번쯤 들여다보시면 좋은 공부가 될 것입니다)
댓글 0
[문의가 많아서 자문자답으로 정리했습니다]
Q: 델파이로 안드로이드 네이티브 api를 직접 사용할 수 있나요?
A: 네, 조건부 컴파일을 사용하면 됩니다. (10분 동영상: https://www.youtube.com/watch?v=xFVarhVy1N8 )
Q: 파이어몽키가 api를 웹핑(wrapping)한다는 건 무슨 의미인가요?
A: 델파이가 웹핑했다는 것에 대한 설명을 드리겠습니다.
RAD 스튜디오 (델파이, C++빌더, 앱메소드)를 사용하여 개발하는 방식은 크게 3가지 수준으로 나눌 수 있습니다. 개발자는 이 3가지 수준은 넘나들며 필요할 때 필요한 방식으로 섞어서 구현할 수 있습니다.
[1 수준 - 네이티브 API] - 주로 꼭 필요한 경우에 일부 적용합니다.
안드로이드, iOS, 윈도, 맥은 모두 각각의 api가 있습니다. RAD 스튜디오에서도 조건부 컴파일을 사용하면 각 api를 직접 사용할 수 있습니다. (이 부분이 델파이의 강점이기도 합니다. 타 개발환경은 제조사에서 제공하는 기능에만 의존하는 경우가 대부분입니다. 하지만, RAD스튜디오에 특정 운영체제 만을 위한 기능이 컴포넌트나 라이브러리 구현이 되어있지 않더라도, 개발자가 직접 해당 네이티브 api를 사용하여 개발할 수 있습니다)
[2 수준 - 공통 라이브러리] - 컴포넌트로 제공되지 않는 경우에 사용됩니다.
엠바카데로의 개발환경은 각각의 네이티브 api를 추상화하여 멀티 플랫폼에서 적용되는 공통 라이브러리를 클래스를 구현합니다. 꼭 OS(운영체제)가 아니라도 같은 방식으로 추상화 합니다.
XE8에 추가된 비콘(Beacon) 지원을 가지고 설명드리겠습니다.
현재 Beacon은 크게 iBeacon(애플사)과 altBeacon(오픈 표준)이 사용됩니다. 구현은 각각 다르지만, 목적이 같으므로 기능과 속성은 거의 같습니다. (비유하자면, 흑인과 백인이라도 결국은 사람입니다)
RAD 스튜디오는 그 공통 기능과 속성을 가지는 클래스인 TBeacon를 XE8부터 제공합니다. 이 때 특정 Beacon에서만 적용하기 위한 코드 라이브러리 중 굳이 오픈할 필요가 없는 것들은 포함시키지 않음으로써 개발자가 더욱 단순하고 명확하게 사용할 수 있도록 합니다. 이 라이브러리는 개발자가 코드에서 사용할 수 있습니다. 그리고 이 TBeacon이 내부적으로 iBeacon를 쓰든 altBeacon을 쓰든 개발자는 고민하지 않고 기능합니다. (이 부분은 개발 환경에서 알아서 처리하도록 구현되어 있습니다. 이것을 wrapping 했다고 표현하였습니다.)
[3 수준 - 컴포넌트와 툴팔레트] - 거의 대부분 이 수준으로 사용합니다. 컴포넌트 가져오고 필요한 내용만 코드로 구현합니다.
공통 라이브러리로 구현된 2 수준은 개발자가 코드를 작성하면서 필요할 때 사용할 수 있습니다. 하지만, 코드 편집기를 사용하여 타이핑해야 하고 클래스 구조를 타고 들어가서 찾아서 사용해야 합니다. 이러한 수고를 덜고 쉽게 사용할 수 있도록 공통 라이브러리 중에서 사용 빈도가 극히 적거나, 코드만으로도 매우 간단히 사용할 수 있는 것을 제외하고는 대부분을 컴포넌트로 만들어서 개발자들이 쉽게 사용할 수 있도록 합니다. 그리고 이 컴포넌트들은 개발환경의 툴팔레트에서 바로 찾을 수 있고 드래그하여 개발 화면에 옮기면, 필요한 코드가 자동으로 만들어집니다.
RAD스튜디오의 가장 큰 강점 중 하나가 바로 이 광범위한 컴포넌트들입니다.
위 방식은 멀티-디바이스를 위한 파이어몽키(FMX)에서 갑자기 생긴 것이 아닙니다. 이미 20년 전부터 윈도우 애프리케이션 개발을 위해 델파이에 도입된 VCL (비주얼 컴포넌트 라이브러리)도 마찬가지로 복잡한 윈도우 api를 웹핑하여 개발자들이 개발을 보다 쉽고 빠르게 할 수록 도와주고 있습니다. 델파이하면 누구나 VCL을 떠올리는 이유이기도 합니다.
FMX가 구현하는 방식을 깊이 들여다보고 싶으시다면 델파이 개발툴의 소스를 따라가 보시기 바랍니다 (정품 라이선스인 경우 소스가 공개됩니다. 꼭 이 문의가 아니라도 한번쯤 들여다보시면 좋은 공부가 될 것입니다)