Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
なぜAndroid開発にKotlinを選んだか
Search
M.Inomata
September 08, 2016
Technology
2.2k
3
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
なぜAndroid開発にKotlinを選んだか
ギルドカンファレンス2016の発表資料です。
M.Inomata
September 08, 2016
More Decks by M.Inomata
See All by M.Inomata
20221005_AI勉強会
ecoopnet
0
600
20220112_AI勉強会
ecoopnet
0
590
AI最新論文読み会2021年11月
ecoopnet
0
380
AI最新論文読み会2021年5月
ecoopnet
0
580
AI最新論文読み会2020年12月
ecoopnet
0
460
AI最新技術Update会 8月
ecoopnet
0
530
医療ディープラーニング勉強会 DL勉強会 第3回 2020.4
ecoopnet
0
560
Kotlin Coroutines ことはじめ
ecoopnet
2
390
ハマった時に役立つ通信系デバッグの話
ecoopnet
3
1.9k
Other Decks in Technology
See All in Technology
Redmine 7.0で私が開発した新機能の狙いと背景
vividtone
1
160
Screen Lens - 今見てる画面を翻訳する
komagata
0
250
AI-DLCって実際どう? 〜聞きたいこと全部聞いてみる〜
news_it_enj
0
260
作品が生態系になった ─ Mini Tokyo 3D から世界へ
nagix
0
160
Amazon Quick on DesktopがIAM Identity Centerで動かない理由
yukiogawa
0
160
クロスボーダーM&AのValue Upを支えるプロダクト開発。日米チームのハブになったプロダクトエンジニアの実践 / Product Engineering Conference 2026
genda
0
120
「重なり」は迎える側がつくる ― 人もAIエージェントも歓迎するプロダクトエンジニアリング ―
go0517go
PRO
0
280
AIで仕事のやり方を変える
matsu7874
3
1.1k
Reactの設計論
uhyo
15
8.3k
すぐできる衛星通信対応 あとは山奥に行くだけ
tatetate55
0
110
【視聴者参加型!】AWSセキュリティアンチパターンクイズ
syoshie
1
500
プロダクト思考 × 基盤思考を AIで実現する Compound Engineering
tkc66buzz
1
320
Featured
See All Featured
Scaling GitHub
holman
464
140k
Mobile First: as difficult as doing things right
swwweet
225
10k
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
49
10k
ReactJS: Keep Simple. Everything can be a component!
pedronauck
666
130k
For a Future-Friendly Web
brad_frost
183
10k
Impact Scores and Hybrid Strategies: The future of link building
tamaranovitovic
0
440
Ecommerce SEO: The Keys for Success Now & Beyond - #SERPConf2024
aleyda
1
2.1k
Facilitating Awesome Meetings
lara
57
7.1k
How to Ace a Technical Interview
jacobian
281
24k
16th Malabo Montpellier Forum Presentation
akademiya2063
PRO
0
370
Imperfection Machines: The Place of Print at Facebook
scottboms
270
14k
The Power of CSS Pseudo Elements
geoffreycrofte
82
6.6k
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