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
490
20220112_AI勉強会
ecoopnet
0
500
AI最新論文読み会2021年11月
ecoopnet
0
310
AI最新論文読み会2021年5月
ecoopnet
0
500
AI最新論文読み会2020年12月
ecoopnet
0
370
AI最新技術Update会 8月
ecoopnet
0
430
医療ディープラーニング勉強会 DL勉強会 第3回 2020.4
ecoopnet
0
470
Kotlin Coroutines ことはじめ
ecoopnet
2
290
ハマった時に役立つ通信系デバッグの話
ecoopnet
3
1.6k
Other Decks in Technology
See All in Technology
KubeCon NA 2024 Recap / Running WebAssembly (Wasm) Workloads Side-by-Side with Container Workloads
z63d
1
250
ゼロから創る横断SREチーム 挑戦と進化の軌跡
rvirus0817
2
270
.NET 9 のパフォーマンス改善
nenonaninu
0
920
20241214_WACATE2024冬_テスト設計技法をチョット俯瞰してみよう
kzsuzuki
3
450
re:Invent 2024 Innovation Talks(NET201)で語られた大切なこと
shotashiratori
0
310
ブラックフライデーで購入したPixel9で、Gemini Nanoを動かしてみた
marchin1989
1
530
Oracle Cloud Infrastructure:2024年12月度サービス・アップデート
oracle4engineer
PRO
0
180
組織に自動テストを書く文化を根付かせる戦略(2024冬版) / Building Automated Test Culture 2024 Winter Edition
twada
PRO
16
3.9k
TSKaigi 2024 の登壇から広がったコミュニティ活動について
tsukuha
0
160
re:Invent をおうちで楽しんでみた ~CloudWatch のオブザーバビリティ機能がスゴい!/ Enjoyed AWS re:Invent from Home and CloudWatch Observability Feature is Amazing!
yuj1osm
0
120
複雑性の高いオブジェクト編集に向き合う: プラガブルなReactフォーム設計
righttouch
PRO
0
110
サービスでLLMを採用したばっかりに振り回され続けたこの一年のあれやこれや
segavvy
2
430
Featured
See All Featured
Side Projects
sachag
452
42k
Principles of Awesome APIs and How to Build Them.
keavy
126
17k
Become a Pro
speakerdeck
PRO
26
5k
Producing Creativity
orderedlist
PRO
341
39k
ピンチをチャンスに:未来をつくるプロダクトロードマップ #pmconf2020
aki_iinuma
111
49k
Put a Button on it: Removing Barriers to Going Fast.
kastner
59
3.6k
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
28
900
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
eileencodes
17
2.3k
10 Git Anti Patterns You Should be Aware of
lemiorhan
PRO
656
59k
Documentation Writing (for coders)
carmenintech
66
4.5k
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
48
2.2k
Making the Leap to Tech Lead
cromwellryan
133
9k
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