적응형 카드 개요Adaptive Cards Overview

적응형 카드는 개발자가 일반적이고 일관된 방법으로 UI 콘텐츠를 교환할 수 있는 개방형 카드 교환 형식입니다.Adaptive Cards are an open card exchange format enabling developers to exchange UI content in a common and consistent way.

작동 방식How they work

카드 작성자는 간단한 JSON 개체로 콘텐츠를 설명합니다.Card Authors describe their content as a simple JSON object. 그런 다음, 해당 콘텐츠는 호스트의 모양과 느낌에 맞게 자동으로 조정되도록 호스트 애플리케이션 내부에서 고유하게 렌더링될 수 있습니다.That content can then be rendered natively inside a Host Application, automatically adapting to the look and feel of the Host.

예를 들어 Contoso Bot은 Bot Framework를 통해 적응형 카드를 작성할 수 있으며 Skype에 전달될 때 Skype 카드와 비슷한 모양과 느낌을 구현합니다.For example, Contoso Bot can author an Adaptive Card through the Bot Framework, and when delivered to Skype, it will look and feel like a Skype card. 동일한 페이로드를 Microsoft Teams에 보낼 때는 Microsoft Teams와 비슷한 모양과 느낌을 구현합니다.When that same payload is sent to Microsoft Teams, it will look and feel like Microsoft Teams. 더 많은 호스트 앱이 적응형 카드를 지원하기 시작하면 동일한 페이로드는 이러한 애플리케이션 내에서 자동으로 실행되며, 전부 원래 앱에 있었던 것처럼 느낄 수 있습니다.As more host apps start to support Adaptive Cards, that same payload will automatically light up inside these applications, yet still feel entirely native to the app.

모든 것이 친숙하게 느껴지므로 사용자에게 이득입니다.Users win because everything feels familiar. 사용자 환경을 제어할 수 있으므로 앱 호스트에도 이득입니다.Host apps win because they control the user experience. 또한 자신의 콘텐츠를 추가 작업 없이 더 널리 퍼뜨릴 수 있으므로 카드 작성자에게도 이득입니다.And Card Authors win because their content gets broader reach without any additional work.

목표Goals

적응형 카드의 목표는 다음과 같습니다.The goals for Adaptive Cards are:

  • 이식 가능 - 모든 앱, 디바이스 및 UI 프레임워크Portable - To any app, device, and UI framework
  • 개방성 - 오픈 소스이며 공유되는 라이브러리 및 스키마Open - Libraries and schema are open source and shared
  • 저렴한 비용 - 손쉬운 정의, 손쉬운 사용Low cost - Easy to define, easy to consume
  • 표현력 - 개발자가 생성하고자 하는 콘텐츠의 롱 테일(Long Tail)이 목표Expressive - Targeted at the long tail of content that developers want to produce
  • 순수하게 선언적 - 코드가 필요하지 않거나 허용되지 않음Purely declarative - No code is needed or allowed
  • 자동으로 스타일 지정 - 호스트 애플리케이션 UX 및 브랜드 지침에 맞게Automatically styled - To the Host application UX and brand guidelines

카드 작성자의 경우For Card Authors

적응형 카드는 카드 작성자에게 아주 좋습니다.Adaptive Cards are great for card authors:

  • 하나의 스키마 - 단일 형식으로 카드 생산 비용을 최소화하고 카드가 사용될 수 있는 장소의 수는 최대화합니다.One schema - You get a single format, minimizing the cost of creating a card and maximizing the number of places it can be used.
  • 풍부한 식 - 더 풍부한 팔레트를 통해 콘텐츠를 자신이 표현하고자 하는 것과 더 밀접하게 조정할 수 있습니다.Richer expression - Your content can more closely align with want you want to say because you have a richer palette to paint with.
  • 광범위한 도달률 - 콘텐츠는 광범위한 애플리케이션 세트에서 작동하지만, 새 스키마를 배울 필요는 없습니다.Broad reach - Your content will work across a broader set of applications without you having to learn new schemas.
  • 입력 컨트롤 - 카드를 보는 사용자로부터 정보를 수집하기 위한 입력 제어를 카드에 포함시킬 수 있습니다.Input controls - Your card can include input controls for gathering information from the user that is viewing the card.
  • 더 나은 도구 - 오픈 카드 에코시스템은 모두가 공유하는 더 나은 도구를 의미합니다.Better tooling - An open card ecosystem means better tooling that is shared by everyone.

환경 소유자의 경우For Experience Owners

