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
280
OpenSTFによる検証端末管理とその先の一手
kazakago
0
250
中規模以上のアプリ開発におけるCIレシピとリリースフロー戦略
kazakago
6
8.1k
Androidアプリにおける複雑な画面と向き合うための設計戦略
kazakago
1
290
Annotation Processingを 駆使したコード生成で ボイラープレートコードを駆逐しよう!
kazakago
2
6.2k
お う ち ハ ッ ク
kazakago
0
180
モバイルアプリ開発におけるブランチ運用でこの先生きのこるには
kazakago
0
100
Androidでユーザーの大切なデータを預かる
kazakago
0
990
Other Decks in Programming
See All in Programming
3 Effective Rules for Using Signals in Angular
manfredsteyer
PRO
1
100
レガシーシステムにどう立ち向かうか 複雑さと理想と現実/vs-legacy
suzukihoge
14
2.2k
Generative AI Use Cases JP (略称:GenU)奮闘記
hideg
1
290
【Kaigi on Rails 2024】YOUTRUST スポンサーLT
krpk1900
1
330
3rd party scriptでもReactを使いたい! Preact + Reactのハイブリッド開発
righttouch
PRO
1
600
as(型アサーション)を書く前にできること
marokanatani
9
2.6k
AI時代におけるSRE、 あるいはエンジニアの生存戦略
pyama86
6
1.1k
Nurturing OpenJDK distribution: Eclipse Temurin Success History and plan
ivargrimstad
0
880
Ethereum_.pdf
nekomatu
0
460
Remix on Hono on Cloudflare Workers
yusukebe
1
280
.NET のための通信フレームワーク MagicOnion 入門 / Introduction to MagicOnion
mayuki
1
1.5k
Webの技術スタックで マルチプラットフォームアプリ開発を可能にするElixirDesktopの紹介
thehaigo
2
1k
Featured
See All Featured
Being A Developer After 40
akosma
86
590k
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
27
840
Measuring & Analyzing Core Web Vitals
bluesmoon
4
120
Embracing the Ebb and Flow
colly
84
4.5k
How to Think Like a Performance Engineer
csswizardry
20
1.1k
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
356
29k
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
329
21k
What's in a price? How to price your products and services
michaelherold
243
12k
Designing Experiences People Love
moore
138
23k
Making the Leap to Tech Lead
cromwellryan
133
8.9k
Building Applications with DynamoDB
mza
90
6.1k
The World Runs on Bad Software
bkeepers
PRO
65
11k
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 ໊લ͕ͳΜͱͳ͔͘Θ͍͍ʢຊਓฒײʣ
͋Γ͕ͱ͏͍͟͝·ͨ͠