Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
코틀린 어떻게 적용할까?
Search
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
TaeHwan
September 23, 2017
Programming
2k
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
코틀린 어떻게 적용할까?
Android TipTipTip
TaeHwan
September 23, 2017
More Decks by TaeHwan
See All by TaeHwan
Compose 함수 나누는 조건은?
taehwandev
0
4.6k
Android MVVM 패턴의 접근법 - 2023 드로이드 나이츠
taehwandev
1
2k
안드로이드의 변화 - IO Extended 2023 - 송도
taehwandev
0
690
What’s new in Android?(Google IO ex 23-GDG Pangyo)
taehwandev
0
970
Jetpack Compose 상태 및 사이드 효과
taehwandev
0
1.3k
GDG DevFest2022 Songdo - KMM(Kotlin Multiplatform Mobile)
taehwandev
0
680
Kotlin Night 2022 - 코틀린 어노테이션으로 할 수 있는 것(GDG Seoul)
taehwandev
2
1.7k
Android module 개발 - Now in android 참고
taehwandev
3
18k
Android Compose Component - mapping.
taehwandev
2
5k
Other Decks in Programming
See All in Programming
From 6 People Classroom Meetup to 100 People Regional Conference / FOSS4G Hiroshima 2026
furukawayasuto
0
130
【高い買い物LT会】初任給で話題の国産フィジカルAIを買った話
akagami
PRO
0
140
自分的「カンファレンスの楽しみ方」
syumai
0
200
Webの地図
yosuke_furukawa
PRO
6
4.1k
Intent as Code
shoppingjaws
6
840
{ Android | Kotlin } Gradle Plugin in 2026
ryunen344
1
300
Building an Out-of-Order CPU
latte72
1
750
一参加者から『中の人』へ 〜全通PHPerがブースに立って学んだ、カンファレンスを100倍楽しむコツ〜
wp_daisuke
0
140
フロントエンドUIフレームワークのこれまでとこれから
ssssota
5
2.4k
tsc.rip を支える技術 / Kyoto.なんか #8
susisu
0
4.4k
AWS Step Functions 大規模並列の壁を越える / jaws-sonic-2026-niigata-step-functions
kasacchiful
PRO
1
430
XP祭りでしか伝わらないフリップネタ #xpjug
murabayashi
0
130
Featured
See All Featured
Music & Morning Musume
bryan
47
7.4k
Side Projects
sachag
456
43k
Producing Creativity
orderedlist
PRO
348
41k
Leveraging LLMs for student feedback in introductory data science courses - posit::conf(2025)
minecr
1
380
Site-Speed That Sticks
csswizardry
13
1.5k
StorybookのUI Testing Handbookを読んだ
zakiyama
31
6.9k
The Web Performance Landscape in 2024 [PerfNow 2024]
tammyeverts
12
1.3k
Thoughts on Productivity
jonyablonski
76
5.4k
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
32
4.7k
The Curse of the Amulet
leimatthew05
2
14k
VelocityConf: Rendering Performance Case Studies
addyosmani
331
25k
The Cult of Friendly URLs
andyhume
79
7k
Transcript
ౣܽ যڌѱ ਊೡө? ౣܽ যڌѱ ਊೡө? thdev.tech, 2017 1
ࣗѐ — ӂకജ — RGPKorea ਃӝਃ উ٘۽٘ ѐߊ —
GDG Seoul Organizer — ਬؘ : ౣܽ दೞӝ — ࠶۽Ӓ : Է ݆ ѐߊо غ ౣܽ যڌѱ ਊೡө? thdev.tech, 2017 2
ౣܽۆ? ౣܽ যڌѱ ਊೡө? thdev.tech, 2017 3
ౣܽۆ? — 2011֙ ࣗѐ — ઇ࠳ۨੋীࢲ ઁ — 2016֙
1.0 ߓನ റ 1.1.50 ߡө ߓನ — উ٘۽٘ ҕध য(Java/Kotlin) ౣܽ যڌѱ ਊೡө? thdev.tech, 2017 4
ࢿ — JDK 6/7/8/9 ਗਵ۽ Java৬ ֫ ഐജࢿ — JDK
6/7ਸ ా೧ Android ҳ ߡਸ ழߡ — উ٘۽٘ झౚ٣য়ܳ ాೠ ৮߷ೠ ో݂җ ࠽٘ दझమ ઁҕ — ۽о٘ ਊ оמ ౣܽ যڌѱ ਊೡө? thdev.tech, 2017 5
ࢿמ — Java৬ ਬࢎೠ ഋక bytecode ҳઑ۽ ੋ೧ ࡅܰѱ জ
ز — extension function/safety null/Lambda ౣܽ যڌѱ ਊೡө? thdev.tech, 2017 6
Learning Curve — Java ѐߊۄݶ ־ҳա ਊ оמ —
ز ஶߡਸ ాೠ ౣܽ ൨ оמ — Javaܳ ݽܰݶ ؊ۄب ࢎਊೞӝ औח ঋ — ҡଳ Best Practices ࠗ ౣܽ যڌѱ ਊೡө? thdev.tech, 2017 7
Kotlin णೞӝ ౣܽ যڌѱ ਊೡө? thdev.tech, 2017 8
ޙࢲܳ ࠄ — ޙࢲ݅ఀ જ Ѥ হযਃ ౣܽ যڌѱ ਊೡө?
thdev.tech, 2017 9
଼ਸ ࠄ — ޙࢲٜ ౣܽ যڌѱ ਊೡө? thdev.tech, 2017 10
ೠӖ ܐܳ ࠄ — ߣࢲ, ழפש ଼, ҍ աৢ ౣܽ
ࢲٜ ౣܽ যڌѱ ਊೡө? thdev.tech, 2017 11
ਬؘ ъܳ ࠄ — $15 ಪ : ҍ সؘ(9ਘ ݈
or 10ਘ ୡ ) ౣܽ যڌѱ ਊೡө? thdev.tech, 2017 12
kotlin ۽ં दೞӝ ౣܽ যڌѱ ਊೡө? thdev.tech, 2017 13
Try kotlinਵ۽ दೞӝ — kotlin ࢎীࢲ ઁҕೞח try.kotlinlang.org ౣܽ যڌѱ
ਊೡө? thdev.tech, 2017 14
࢜۽ ۽ં৬ ೣԋ द — AS 3.0ীࢲ kotlin ۽ં۽ दೠ
ౣܽ যڌѱ ਊೡө? thdev.tech, 2017 15
Java ۽ં ജೞӝ ౣܽ যڌѱ ਊೡө? thdev.tech, 2017 16
Java ۽ં ജೞӝ — UIࠗఠ ೡө? — data classࠗఠ ೡө?
— ࢜۽ ಕܳ ୶оೞݶࢲ ೯ೡө? — ܻಂష݂ ೞݶࢲ ೡө? ౣܽ যڌѱ ਊೡө? thdev.tech, 2017 17
ח ۧѱ ೮যਃ ౣܽ যڌѱ ਊೡө? thdev.tech, 2017 18
ח ۧѱ ೮যਃ — ࢠ ۽ં ઁ — kotlin ҙ۲
࠶۽Ӓ ࢿ — ਬؘ ъ ઁ — ഥࢎীࢲ पઁ ਊ ౣܽ যڌѱ ਊೡө? thdev.tech, 2017 19
ח ۧѱ ೮যਃ - ഥࢎীࢲ ਊೞӝ — ࢜۽ ਊೞח Activity/Fragment
ӝળਵ۽ ਊ — ੌױ ߄۽ ࢿ೧ਃ — command + option + shift + k۽ ജ — ৮߷ ߸ജೞ ঋਵפ ੌࠗ ٘ܳ ࣚࠇפ — android extensionب ೣԋ ਊפ.(UI ࢎਊ ಞࢿ) — ޙࢲب ࠁҊ, ࢠب ٜ݅Ҋ ౣܽ যڌѱ ਊೡө? thdev.tech, 2017 20
ח ۧѱ ೮যਃ - ഥࢎীࢲ ਊೞӝ — ಕয ۽Ӓې߁ਸ ా೧
ਊ೮যਃ — MVVMਸ ೣԋ ਊ — ఃࠁ٘ח 2ѐܳ ֬Ҋ — ীࢲ ੑ٬җ ࢲ۽ ঌ۰ݶࢲ ೯ — ೠ ׳ р ೯ ౣܽ যڌѱ ਊೡө? thdev.tech, 2017 21
ਊೞݶࢲ ೡ ౣܽ যڌѱ ਊೡө? thdev.tech, 2017 22
null ܻী ೞࣁਃ // class name String.kt fun merge(a: String,
b: String) = "$a $b" ౣܽ যڌѱ ਊೡө? thdev.tech, 2017 23
null ܻী ೞࣁਃ - javaীࢲ ࠗܳ ٸ // class name
String.kt fun merge(a: String, b: String) = "$a $b" public class Sample { @Test public void sample() { System.out.println("merge " + StringKt.merge("A", "B")); } } ౣܽ যڌѱ ਊೡө? thdev.tech, 2017 24
null ܻী ೞࣁਃ - javaীࢲ ࠗܳ ٸ // class name
String.kt fun merge(a: String, b: String) = "$a $b" public class Sample { private String a = "A"; private String b = "B"; @Before public void setUp() { a = null; } @Test public void sample() { System.out.println("merge " + StringKt.merge(a, b)); } } ౣܽ যڌѱ ਊೡө? thdev.tech, 2017 25
null ܻী ೞࣁਃ - javaীࢲ ࠗܳ ٸ // class name
String.kt fun merge(a: String, b: String) = "$a $b" public class Sample { private String a = "A"; private String b = "B"; @Before public void setUp() { a = null; } @Test public void sample() { System.out.println("merge " + StringKt.merge(a, b)); // java.lang.IllegalArgumentException: // Parameter specified as non-null is null: // method tech.thdev.myapplication.StringKt.merge } } ౣܽ যڌѱ ਊೡө? thdev.tech, 2017 26
উೞѱ ܻೞӝ ਤ೧ࢲ — nullable ܻ — ? ೞաݶ ܻ
оמ // class name String.kt fun merge(a: String?, b: String?) = "$a $b" ౣܽ যڌѱ ਊೡө? thdev.tech, 2017 27
elvis operator String merge(String a, String b) { return (a
!= null ? a : "a") + " " + (b != null ? b : "b"); } a != null ? a : "a" ౣܽ যڌѱ ਊೡө? thdev.tech, 2017 28
elvis operator -> java String merge(String a, String b) {
return (a != null ? a : "a") + " " + (b != null ? b : "b"); } a != null ? a : "a" -> kotlin fun merge(a: String?, b: String?) = "${a ?: "a"} ${b ?: "b"}" a ?: "a" ౣܽ যڌѱ ਊೡө? thdev.tech, 2017 29
ਬਊೠ ޙߨٜ — let : null ী ۽ ࢎਊೞחؘ value(data)ীࢲ݅
ೞח ѱ જ ইਃ — apply : ࢤࢿҗ زदী ਊೡ ٸ ਬਊ೧ਃ — run : ࢤࢿೠ View ژח ёী Ӕೡ ٸ ਬਊ೧ਃ — with() : Viewী ࢎਊೡ ٸ? — also : ё copy — takeIf : if ݶ return or null — takeUnless : ifо ইפݶ return or null ౣܽ যڌѱ ਊೡө? thdev.tech, 2017 30
ೣࣻ ഛ fun View.onBindView() { tv_title.text = "TITLE" // ...
} ౣܽ যڌѱ ਊೡө? thdev.tech, 2017 31
Higher-Order Functions class Sample { fun test() { higherOrder {
(a, b) -> a + b } } fun higherOrder(sum: (Int, Int) -> Int) = sum(10, 20) } ౣܽ যڌѱ ਊೡө? thdev.tech, 2017 32
data class public final class UserInfo { private String name;
private int age; public UserInfo(String name, int age) { this.name = name; this.age = age; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public String toString() { return "UserInfo(name=" + this.name + ", age=" + this.age + ")"; } public int hashCode() { return (this.name != null?this.name.hashCode():0) * 31 + this.age; } public boolean equals(Object var1) { if (obj == this) return true; if (!(obj instanceof UserInfo)) { return false; } UserInfo userInfo = (UserInfo) obj; return userInfo.name.equals(name) && userInfo.age == age; } } ౣܽ যڌѱ ਊೡө? thdev.tech, 2017 33
data class — ցޖ ӡয — ࠁউਸ ਤೠ hashCode, equalsח
যঠ ೣ — get/setب ਃೣ ౣܽ যڌѱ ਊೡө? thdev.tech, 2017 34
data class — ցޖ ӡয — ࠁউਸ ਤೠ hashCode, equalsח
যঠ ೣ — get/setب ਃೣ -> kotlin data class ਊਵ۽ ೠߑী ೧Ѿ ౣܽ যڌѱ ਊೡө? thdev.tech, 2017 35
data class data class UserInfo(var name: String?, var age: Int?)
ౣܽ যڌѱ ਊೡө? thdev.tech, 2017 36
Ӓېࢲ? — ౣܽ જইਃ. — ח ب۽ ࢎਊ೮যਃ wakatime
ౣܽ যڌѱ ਊೡө? thdev.tech, 2017 37
Ӓېࢲ? — ഥࢎীࢲ ਊೞݶࢲ ҕࠗೞח ѱ о જҊ — kotlin
ਊ റ javaо ҾӘೞݶ ٣ஹੌ ೞӝ — ੌױ javaۢ ࢿೞݶࢲ ҕࠗೞࣁਃ. ౣܽ যڌѱ ਊೡө? thdev.tech, 2017 38