Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Speaker Deck
PRO
Sign in
Sign up for free
まだJavaで消耗してるの?Kotlinのすすめ
kazakago
May 19, 2017
Programming
0
160
まだJavaで消耗してるの?Kotlinのすすめ
Cluex社主催 LT大会 発表資料
kazakago
May 19, 2017
Tweet
Share
More Decks by kazakago
See All by kazakago
with_Android版における今までのアーキテクチャとこれから.pdf
kazakago
2
250
OpenSTFによる検証端末管理とその先の一手
kazakago
0
140
中規模以上のアプリ開発におけるCIレシピとリリースフロー戦略
kazakago
6
6.2k
Androidアプリにおける複雑な画面と向き合うための設計戦略
kazakago
1
250
Annotation Processingを 駆使したコード生成で ボイラープレートコードを駆逐しよう!
kazakago
2
4.5k
お う ち ハ ッ ク
kazakago
0
140
モバイルアプリ開発におけるブランチ運用でこの先生きのこるには
kazakago
0
66
Androidでユーザーの大切なデータを預かる
kazakago
0
910
Other Decks in Programming
See All in Programming
AWSとCPUのムフフな関係
cmdemura
0
480
An Advanced Introduction to R
nicetak
0
1.8k
Becoming an Android Librarian (Android World Wide 2023 Jan)
skydoves
2
230
Findy - エンジニア向け会社紹介 / Findy Letter for Engineers
findyinc
2
42k
[2023년 1월 세미나] 데이터 분석가 되면 어떤 일을 하나요?
datarian
0
650
はじめての「R」
masaha03
0
100
Git Rebase
bkuhlmann
10
1.2k
AWSにおける標的型Bot対策
hacomono
0
440
Rust、何もわからない...#6発表資料
ryu19
0
140
監視せなあかんし、五大紙だけにオオカミってな🐺🐺🐺🐺🐺
sadnessojisan
2
1.6k
Amazon QuickSightのアップデート -re:Invent 2022の復習&2022年ハイライト-
shogo452
0
250
How to Fight Production Incidents?
asatarin
0
230
Featured
See All Featured
YesSQL, Process and Tooling at Scale
rocio
159
12k
How to train your dragon (web standard)
notwaldorf
66
4.3k
The Cult of Friendly URLs
andyhume
69
5.1k
Testing 201, or: Great Expectations
jmmastey
25
5.7k
ParisWeb 2013: Learning to Love: Crash Course in Emotional UX Design
dotmariusz
101
6.2k
Infographics Made Easy
chrislema
235
17k
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
227
16k
The Art of Programming - Codeland 2020
erikaheidi
36
11k
Product Roadmaps are Hard
iamctodd
38
7.7k
Optimizing for Happiness
mojombo
365
64k
Design by the Numbers
sachag
271
18k
Happy Clients
brianwarren
90
5.8k
Transcript
·ͩ+BWBͰফͯ͠Δͷʁ ɹɹɹɹɹͷ͢͢Ί
ࣗݾհ w ాଜݠհʢ!,B[B,BHPʣ w גࣜձࣾΠάχεॴଐ w ࿀Ѫɾࠗ׆ϚονϯάαʔϏε ʮXJUIʯ։ൃϝϯόʔ w "OESPJE։ൃྺɿ͍͍ͩͨ͘Β͍
ࣗݾհ
8IBU`Tɹɹɹɹɹ
ɹɹɹɹɹͬͯԿʁ w +FU#SBJOT͕ࣾ։ൃͨ͠+BWBશޓݴޠ w *OUFMMJK*%&"3VCZ.JOFɺ1IQ4UPSNͳͲͷ*%&ʢ౷߹։ൃ ڥʣΛ࡞ͬͯΔνΣίʹ͋Δձࣾ w ݱࡏͷόʔδϣϯ w Φʔϓϯιʔε
"QBDIFϥΠηϯε
"OESPJEͷୈҰݴޠʹʂ ࡢʢʂʣ(PPHMF*0ʹͯ "OESPJE։ൃͷୈҰڃݴޠʹͳΔͱൃද͞Ε·ͨ͠
ͷ ྑ͍ͱ͜Ζ
ಋೖͷෑډͷ͞ w (SBEMF.BWFOͳͲͷҰൠతͳϏϧυπʔϧΛಋ ೖ͍ͯ͠Ε͙͢ʹಋೖՄೳ w "OESPJEϓϩδΣΫτͳΒ΄΅ͯ͢ͷϓϩδΣΫτͰಋೖՄೳ w *OUFMMJK*%&"ͰϋΠϨϕϧͳαϙʔτ͕͞Ε͍ͯͯ +BWBˠ,PUMJOͷίϯόʔλʔଐ͞Ε͓ͯΓɺͦ Ε͕͔ͳΓ༏ल
w "OESPJE4UVEJP*OUFMMJK*%&"ޓͰ+FUCSBJOT͕ࣾ࡞͍ͬͯΔ
4QSJOH'SBNFXPSL
ܕਪ ม+BWBͱҧ͍WBSͱ͍͏҉తͳܕએݴΛߦ͏ɻ ίʔυͷ࠷ޙʹʮʯΛ͚Δඞཁͳ͍ɻ w +BWB String value = new String("JavaͩΑʔʂ");
w ,PUMJO var value = String("KotlinͩΑʔʂ")
ܕਪ KBWBʹ͓͚ΔpOBMम০ࢠ,PUMJOͰWBMͱ͍͏มએݴͰه ड़͢Δɻ WBMͰ͍͍ͱ͜ΖΛWBSͰهड़͢Δͱ*%&͔Βܯࠂදࣔ͞Ε ΔͨΊKBWBΑΓpOBM͕పఈͰ͖Δʢؾ͕͢Δʣ w +BWB final String value
= new String("JavaͩΑʔʂ"); w ,PUMJO val value = String("KotlinͩΑʔʂ")
ϥϜμࣜ ,PUMJOͰϥϜμ͕ࣜ͑Δɻ "OESPJEͷϘλϯΠϕϯτ+BWBͰҎԼͷΑ͏ʹ͜͏ ॻ͕͘ɺɺɺ w +BWB +BWB Button button
= new Button(this); button.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { System.out.print("Ϙλϯԡ͞Εͨʂ"); } });
ϥϜμࣜ ,PUMJOͰ͜͏ɻ w ,PUMJO val button = Button(this) button.setOnClickListener {
print("Ϙλϯԡ͞Εͨʂ") }
/VMM҆શ +BWBͩͱωετ͞Εͨਂ͍֊ͷมΛऔΓग़ͦ͏ ͱ͢ΔͱҎԼͷΑ͏ͳίʔυʹͳΔɻ ͜Μͳ࣌ʹى͜Γ͕ͪͳͷ͕ɺɺ w +BWB ObjectD getObjectD(ObjectA objectA) {
return objectA.getObjectB().getObjectC().getObjectD(); }
/VMM҆શ NullPointerException
/VMM҆શ w +BWB ObjectD getObjectD(ObjectA objectA) { if (objectA !=
null) { ObjectB objectB = objectA.getObjectB(); if (objectB != null) { ObjectC objectC = objectB.getObjectC(); if (objectC != null) { return objectC.getObjectD(); } } } return null; }
/VMM҆શ
/VMM҆શ ,PUMJOͰಉͷίʔυΛॻ͘߹ϫϯϥΠφʔͰॻ͚ Δ w ,PUMJO fun getObjectD(objectA: ObjectA?): ObjectD? {
return objectA?.objectB?.objectC?.objectD }
/VMM҆શ w Λ͚ͭΔͱ/VMMΛೖͰ͖Δ var value: String? = null w Λ͚ͭͳ͍ͱ/VMMΛೖͰ͖ͳ͍
var value: String = "hogehoge"
֦ுؔ w طଘͷΫϥεΠϯελϯεʹϝιουΛੜ͢͜ͱ ͕ग़དྷΔ fun Int.isEvenNumber(): Boolean { return (this
% 2 == 0) } ˣ val counter: Int = 1 val isEven = counter.isEvenNumber()
ͦͷଞʹʜ w ίϧʔνϯ w σϑΥϧτҾ w ετϦʔϜૢ࡞ؔ w σʔλΫϥε w
ඇݕࠪྫ֎ w KBWBTDSJQUͷτϥΠϯεύΠϧ w ,PUMJO/BUJWF w FUD
ͷ l·ͩzྑ͘ͳ͍ͱ͜Ζ
+BWBͷࣝඞཁ w +BWBˡˠ,PUMJOͰ૬ޓʹ͑Δ͕Ώ͑ʹݴޠΛ·ͨ ͙ࡍʹ֮͑ͯஔ͔ͳ͚ΕͳΒͳ͍͓࡞๏ଟ͍ɻ w ಛʹϑϨʔϜϫʔΫ͕+BWBͰॻ͔Ε͍ͯΔ߹͔ ͳΓҙ͢Δඞཁ͕͋Γɻ w +BWBͷ͕ࣝͳ͍ͱͳͥΤϥʔ͕ൃੜ͍ͯ͠Δͷ ͔அ͕͍͜͠ͱ͋Δ
Ұ෦ͷϥΠϒϥϦ ͏·͘ಈ࡞͠ͳ͍ࣄ͕͋Δ w ΄ͱΜͲͷϥΠϒϥϦͳ͘ಈ࡞͢Δ͕ɺίʔ υͷࣗಈੜΛߦ͏ϥΠϒϥϦҰ෦ಛघͳॻ͖ํ Λ͠ͳ͍ͱಈ࡞͠ͳ͍͜ͱ͕͋Δ w +BWBϥΠϒϥϦͩͱ,PUMJOతʹͳهड़Λͤ͟ ΔΛಘͳ͍͜ͱ͕͋Δ
ͷ ·ͱΊ
·ͱΊ w +BWBΑΓݴޠ্༷ʹ҆શ͔ͭ؆ܿʹॻ͚Δ w طଘͷ+BWBͱࠞࡏͰ͖ɺίϯόʔλʔ͋ΔͨΊ Ҡߦൺֱత༰қ w ॳֶऀ+BWB͔Βֶश͖͢ w ໊લ͕ͳΜͱͳ͔͘Θ͍͍ʢຊਓฒײʣ
͋Γ͕ͱ͏͍͟͝·ͨ͠