타사 콘텐츠의 에코시스템으로 진입하려는 앱 개발자라면 다음과 같은 이유로 적응형 카드가 마음에 드실 겁니다.If you are an app developer who wants to tap into an ecosystem of third-party content you will love Adaptive Cards because:

  • 일관된 사용자 환경 - 렌더링된 카드의 스타일을 소유하므로 사용자에게 일관된 환경을 보장합니다.Consistent user experience - You guarantee a consistent experience for your users, because you own the style of the rendered card.
  • 기본 성능 - UI 프레임워크를 직접 대상으로 하므로 기본 성능을 얻을 수 있습니다.Native performance - You get native performance as it targets your UI framework directly.
  • 안전 - 콘텐츠는 안전한 페이로드로 제공되므로 UI 프레임워크를 원시 태그 및 스크립팅에 개방할 필요가 없습니다.Safe - Content is delivered in safe payloads so you don't have to open up your UI framework to raw markup and scripting.
  • 손쉬운 구현 - 라이브러리를 상용화하여 지원하는 플랫폼에서 손쉽게 통합할 수 있습니다.Easy to implement - You get off the shelf libraries to easily integrate on any platform you support
  • 무료 설명서 - 사유 스키마를 고안, 구현 및 문서화할 필요가 없으므로 시간이 절약됩니다.Free documentation - You save time because you don't have to invent, implement, and document a proprietary schema.
  • 공유 도구 - 사용자 지정 도구를 만들 필요가 없으므로 시간이 절약됩니다.Shared tooling - You save time because you don't have to create custom tooling.

주요 디자인 원칙Core Design Principles

적응형 카드는 디자인이 제대로 진행되도록 하는 데 유용한 기본 원칙 세트에 의해 제어됩니다.Adaptive Cards are driven by a set of guiding principles that have been useful for keeping the design on track.

정확한 픽셀 대신 의미 체계Semantic instead of pixel-perfect

Microsoft는 정확한 픽셀 레이아웃과는 대조적으로 의미 체계 값과 개념을 위해 가능한 한 많은 노력을 해왔습니다.We have striven as much as possible for semantic values and concepts as opposed to pure pixel-perfect layout. 의미 체계 식의 예제는 색상, 크기 및 FactSet와 ImageSet 같은 요소에 나타납니다.Examples of semantic expression show up in colors, sizes, and in elements like FactSet and ImageSet. 이 모든 것은 호스트 애플리케이션이 실제 모양과 느낌에 대해 더 나은 결정을 내릴 수 있게 해줍니다.These all allow the host application to make better decisions about the actual look and feel.

카드 작성자는 콘텐츠를 소유하고, 호스트 앱은 모양과 느낌을 소유합니다.Card Authors own the content, Host App owns the look and feel

카드 작성자는 자신들이 말하고자 하는 내용을 소유하지만, 그것을 표시하는 애플리케이션은 작성자 애플리케이션의 컨텍스트에서 카드의 모양과 느낌을 소유합니다.The card authors own what they want to say, but the application displaying it owns the look and feel of the card in the context of their application.

간단하면서 다양한 표현Keep it simple, but expressive

적응형 카드가 다양한 표현을 하고 범용적이길 원하지만 UI 프레임워크를 빌드하고 싶지는 않습니다.We want Adaptive Cards to be expressive and general purpose, but we don't want to build a UI framework. 목표는 문서에서 Markdown이 충분히 표현되는 것과 동일한 방법으로 “충분히 다양한 표현을 구현”하는 중간 계층을 만드는 것입니다.The goal is to create an intermediate layer which is "expressive enough" in the same way Markdown is expressive enough for documents.

Markdown은 간단하고 다양한 표현에 초점을 맞추면서 문서 콘텐츠에 대한 쉽고 일관된 설명을 만들었습니다.By focusing on keeping it simple and expressive, Markdown created an easy and consistent description of document content. 동일한 방법으로 적응형 카드도 카드 콘텐츠를 설명하는 간단하고 효과적인 수단을 만들 수 있다고 생각합니다.In the same way, we believe that Adaptive Cards can create a simple, expressive means of describing card content.

의문이 있다면 제외When in doubt, keep it out

실수를 감수하며 사는 것보다 나중에 추가하는 것이 더 쉽습니다.It is easier to add later than it is to live with a mistake. 만약 무언가를 추가해야 할지 말지를 논쟁한다면 그대로 놔두기로 결정했습니다. 지원하지 않아도 되는 레거시가 잇는 것보다 속성을 추가하는 것이 항상 더 쉽습니다.If we found ourselves debating whether we should add something or not, we opted to leave it out. It is always easier to add a property than to live with a legacy we wish we didn't have to support.

2019 세션 빌드Build 2019 Session

Microsoft Build 컨퍼런스의 다음 세션은 다양한 사용 사례에서 적응형 카드를 소개합니다.The following session at the Microsoft Build conference showcases Adaptive Cards in a variety of use cases.