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
なぜAndroid開発にKotlinを選んだか
Search
M.Inomata
September 08, 2016
Technology
3
2.1k
なぜAndroid開発にKotlinを選んだか
ギルドカンファレンス2016の発表資料です。
M.Inomata
September 08, 2016
Tweet
Share
More Decks by M.Inomata
See All by M.Inomata
20221005_AI勉強会
ecoopnet
0
540
20220112_AI勉強会
ecoopnet
0
550
AI最新論文読み会2021年11月
ecoopnet
0
350
AI最新論文読み会2021年5月
ecoopnet
0
540
AI最新論文読み会2020年12月
ecoopnet
0
400
AI最新技術Update会 8月
ecoopnet
0
470
医療ディープラーニング勉強会 DL勉強会 第3回 2020.4
ecoopnet
0
520
Kotlin Coroutines ことはじめ
ecoopnet
2
330
ハマった時に役立つ通信系デバッグの話
ecoopnet
3
1.7k
Other Decks in Technology
See All in Technology
品質視点から考える組織デザイン/Organizational Design from Quality
mii3king
0
200
Android Audio: Beyond Winning On It
atsushieno
0
110
Obsidian応用活用術
onikun94
2
490
AI開発ツールCreateがAnythingになったよ
tendasato
0
130
「全員プロダクトマネージャー」を実現する、Cursorによる仕様検討の自動運転
applism118
21
10k
S3アクセス制御の設計ポイント
tommy0124
3
200
機械学習を扱うプラットフォーム開発と運用事例
lycorptech_jp
PRO
0
230
Aurora DSQLはサーバーレスアーキテクチャの常識を変えるのか
iwatatomoya
1
930
複数サービスを支えるマルチテナント型Batch MLプラットフォーム
lycorptech_jp
PRO
0
330
今!ソフトウェアエンジニアがハードウェアに手を出すには
mackee
12
4.7k
Automating Web Accessibility Testing with AI Agents
maminami373
0
1.2k
企業の生成AIガバナンスにおけるエージェントとセキュリティ
lycorptech_jp
PRO
2
160
Featured
See All Featured
Bash Introduction
62gerente
615
210k
Making the Leap to Tech Lead
cromwellryan
135
9.5k
Thoughts on Productivity
jonyablonski
70
4.8k
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
eileencodes
26
3k
Faster Mobile Websites
deanohume
309
31k
4 Signs Your Business is Dying
shpigford
184
22k
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
31
2.5k
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
34
3.1k
How GitHub (no longer) Works
holman
315
140k
Docker and Python
trallard
45
3.6k
Facilitating Awesome Meetings
lara
55
6.5k
We Have a Design System, Now What?
morganepeng
53
7.8k
Transcript
ͳͥAndroid։ൃʹ KotlinΛબΜ͔ͩ?
ࣗݾհ • גࣜձࣾtech vein(ςοΫϕΠϯ) දऔకΤϯδχΞ ழມɹॆԝ(͍ͷ·ͨɹΈͭͻΖ) • http://www.tech-vein.com/ • twitter:
@ino2222
tech vein(ςοΫϕΠϯ)ͱ͍͏ डୗ։ൃձࣾΛӡӦ͍ͯ͠·͢ http://www.tech-vein.com/
AndroidΞϓϦ։ൃڥ • IDE … Android Studio (Eclipse ADT ։ൃऴྃ)
• ݴޠ • Java 7 • Java 8 • Kotlin • AltJava(Groovy, Scala, etc) • Swift?
AndroidΞϓϦ։ൃڥ • IDE … Android Studio (Eclipse ADT ։ൃऴྃ)
• ݴޠ • Java 7 … ͍··Ͱͷओྲྀ(2016-07·Ͱ) • Java 8 … ͜Ε͔Β(2016-08ʙ)ओྲྀʹͳΔ͔ʁ • Kotlin … ͜Ε͔ΒओྲྀʹͳΔ͔ʁ(ࠓճ࠾༻ͨ͠ݴޠ) • ଞͷAltJava(Groovy, Scala, etc) … Android࠾༻ͮ͠Β͍ • Swift? … Ұ࣌ظʹͳͬͨɻͱΓ͋͑ͣίϯύΠϧͯ͠JNI ͰࢀরͰ͖ͨɺͱ͍͏Ϩϕϧ
ͳͥAndroid։ൃʹ KotlinΛબΜ͔ͩ • Swift, ScalaͷΑ͏ͳϞμϯͳ(ؔܕతͳ)ݴޠ • Java7͕ͭΒ͔ͬͨɻJava8͕͑ΔΑ͏ʹͳ͚ͬͨͲɺ·ͩݶఆత (ϥϜμࣜɺϝιουࢀর͚ͩ) • IDE։ൃݩͷɺJetBrainsࣾʹΑΔڧྗͳαϙʔτ
• Javaͱͷޓੑ͕ߴ͍ • 20163݄ʹKotlin ver1.0͕ਖ਼ࣜϦϦʔε͞Εͨ • طʹಋೖࣄྫ͋ͬͨ
iOS ։ൃ Swiftʹ͍ͭͯ • 2014·ͰiOS։ൃͱ͍͑ObjectiveCͩͬͨɻ • 2014ʹApple͕SwiftݴޠΛൃදޙɺঃʑʹීٴɻ • 2016ݱࡏ͔ͬ͢ΓSwift͕ओྲྀʹɻ •
SwiftҎલͷObjective CͳΞϓϦɺେ͖ͳϦχϡʔΞϧͷλΠϛϯάͰ SwiftʹҠߦ͍ͯ͠Δ • ObjC։ൃͰ͖ͳ͍͚ͲɺSwiftͳΒͰ͖ͦ͏ɺͱ͍͏ࣄͰiOSΤϯδχΞ͕ ૿͍͑ͯΔ • SwiftൃදҎདྷɺAndroid Ͱ Swift ͷΑ͏ͳݴޠֵ໋͕ظ͞Ε͖ͯͨ • ※໌(20169݄8)ʹ iOSʹ͍ͭͯ৽͍͠ൃද͕͋Γͦ͏Ͱ͢ɻ Xcode8(Swift3)͕͘Δ͔ɻ
Android Java8 • 20163݄ʹAndroidͰJava8ରԠ͞Ε·ͨ͠(N preview)ɻ • Android 6Ҏલͷ … ϥϜμࣜɺϝιουࢀর͕͑ΔΑ
͏ʹͳͬͨ (Android 7.0 SDKͰJackπʔϧνΣʔϯΛ༗ޮʹ͢Δͱ͑ Δ) • Android 7.0 Ҏ߱ͷ … StreamͳͲͷJava8Ճύοέʔ δ͕͑ΔΑ͏ʹͳΔ
ͦΕͰKotlinΛ ͏΄͏͕͍͍ཧ༝ • ࠓ͔ΒͰStreamతͳϦετૢ࡞͕Ͱ͖Δ (map, filter, forEach) • JavaΑΓίʔυ͕؆ܿʹͳΔ •
JavaΑΓίʔυΛ҆શʹॻ͚Δ(Null҆શ)
Kotlin(JavaҎ֎)Λ ͏ϦεΫͳ͍ͷ͔ʁ
ֶशίετɺ ࣮ίετ͕͔͔Δ͔ʁ • Javaͱͷޓੑ͕ߴ͘ɺJava͕ॻ͚ΔΤϯδχΞͳΒͰ֮͑ ΒΕΔ ࢀߟ: Comparison To Java https://kotlinlang.org/docs/reference/comparison-to-java.html
• ݴޠ༷͕Swiftʹࣅ͍ͯͯɺiOSΤϯδχΞ͠Έ͍͢ • Android StudioͰެࣜରԠ͍ͯ͠ΔͷͰɺKotlinॳ৺ऀͰ࠷ॳ ͔ΒεϜʔζʹ࣮Ͱ͖ΔɻJava to Kotlinͷࣗಈม͕خ͍͠ɻ • ࣮ίετJavaΑΓKotolinͷ΄͏͕͍ܰ
KotlinͰͩΊͩͬͨ࣌ͷ ϦΧόϦ͕Ͱ͖Δ͔ʁ • KotlinJavaͱͷ૬ޓӡ༻Λ೦಄ʹ͓͍͍ͯΔͷͰɺ Java Ϋϥεͱࣗવʹ૬ޓࢀরͰ͖Δɻ • Kotlinίʔυൺֱత༰қʹJavaίʔυʹஔ͖͑Δ ࣄ͕Մೳɻ(͍͟ͱͳͬͨΒdex ->
javaʹٯίϯύΠϧͯ͠Javaʹ͢ Δ͜ͱͰ͖Δ) • →Kotlin࣮ʹΜͩ࣌ʹ෦తʹJavaΫϥεʹ͢Δ ͜ͱग़དྷΔɻؾܰʹJavaͰ։ൃͰ͖Δ҆৺ײɻ
Kotlinͷݴޠ༷มߋͰ ίʔυ͕ಈ͔ͳ͘ͳΔՄೳੑʁ • ver1.0ʹͳΓɺ༷มߋϦεΫݮͬͨɻ • ࠷ۙग़ͨver1.0.3όάϑΟΫε͕ϝΠϯɻ • SwiftݴޠΑΓͣͬͱ༷มߋϦεΫ͍ࢥ ͏
কདྷతʹAndroidͰKotlin͕͑ͳ͘ͳ Δ(ϝϯςφϯε͞Εͳ͘ͳΔ)Մೳੑʁ • KotlinJetBrains͕ࣾ࡞ͬͨݴޠ • JetBrainsࣾAndroid Studio։ൃݩ • GoogleެࣜݴޠͰͳ͍ͷͷɺJetBrainsࣾ ͕KotlinʹྗΛೖΕ͍ͯΔɻ
• Android ͕ Android StudioΛඪ४IDEʹ͍ͯ͠ ΔݶΓɺ҆৺ͯ͠࠾༻Ͱ͖ͦ͏
AndroidͰଞͷݴޠ͕ ओྲྀʹͳΔՄೳੑʁ • Google ͕Android͚ݴޠΛ։ൃͨ͠Β͋ΓಘΔ • طଘAndroid OSόʔδϣϯͰ Java9ରԠͱ͔ •
ग़ͯීٴ͢Δͷ͕͔͔࣌ؒΓͦ͏ɻ (໘ͳͦ͞͏) • Kotlinಋೖࣄྫग़͖ͯͯɺطʹීٴͭͭ͋͠Δɻ • JavaҎ֎ͰओྲྀͷݴޠʹͳΔՄೳੑ͕Ұ൪ߴ͍ͷࠓͷͱ͜Ζ Kotlinͩͱࢥ͏ɻ
طଘͷKotlinಋೖࣄྫ • Sansanגࣜձࣾ • Ϋϥυ໊ཧ Eight ɹhttps://8card.net • גࣜձࣾαΠόʔΤʔδΣϯτ
• ө૾৴ϓϥοτϑΥʔϜ AmebaFresh https://abemafresh.tv • ࢀߟURL: • http://www.slideshare.net/kenichitatsuhama/kotlin-63864380 • http://qiita.com/magie-pooh/items/b1179af28f5e0d50b62a
Kotlin ίʔυॻ͖͘͢ ҆৺ͯ͑͠Δݴޠ
…ͱ͍͏͜ͱͰɺ KotlinΛ ࠾༻͢Δ͜ͱʹͳΓ·ͨ͠
ϋΠϒϦουΞϓϦͱ • ωΠςΟϒίʔυ(Objective C, Swift, Java)Ҏ ֎Λͬͯ࡞ΒΕͨΞϓϦͰ͢ɻ • Android/iOSΞϓϦΛಉ͡։ൃݴޠͰ࡞Δ͜ ͱ͕Ͱ͖Δͱ͍͏ಛ͕͋Γ·͢ɻ
ϋΠϒϦουΞϓϦͱ͍͑ • WebܥΤϯδχΞͰͬ͘͞ͱ࡞ΕΔ • AndroidɾiOSͷ̎छྨͷ։ൃݴޠΛԱ͑ͳ͘ ͍͍ͯ • ̍ͭͷίʔυͰ͍͍ͷͰ҆͘ɺૣ͘Ͱ͖Δ • ͍͍͜ͱͮ͘Ίʂخ͍͠ʂ
('ω')
ຊʁ
ϋΠϒϦουΞϓϦͱ͍͑ • (ωΠςΟϒґଘ͠ͳ͍ͷͳΒ)WebܥΤϯδχΞͰͬ͘͞ͱ࡞ΕΔ • (ωΠςΟϒґଘ͠ͳ͍ͷͳΒ)AndroidɾiOSͷ̎छྨͷ։ൃํ๏Λ Ա͑ͳ͍͍ͯ͘ • (ωΠςΟϒґଘ͠ͳ͍ͷͳΒ)̍ͭͷίʔυͰ͍͍ͷͰ҆͘ɺૣ͘Ͱ ͖Δ •
→͍͍ΞϓϦΛ࡞Ζ͏ͱ͢Δ΄ͲɺେମωΠςΟϒґଘ͢ΔΑ͏ʹͳ Δ (͘͘͞͞ಈ͘Α͏ʹ࣭ͯ͠Λ্͍͛ͨɺpush௨ɺΞϓϦ֎෦࿈ܞ ͳͲػೳΛ૿͍ͨ͠ etc.)
ϋΠϒϦουΞϓϦ։ൃͷಛ • ͦΕͧΕͷϋΠϒϦουΞϓϦ։ൃʹର͢ΔࣝඞཁʹͳΔ • ࠷ॳ͔ΒΞϓϦ։ൃίετ͕ʹͳΒͳ͍ • ίετΛԼ͛ΒΕΔͷɺωΠςΟϒ࣮ͳ͠Ͱɺ΄΅ط ଘػೳ͚ͩͰ࡞ΕΔ߹͚ͩ • ωΠςΟϒ࿈ܞॲཧɺUIվળɺύϑΥʔϚϯε্͕ඞཁʹ
ͳͬͨ߹ʹɺ௨ৗͷωΠςΟϒΞϓϦΑΓख͕͔͔ؒΔɻ • ϑϧωΠςΟϒΞϓϦͱಉϨϕϧͷͷΛ࡞Δͱɺ͕࣌ؒ ͰࡁΉͲ͜Ζ͔̎ഒ͔͔Δ͜ͱɻ
ϋΠϒϦουΞϓϦ։ൃ ۜͷؙͰͳ͍ • ϋΠϒϦουΞϓϦʹݶք͕͋ΔɻωΠςΟϒݴޠͰผʑʹΞϓϦ Λ࡞Δ΄͏͕ɺϋΠϒϦουΞϓϦͰؤுΔΑΓ͍͍ͷ͕ग़དྷΔ • Ϧιʔε(༧ࢉɾɾظ)Λ͔͚ΒΕͣɺϛχϚϜͰAndroid/iOS ྆ํରԠ͍ͨ͠ͳΒɺҰ൪ϥΠτͳWebView(ඪ४WebView, Cordova) ϕʔεΞϓϦ͕ݸਓతʹ͓͢͢Ί
• Ϧιʔε͕ݶΒΕΔͳΒɺՄೳͳΒยํ͚ͩ(Android/iOS͚ͩ)ʹߜͬ ͯωΠςΟϒ։ൃ͢Δ΄͏͕͍͍Ͱ͢ɻ(࣭ͷ୲อ) • ϋΠϒϦουΞϓϦ։ൃΛબͿʹ੍ݶ͕͋Δ͜ͱΛ͓ͬͯ͘
Ͳ͏͍͏ํ๏͕͋Δ͔ • WebͰͷ࣮ • WebView, Apache Cordova • JS࣮ •
React Native, Titanium(Appcelerator) • ͦͷଞ • Xamarin
ඪ४WebView • OSඪ४ͷWebView(UIWebView, WKWebView) • ΞϓϦϒϥβͱݺΕΔ • WebϖʔδΛΞϓϦͰදࣔ͢ΔUI෦ (Ϗϡʔ) •
ϒϥβͱग़དྷΔ͜ͱେମಉ͡ • ωΠςΟϒ࿈ܞ͢Δʹɺ֤OSͰωΠςΟϒ ࣮͕ඞཁ
Apache Cordova • WebViewͷػೳΛ֦ுͨ͠ͷ • ग़དྷΔ͜ͱWebView ϓϥεΞϧϑΝ • JS,HTML,CSS͚ͩͰUIΛΞϓϦͬΆ͘͢Δ •
JS͚ͩͰ(push௨ͳͲ)ωΠςΟϒػೳ͕͑Δ • ͱͱAdobe PhoneGapͱݺΕ͍͕ͯͨɺ Apacheʹدଃ͞ΕͯɺCordovaϓϩδΣΫτͱͳͬͨ
React Native • Facebook͕։ൃݩʢʂʣ • JavaScriptͰϋΠϒϦουΞϓϦ(+Web)։ൃ͕Ͱ͖Δ • React.jsϥΠϒϥϦΛϕʔεʹͨ͠ϋΠϒϦουΞϓϦ։ൃ ༻ϑϨʔϜϫʔΫ •
WebViewͰͳ͘JavaScriptΤϯδϯͰಈ͘
React Nativeͷྑ͔ͬͨॴ • JSΤϯδχΞ͕։ൃ͍͢͠ • Babel Ͱ ES6͕͑Δ(class, Promise, async)
• JSϥΠϒϥϦͪΖΜ͑Δ • AltJS ͳΒԿͰ͑ͦ͏ • React.jsͷJSXͱಉ͡ه๏ͰϏϡʔͷϨΠΞτఆ͕ٛग़དྷΔ • CSS3ͷFlexboxϨΠΞτ͕͑Δ • ͍·Ͳ͖ͬΆ͍ઃܭࢥ(Flux, Redux) • ϒϥβײ֮Ͱɺը໘Ϧϩʔυ͢Δ͚ͩͰ࣮֬ೝͰ͖Δ(⌘+R Ωʔ)
React Nativeͷ ؤுͬͯཉ͍͠ॴ • React Nativeຊମ͕·ͩ·ͩ҆ఆ͍ͯ͠ͳ͍ • React NativeΛόʔδϣϯΞοϓ͢ΔͱϥΠϒϥϦ͕ಈ͔ͳ͘ ͳͬͨΓ͢Δ
• ϋΠϒϦουΞϓϦͱ͍͍ͭͭɺAndroid/iOS ྆ํରԠ͢Δ ͷ͕͔ͳΓେม • ΞϓϦͷڍಈ͕ॏ͍ • ࠓޙʹظ
Titanium(Appcelerator) • Titanium Mobileͷ໊લΛฉ͔ͳ͍ͷͰऴΘ͔ͬͨͱࢥͬͨ Β·ͩ׆ൃʹϝϯςφϯε͞Ε͍ͯΔΑ͏Ͱ͢ɻ • ̓ؒͷྺ࢙ɺ࣮͋Γɺ҆ఆ͍ͯ͠Δ(Β͍͠) • 2015ʹ Appceleratorࣾʹങऩ͞ΕɺAppceleratorͱͯ͠
༗ྉԽɺTitanium SDKػೳݶఆ൛ͱͯ͠ແྉͷ·· • 2016 Appcelerator͕͞ΒʹAxwayࣾʹങऩ͞ΕͨΒ͍͠
TitaniumͷࢀߟεϥΠυ http://www.slideshare.net/tdtsh/titanium-2016
൪֎ɿXamarin • .NETͰ։ൃͰ͖Δ(C#,VB) • Microsoftʹങऩ͞Εɺ࠷ۙແྉԽ͔ͨ͠Γ • දཱ࣮ͬͨࠓͷͱ͜Ζ͋·Γݟ͔ͭΒͳ ͔ͬͨ (ϑΣϯϦϧ͞Μʹฉ͍ͯΈ͍ͨ) •
ࠓޙʹظʁ࣮͕ͳ͍͚͔ͩɻ
൪֎ɿήʔϜܥ • Unity, Unreal Engine, Cocos2D… • ήʔϜܥྫ֎ͰɺϋΠϒϦου։ൃ͕جຊ • جຊతʹήʔϜͷੈքͰ݁͢Δ
• UI͕OSґଘ͠ͳ͍ • ωΠςΟϒ࣮ίετΑΓɺήʔϜಛ༗ͷUIɾػ ೳ࣮ίετͷ΄͏͕ߴ͍(ϨϯμϦϯάॲཧͳͲ)
ଓ͖ Kotlin࠾༻ϓϩδΣΫτͷ ٕज़໘ͷ http://goo.gl/OAAnwo