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
190
まだJavaで消耗してるの?Kotlinのすすめ
Cluex社主催 LT大会 発表資料
kazakago
May 19, 2017
Tweet
Share
More Decks by kazakago
See All by kazakago
with_Android版における今までのアーキテクチャとこれから.pdf
kazakago
2
310
OpenSTFによる検証端末管理とその先の一手
kazakago
0
280
中規模以上のアプリ開発におけるCIレシピとリリースフロー戦略
kazakago
6
9k
Androidアプリにおける複雑な画面と向き合うための設計戦略
kazakago
1
310
Annotation Processingを 駆使したコード生成で ボイラープレートコードを駆逐しよう!
kazakago
2
7k
お う ち ハ ッ ク
kazakago
0
210
モバイルアプリ開発におけるブランチ運用でこの先生きのこるには
kazakago
0
130
Androidでユーザーの大切なデータを預かる
kazakago
0
1k
Other Decks in Programming
See All in Programming
CJK and Unicode From a PHP Committer
youkidearitai
PRO
0
100
rage against annotate_predecessor
junk0612
0
150
Oracle Database Technology Night 92 Database Connection control FAN-AC
oracle4engineer
PRO
1
360
KessokuでDIでもgoroutineを活用する / Go Connect #6
mazrean
0
130
開発チーム・開発組織の設計改善スキルの向上
masuda220
PRO
18
9.6k
Go言語での実装を通して学ぶLLMファインチューニングの仕組み / fukuokago22-llm-peft
monochromegane
0
110
詳解!defer panic recover のしくみ / Understanding defer, panic, and recover
convto
0
210
さようなら Date。 ようこそTemporal! 3年間先行利用して得られた知見の共有
8beeeaaat
0
210
ソフトウェアテスト徹底指南書の紹介
goyoki
1
130
パスタの技術
yusukebe
1
560
HTMLの品質ってなんだっけ? “HTMLクライテリア”の設計と実践
unachang113
1
690
TanStack DB ~状態管理の新しい考え方~
bmthd
2
410
Featured
See All Featured
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
131
19k
Automating Front-end Workflow
addyosmani
1370
200k
The Art of Programming - Codeland 2020
erikaheidi
55
13k
How GitHub (no longer) Works
holman
315
140k
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
333
22k
Designing for Performance
lara
610
69k
The MySQL Ecosystem @ GitHub 2015
samlambert
251
13k
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
32
1.5k
Why You Should Never Use an ORM
jnunemaker
PRO
59
9.5k
Product Roadmaps are Hard
iamctodd
PRO
54
11k
Embracing the Ebb and Flow
colly
87
4.8k
Put a Button on it: Removing Barriers to Going Fast.
kastner
60
4k
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 ໊લ͕ͳΜͱͳ͔͘Θ͍͍ʢຊਓฒײʣ
͋Γ͕ͱ͏͍͟͝·ͨ͠