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
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
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
610
20220112_AI勉強会
ecoopnet
0
590
AI最新論文読み会2021年11月
ecoopnet
0
390
AI最新論文読み会2021年5月
ecoopnet
0
580
AI最新論文読み会2020年12月
ecoopnet
0
470
AI最新技術Update会 8月
ecoopnet
0
530
医療ディープラーニング勉強会 DL勉強会 第3回 2020.4
ecoopnet
0
560
Kotlin Coroutines ことはじめ
ecoopnet
2
400
ハマった時に役立つ通信系デバッグの話
ecoopnet
3
1.9k
Other Decks in Technology
See All in Technology
実体験から学ぶ分析エージェントの開発と運⽤
recruitengineers
PRO
7
1.5k
Codex概要
ymiya55
0
470
自主式軟體工廠
philipz
0
240
AI 時代の Azure エンジニアリング ~ 私たちは何を磨き、何を任せるのか ~
chack411
1
540
データ品質を壊しながらSnowflakeのAIに分析させてみた
kawanago
0
560
使いこなすために知っておきたい Azure SRE Agent アンチパターン
torumakabe
2
420
分析の民主化を支えるメタデータ整備の実践
kakehashi
PRO
3
1k
事業活動を AI Ready にする攻めと守りのデータエンジニアリング / data-engineering-for-ai-ready-business
pei0804
5
2k
DevelopersIO 2026 知識の地図を描く ─ オントロジーとは何か?
ishikawa_satoru
1
550
全PRの83%が AIレビューだけでマージできるようになった開発組織は その後どうなったか @2026/10
athug
0
120
AI Made Us Faster at Solving the Wrong Problems
marceloancelmo
0
190
AI時代だからこそ推したい!Gitコマンド再入門
munakata
0
160
Featured
See All Featured
Optimising Largest Contentful Paint
csswizardry
37
4k
Color Theory Basics | Prateek | Gurzu
gurzu
1
480
Learning to Love Humans: Emotional Interface Design
aarron
275
41k
YesSQL, Process and Tooling at Scale
rocio
174
15k
Ruling the World: When Life Gets Gamed
codingconduct
0
390
How to optimise 3,500 product descriptions for ecommerce in one day using ChatGPT
katarinadahlin
PRO
3
3.9k
The innovator’s Mindset - Leading Through an Era of Exponential Change - McGill University 2025
jdejongh
PRO
1
370
Marketing to machines
jonoalderson
1
5.9k
AI Search: Where Are We & What Can We Do About It?
aleyda
0
8.1k
How to Get Subject Matter Experts Bought In and Actively Contributing to SEO & PR Initiatives.
livdayseo
0
210
Jamie Indigo - Trashchat’s Guide to Black Boxes: Technical SEO Tactics for LLMs
techseoconnect
PRO
0
690
The Spectacular Lies of Maps
axbom
PRO
1
1.1k
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