Slide 1

Slide 1 text

"Convert Java File to Kotlin File" ͷ؁͍᠘ 2017/08/22 Tue. ՆͷKotlin LTࡇ @ukaznil: Tatsuya KONISHI http://ukaznil.com/

Slide 2

Slide 2 text

࠷ۙɼ (Android)Kotlinք۾Ͱ Αࣖ͘ʹ͠·͢ɻ

Slide 3

Slide 3 text

,PUMJOະܦݧ ,PUMJO΍ͬͯΈ͍ͨͳʔɻ ڧ ͍ ਓ "OESPJE4UVEJP*OUFMMJ+*%&"Ͱɼ +BWB͔Β,PUMJOม׵Ͱ͖ΔΜͩɻ ,PUMJOະܦݧ ׻ت ΄Μͱʂʁɹ

Slide 4

Slide 4 text

΄ΜͱͰ͢ɻ ᶃ͜ΕΛ ᶄ͜͏ͯ͠ ?? < Good job!! ᶅ͜͏

Slide 5

Slide 5 text

ڧ ͍ ਓ "OESPJE4UVEJP*OUFMMJ+*%&"Ͱɼ +BWB͔Β,PUMJOม׵Ͱ͖ΔΜͩɻ ,PUMJOະܦݧ
 ڧؾ ɹ΄Μͱʂʁɹ *%&ศརʔʂɹ͕͢͞+FU#SBJOTʂʂ +BWB͔Βม׵Ͱ͖ΔͳΒ҆৺ͩͶʂ ެࣜϓϥάΠϯͩ͠ɻ ,PUMJOະܦݧ ,PUMJO΍ͬͯΈ͍ͨͳʔɻ ڧ ͍ ਓ ʜʜɻ

Slide 6

Slide 6 text

Ռͨͯ͠ɼ ຊ౰ʹͦ͏Ͱ͠ΐ͏͔ɻ şşş…… >

Slide 7

Slide 7 text

ͦ͏ʢ҆৺ʣ͡Όͳ͍Ͱ͢ɻ ᶃ͜ΕΛ ᶄ͜͏ͯ͠ ᶅ͜͏ < Stupid!!

Slide 8

Slide 8 text

ڧ ͍ ਓ "OESPJE4UVEJP*OUFMMJ+*%&"Ͱɼ +BWB͔Β,PUMJOม׵Ͱ͖ΔΜͩɻ ,PUMJOະܦݧ
 ڧؾ ɹ΄Μͱʂʁɹ *%&ศརʔʂɹ͕͢͞+FU#SBJOTʂʂ +BWB͔Βม׵Ͱ͖ΔͳΒ҆৺ͩͶʂ ެࣜϓϥάΠϯͩ͠ɻ ,PUMJOະܦݧ ,PUMJO΍ͬͯΈ͍ͨͳʔɻ ڧ ͍ ਓ ʜʜɻ ม׵ʹࣦഊ͢Δ͜ͱ΋͋Δ͔Βɼ ա৴͸ې෺ͳΜͩΑɻ ,PUMJOະܦݧ ઈ๬ ,PUMJOා͍ɻ,PUMJOා͘ͳ͍Α ,PUMJOා͘ͳ͍Α

Slide 9

Slide 9 text

Java → Kotlinʹ͍ͭͯɼ Πέͯͳ͍ͳʔʢϋϚΔͳʔʣ ͱࢥ͏ͱ͜ΖΛ঺հ͠·͢ɻ ※࣌ؒͷڐ͢ݶΓ ͬ͘͟Γ֓ཁ • Java → Kotlinʹೖ໳͍ͨ͠ਓ
 JavaΛ౿·ͣʹKotlinͷਓ͸ɼ
 ʮΘ͔ΔΘ͔Δʂʂʂʯͱ͸ͳΒͳ͍͔΋͠Ε·ͤΜ͕ɼ
 ࢀߟʹ͸ͳΔͱࢥ͍·͢ɻ •पғʹKotlinΛ෍ڭ͍ͨ͠ਓ λʔήοτ

Slide 10

Slide 10 text

it's me !! • Android app dev • झຯͰ5೥ڧ • Kotlinྺ1.5೥ • ೔ຊAndroidͷձ
 ֶੜ෦OB • ʢ࠷ۙSwift࢝Ίͨʣ • misc • name: Tatsuya KONISHI • web site: http://ukaznil.com/ , Twitter: @ukaznil • job: '17 ৽ଔ > γεςϜ։ൃ / AI Papyrus

Slide 11

Slide 11 text

Android Studio: 2.3.3 Kotlin Plugin: 1.1.3-release-Studio2.3-2 ݕূ؀ڥ 1. `get/setXXX` ͷࣗಈੜ੒ 2. ࠐΈೖͬͨ਺஋ͷܕਪ࿦ 3. มଶswitchߏจ X. nullableपΓʢ౰વ͋Δʣ ໨࣍

