Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
まだJavaで消耗してるの?Kotlinのすすめ
Search
kazakago
May 19, 2017
Programming
0
170
まだJavaで消耗してるの?Kotlinのすすめ
Cluex社主催 LT大会 発表資料
kazakago
May 19, 2017
Tweet
Share
More Decks by kazakago
See All by kazakago
with_Android版における今までのアーキテクチャとこれから.pdf
kazakago
2
290
OpenSTFによる検証端末管理とその先の一手
kazakago
0
260
中規模以上のアプリ開発におけるCIレシピとリリースフロー戦略
kazakago
6
8.5k
Androidアプリにおける複雑な画面と向き合うための設計戦略
kazakago
1
290
Annotation Processingを 駆使したコード生成で ボイラープレートコードを駆逐しよう!
kazakago
2
6.5k
お う ち ハ ッ ク
kazakago
0
190
モバイルアプリ開発におけるブランチ運用でこの先生きのこるには
kazakago
0
110
Androidでユーザーの大切なデータを預かる
kazakago
0
1k
Other Decks in Programming
See All in Programming
DevNexus - Create AI Infused Java Apps with LangChain4j
kdubois
0
130
Honoをフロントエンドで使う 3つのやり方
yusukebe
7
3.6k
Django NinjaによるAPI開発の効率化とリプレースの実践
kashewnuts
1
290
Datadog Workflow Automation で圧倒的価値提供
showwin
1
310
ML.NETで始める機械学習
ymd65536
0
240
「個人開発マネタイズ大全」が教えてくれたこと
bani24884
1
290
クリーンアーキテクチャから見る依存の向きの大切さ
shimabox
5
1.1k
クックパッド検索システム統合/Cookpad Search System Consolidation
giga811
0
130
Swift Testingのモチベを上げたい
stoticdev
2
190
複数のAWSアカウントから横断で 利用する Lambda Authorizer の作り方
tc3jp
0
130
Domain-Driven Design (Tutorial)
hschwentner
13
22k
iOSでQRコード生成奮闘記
ktcryomm
2
120
Featured
See All Featured
Done Done
chrislema
182
16k
Building Your Own Lightsaber
phodgson
104
6.2k
Understanding Cognitive Biases in Performance Measurement
bluesmoon
27
1.6k
Designing on Purpose - Digital PM Summit 2013
jponch
117
7.1k
Fontdeck: Realign not Redesign
paulrobertlloyd
83
5.4k
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
227
22k
Making Projects Easy
brettharned
116
6k
Docker and Python
trallard
44
3.3k
The MySQL Ecosystem @ GitHub 2015
samlambert
250
12k
Optimizing for Happiness
mojombo
377
70k
Six Lessons from altMBA
skipperchong
27
3.6k
How to Ace a Technical Interview
jacobian
276
23k
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 ໊લ͕ͳΜͱͳ͔͘Θ͍͍ʢຊਓฒײʣ
͋Γ͕ͱ͏͍͟͝·ͨ͠