각종 컨퍼런스에 나온 강연들을 정리해보면서 공부해보고 있습니다.
이번 포스팅은 DEVIEW 2020에서 권문범님과 김민섭님께서 강연해주신 내용을 정리했습니다.
제목은 "NAVER CLOVA 이식하기: 내 앱에 Google Assistant, Apple Siri 같은 음성 비서" 이며 CLOVA VA에 관한 소개 및 적용에 대한 내용입니다.
말투는 편한 말투로 작성하니 양해 부탁드립니다.
VA는 애플의 Siri나 안드로이드의 Google Assistant처럼 음성으로 활성화되고 특정 유형의 작업을 하는 소프트웨어입니다. 기존의 VA들을 위와 같은 한계점들이 있었지만, Clova는 이러한 한계점들을 보완한 VA라고 합니다.
사용자가 원하는 정보를 알아내기 위해, 음성 인식과 맥락을 파악하여 도메인을 찾고, 그에 맞는 내용을 표시
동작에 따라 각 화면마다 State를 정의하고, 해당 상태로 전환하기 위한 애니메이션을 독립적으로 동작하게 하기 위해서 Transition도 함께 정의함
Enum을 통한 State 정의
State와 함께 Transition도 정의
대표적인 State들의 변화
각 화면마다 State별로 나눠놓으니 확실히 깔끔해보이고 확장도 쉬워보였습니다!
바로 위 이미지에는 4개의 State만 표시되어있지만, Enum을 보면 실제로는 더 많이 있고, State별로 필요한 변수도 던져줄 수 있도록 구현해놓은 모습을 볼 수 있습니다.
결과 화면을 보여줄 때, 쓰이는 뷰
UITableView와 UICollectionView는 기본적으로 iOS가 자동으로 재사용함으로써 성능을 높여줍니다.
예를 들어, 스크롤로 인해 맨 위 셀이 사라지면 큐로 들어가고, 해당 셀의 정보가 맨 아래 셀로 재사용 됩니다.
하지만 Layout을 커스터마이징할 경우에는 정보가 재사용되지 않습니다.
그래서 Clova는 재사용을 위해 FlowLayout 클래스 내부에 캐시를 구현했다고 합니다.
원래대로라면 Clova를 사용하기 위해서는 위에 있는 모든 정보가 필요하지만, ClCExternalClientInfo를 따로 만들어서 clientID, clientSecret, namespace, helpURL만 입력하면 사용할 수 있다고 합니다.
강연 영상에서는 해당 예시들에 대한 영상 자료를 보여주고, VA 연동을 직접 시연해주십니다. 자세히 알고싶다면 영상을 보시는 것을 추천드립니다!