Slide 12

Slide 12 text

1. `get/setXXX` ͷࣗಈੜ੒ class Sample1(private val context: Context): ArrayAdapter(context, R.layout.hoge){ } class Sample1 extends ArrayAdapter { private final Context context; public Sample1(Context context) { super(context, R.layout.hoge); this.context = context; } } ʲݪҼʳ ܧঝݩͷArrayAdapterΫϥεʹ ArrayAdapter#getContext() ͳΔϝιου͕ଘࡏ͢Δ͕ɼKotlinͰ͸ϓϩύςΟ `XXX` ʹରͯ͠ɼ setXXX(), getXXX() ͳΔΞΫηα͕ࣗಈੜ੒͞ΕΔʢ࣮ࡍ͸ϑΟʔϧυ΋ʣͨΊɼিಥ͢Δɻ ಉ༷ʹɼϝιου `getText()` ͕͋ΔΫϥεʢex. TextViewʣΛܧঝͨࣗ͠࡞ͷΫϥεʹɼ ϓϩύςΟ `text` ͸࣋ͨͤΒΕͳ͍ɻ < `getContext()`͕িಥͯ͠Δͧʔ

Slide 13

Slide 13 text

2. ࠐΈೖͬͨ਺஋ͷܕਪ࿦ private fun sample2() { val score = Random().nextInt(10) val point = if (score > 7) 1 else 0.5 val result = point * 100 } private void sample2() { int score = new Random().nextInt(10); double point = (score > 7) ? 1 : 0.5; double result = point * 100; } ʲݪҼʳ Javaʹ͓͍ͯ͸ int ⊂ double ͕ͩͬͨɼKotlinͰ͸ಠཱͳͷͰɼ ʮฦΓ஋͕Int·ͨ͸DoubleʯˠʮฦΓ஋͸DoubleͰ·ͱΊ͓ͯ͜͏ʯਪ࿦͕ߦΘΕͳ͍ͨΊɻ KotlinͰ͸Ή͠Ζɼ ʮฦΓ஋͕Int·ͨ͸Doubleʯˠʢܧঝؔ܎ͷͳ͍ܕΛҰॹʹฦͯ͘͠ΔͳΑʣ →ʮฦΓ஋͸AnyͰ·ͱΊ͓ͯ͜͏ʯ ͱͳΔɻ ɹɹɹɹɹɹɹŇŇoʢ `toDouble()` Λ࢖͑͹ʣˠˠˠ < ifจͷฦΓ஋ͷܕ͕AnyʹͳͬͯΔͧʔ val point = if (score > 7) 1.toDouble() else 0.5 val result = point * 100

Slide 14

Slide 14 text

ʲݪҼʳ JavaͰ͸switchจͰ `default` Λઌʹॻ͘͜ͱ͕ڐ͞Ε͍͕ͯͨɼ KotlinͰ͸ͷ `else` ͸࠷ऴจʹ͠ͳ͍ͱౖΒΕΔɻ Javaͷ `final` ͱಉ͘͡ɼKotlinͰ΋ `msg` ͸ `val` ѻ͍Ͱ͖Δɻ ɹɹɹɹɹɹɹɹɹŇŇoʢ΋͏গ͚ͩ͠៉ྷʹॻ͚Δͳ͊ʣˠˠˠ 3. มଶswitchߏจ private fun sample3() { val score = Random().nextInt(4) val msg: String when (score) { else -> msg = "terrible..." 3 -> msg = "awesome !!!" } } private void sample3() { int score = new Random().nextInt(4); final String msg; switch (score) { default: msg = "terrible..."; break; case 3: msg = "awesome !!!"; break; } } < `else` ͸࠷ޙʹॻ͔ͳ͍ͱμϝͩͧʔ val msg = when (score) { 3 -> "awesome !!!" else -> "terrible..." }

Slide 15

Slide 15 text

·ͱΊ • "Convert Java File to Kotlin File"Ͱੜ੒͞ΕͨKotlin͸ ʮͳΜͪΌͬͯ͜ͱΓΜʯɻա৴͸ې෺ɻ • Ͱ΋ษڧʹ͸ͳΔɻॿ͔Δɻ • ίϯόʔλ͕௥͍͔ͭͳ͍ఔɼ
 Kotlinʹ͸ૉ੖Β͍͠ػೳ͕͋ΔʢϙδςΟϒʣɻ

Slide 16

Slide 16 text

"Convert Java File to Kotlin File" ͷ؁͍᠘ 2017/08/22 Tue. ՆͷKotlin LTࡇ @ukaznil: Tatsuya KONISHI http://ukaznil.com/ That's all of

Slide 17

Slide 17 text

Thank you, Kotlinists !! ʢݺͼํ෼͔Δਓڭ͍͑ͯͩ͘͞ʂসʣ