Slide 1

Slide 1 text

KotlinConf Keynote Yahoo! JAPAN / 森 洋之

Slide 2

Slide 2 text

About me Yahoo! JAPAN Android黒帯  (こういうところで話す仕事) ヤフオク!のAndroid / iOS / バックエンド担当

Slide 3

Slide 3 text

Keynote #1

Slide 4

Slide 4 text

Kotlin/Anywhere

Slide 5

Slide 5 text

No content

Slide 6

Slide 6 text

No content

Slide 7

Slide 7 text

No content

Slide 8

Slide 8 text

No content

Slide 9

Slide 9 text

Kotlin/Anywhere

Slide 10

Slide 10 text

Server Android Browser Kotlin/JVM Kotlin/JVM Kotlin/JS

Slide 11

Slide 11 text

Kotlin & Server

Slide 12

Slide 12 text

JVM Server ● パワフルなJVM ● 既存のライブラリが全て使用可能 ● Null Pointer Exceptionの排除

Slide 13

Slide 13 text

Coroutine fun onClick() = launch(UI) { val response = async(CommonPool) { Repository.getTimeline() } showTimeline(response.await()) } 非同期処理をかんたんに、コールバック地獄もなしに、書ける

Slide 14

Slide 14 text

● 100% KotlinのWebフレームワーク ● 100% 非同期 ● Coroutines from the ground up

Slide 15

Slide 15 text

experimental != unstable

Slide 16

Slide 16 text

Use. Coroutines. Now

Slide 17

Slide 17 text

Kotlin & Browser

Slide 18

Slide 18 text

Kotlin/JS JavaScript Moduleのサポート dynamic Type Definitely Typed Header

Slide 19

Slide 19 text

Kotlin/JS React Demo(ありません) goo.gl/YkYfk3

Slide 20

Slide 20 text

Kotlin & Android

Slide 21

Slide 21 text

No content

Slide 22

Slide 22 text

2.5x Google Playにアップロードされている Kotlinを使用したアプリ

Slide 23

Slide 23 text

17% Kotlinを使用するAndroid Studio プロジェクト

Slide 24

Slide 24 text

Android Studio 3.0 Android Support Library Annotations Android Kotlin Guides Android Kotlin Documentation

Slide 25

Slide 25 text

Android Studio 3.0 ● Kotlin Pluginが同梱 ● Kotlin Lintサポート ● Kotlinプロジェクトテンプレート

Slide 26

Slide 26 text

Android Support Library ● will support Kotlin Annotations from 27.0.0

Slide 27

Slide 27 text

goo.gl/knwckS Android Kotlin Guide

Slide 28

Slide 28 text

Android Kotlin Docs & Samples goo.gl/UWKfnc

Slide 29

Slide 29 text

Multiplatform Projects

Slide 30

Slide 30 text

Server Android Browser Kotlin/JVM Kotlin/JVM Kotlin/JS

Slide 31

Slide 31 text

No content

Slide 32

Slide 32 text

*.class *.js *.class *.js

Slide 33

Slide 33 text

共通のロジック プラットフォームに 依存した ロジック プラットフォームに 依存した ロジック

Slide 34

Slide 34 text

actual external class Date { … actual fun getFullYear(): Int … } expect class Date() { … fun getFullYear(): Int … } common actual class Date { private val calendar: Calendar … actual fun getFullYear() = calendar[YEAR] … } JVM JS

Slide 35

Slide 35 text

fun Pair.toReadableString(): String { … if (from.getDate() != to.getDate() || from.getMonth() != to.getMonth() || from.getFullYear() != to.getFullYear()) { … } … } common

Slide 36

Slide 36 text

Server Android Browser Kotlin/JVM Kotlin/JVM Kotlin/JS

Slide 37

Slide 37 text

Server Android Browser Kotlin/JVM Kotlin/JVM Kotlin/JS iOS Kotlin/Native

Slide 38

Slide 38 text

Kotlin & iOS

Slide 39

Slide 39 text

Native Binary LLVM

Slide 40

Slide 40 text

Kotlin/Native ● iOS ● macOS ● Windows ● Linux ● Android NDK ● WebAssembly

Slide 41

Slide 41 text

Server Android Browser Kotlin/Native Kotlin/Native Kotlin/Native iOS Kotlin/Native

Slide 42

Slide 42 text

Sample goo.gl/AQkK6S

Slide 43

Slide 43 text

Kotlin/Anywhere

Slide 44

Slide 44 text

Keynote #2

Slide 45

Slide 45 text

Party Keynote

Slide 46

Slide 46 text

What is a “Party Keynote”

Slide 47

Slide 47 text

No content

Slide 48

Slide 48 text

No content

Slide 49

Slide 49 text

No content

Slide 50

Slide 50 text

No content

Slide 51

Slide 51 text

まとめ

Slide 52

Slide 52 text

● Kotlinの利用は爆発的に伸びている ● Coroutine使おう ● どこでもKotlinを!