Kotlin + Watch Faces (Android Dev Summit ’18)

[음악 재생] 예레미어 워커 : 좋습니다 안녕, 내 이름은 제레미 워커 야

저는 Google의 개발자 플랫폼 엔지니어입니다 그리고 나는 너에게 어떻게하면되는지 이야기하고 싶었다 나는 Kotlin을 사용하여 시계 생성 작업을 훨씬 쉽게 만든다 WEAR OS 그래서 시계 얼굴은 지금 일종의 힘든 일입니다

그리고 약 600 행의 코드를 작성해야합니다 Android 또는 WEAR OS에서 실행하는 멋진 앱과는 다릅니다 여기서 많은 UI를 XML 형식으로 선언 할 수 있습니다 실제로 모든 것을 수동으로 페인트해야합니다 그리고 나서 여러분은 많은 코드를 포함시켜야합니다

주변 모드에서 언제인지 확인하십시오 당신은 배터리 수명을 아프게하지 않습니다 그래서, 나는 생각을하려고 노력했다 우리가 발표 한 I / O에서이를 개선하고 작년에 Kotlin에 대한 공식 지원 그래서 나는 생각하기 시작했다

이것을 쉽게하기 위해 Kotlin을 사용합니까? 그리고 나는 모든 것을 개종 시켰어 코드 라인을 많이 줄인 Kotlin에게 하지만 코 틀린과 뭔가 다른 걸 찾았 어 그걸 더 멋있게 만들었 어 그리고 그것은 DSL이라고 불리는 것입니다

그렇다면 Kotlin DSL은 무엇입니까? 도메인 특정 언어가 무엇인지 이해하는 가장 좋은 방법은 정기적 인 프로그래밍 언어와 비교하는 것입니다 그래서, 다시 도메인 특정 언어 나를 위해, 그것은 정말로 도움이되지 않았다 그러나 일반적인 프로그래밍과 비교하면 Kotlin 또는 Java와 같은 언어 당신은 많은 키워드를 가지고 있고, 당신은 클래스, 메소드, 그리고 당신은 반대편에있는 멋진 큰 앱을 상대방에서 만들고, 특정 작업이나 도메인에 초점을 맞추는 DSL입니다 그래서, 그것은 많은 기능을 포기합니다

특정 작업을 수행 할 수있게 해줍니다 실제로는 외부 DSL을 사용했을 가능성이 높습니다 그것을 깨달았다 예 : SQL 데이터베이스 조작

그것은 DSL입니다 따라서 문자열 조작을위한 정규 표현식입니다 그래서 그들은 각각 독립적 인 구문을 가지고 있습니다 그들은 많은 기능을 감소시킵니다 메소드 나 클래스를 작동시키지 않아도됩니다

당신은 그들 중 하나에 응용 프로그램을 작성하지 않을거야 적어도, 나는 희망하지 않는다 SQL의 경우 첫 번째 키워드 종류는 동사로, 당신이 할 일을 나타냅니다 어쩌면 당신이 선택하거나 업데이트 할 것입니다 여기에서의 단점은 여러분도 아시다시피, 이것을 문자열 리터럴로 넣어야합니까? 그래서, 당신은기도하고 모든 것을 철자하기를 바랍니다

런타임까지 제대로 작동하지 않을 수도 있습니다 당신은 그것을 통해 해킹하고 무슨 일이 일어나고 있는지 알아 내야 만합니다 따라서 Kotlin DSL을 사용하면 실제로 문자열에서 추출됩니다 그리고 그것은 코드에서 올바르게 처리됩니다 유형 검사를 할 수 있습니다

코드 힌트와 모든 좋은 것들을 가지고있다 귀하의 IDE와 함께 제공됩니다 그래서, 당신은 그것이 무엇인지에 대한 아이디어를 가지게되었으므로, 정말 두 가지 구조를 보여주고 싶습니다 그리고 저는 후자를 사용합니다,하지만 하나는 "연결된 메소드 호출" 다른 하나는 "람다 둥지"입니다 DSL을 인식하는 것은 실제로 주관적입니다

당신이 그것을 볼 때 당신은 그것을 압니다 그럼, 어떤 것을 보자 그래서, 이것은 SQL 용 Kotlin DSL입니다 당신은 아마 그것을 볼 수 있고 SQL을 안다면, 너는 그것을 즉시 이해할 수있다 그리고 그것은 Slice와 같은 모든 동사입니다

그리고 나서 Select All, 그리고 나서 Group By, 그 다음에 Order By, 그리고 나서 I Limit 그리고 이것은 모든 유형을 검사하고 코드 힌트를 얻습니다 그래서 당신은 잘못된 것을 철자하지 않습니다 그리고 이것은 꽤 훌륭하고 이해할 수 있습니다 이것은 DSL입니다

그러나 내가 정말로 좋아했던 시계 얼굴을위한 DSL은, "중첩 된 람다"구조였습니다 따라서 시계 모드를 만드는 것입니다 바로보실 수 있습니다 시계 만들기는 동사입니다 하지만 당신이 내 구조를 보면, 당신은 아무것도 몰라요

시계를 만드는 것에 대해 알지 못할 수도 있습니다 그러나 당신은 아마 지금 무슨 일이 벌어지고 있는지 이해할 수있을 것입니다 아날로그 시계 얼굴 좋아, 디지털이 아니기 때문에 팔이있다 그림 물감

좋아, 그걸 알아낼 수있어 손의 치수, 시침, 분침, 초침 알았어 시계 얼굴 배경 이미지 그래서 그게 전부입니다

그것은 매우 선언적입니다 그래서 당신은 즉시 이해할 수 있습니다 그리고 이것은 모든 유형의 체크이며 코드 힌트를 얻습니다 그리고 모든 좋은 것들 그리고 결국 나는이 좋은 작은 시계 얼굴을 일없이 얻을 수 있습니다

이제 600 라인, 그들은 모두 사라지지 않았다 나는 그들을 도우미 수업에 넣고 그것을 결합했다 더 중요한 수업과 함께 이 DSL을 해석합니다 하지만 시계를 만들면 DSL에 대해서만 알면됩니다

그래서, 다음은 뭐야? 이것은 코드 랩으로 한 실험의 일종입니다 코드 랩을 확인하십시오 새로운 시계 모드를 만드는 데 15 분 밖에 걸리지 않습니다 Kotlin 시계 코드 만 검색하면됩니다 실험실 – 이런, 정말 길다

Google 코드 랩을 검색하면됩니다 WEAR OS 또는 Kotlin에서 검색합니다 시계 모드를 만드는 방법을 볼 수 있습니다 코드를 볼 수 있습니다 내가 DSL간에 어떻게 전이했는지에 대한 소스 코드 그것을 작은 시계면으로 해석했습니다

하지만 더 중요한 것은 희망이 있습니다 조금 DSL에 관심을 갖고 말하기를, 이봐, 이걸 내 프로젝트 중 하나에서 사용할 수있어 그것을 조금 더 좋게 만들기 위해서 또는 SQL 용 DSL과 같은 것을 사용할 수 있습니다 테스트 용으로 하나 있습니다

그리고 하나는 내 것과 더 비슷합니다 Kotlin 코딩에서 HDML을 수행하고 유형을 검사 할 수도 있습니다 어느 것이 내가 내가 모델링 한 것의 종류 이야기 해줘서 고마워요 내가 얘기하게

그리고 잘하면 내가 너를 잡을거야 DSL에 조금 관심이 있습니다 고맙습니다 [박수 갈채] [음악 재생]