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
560
20220112_AI勉強会
ecoopnet
0
570
AI最新論文読み会2021年11月
ecoopnet
0
360
AI最新論文読み会2021年5月
ecoopnet
0
570
AI最新論文読み会2020年12月
ecoopnet
0
440
AI最新技術Update会 8月
ecoopnet
0
490
医療ディープラーニング勉強会 DL勉強会 第3回 2020.4
ecoopnet
0
550
Kotlin Coroutines ことはじめ
ecoopnet
2
360
ハマった時に役立つ通信系デバッグの話
ecoopnet
3
1.8k
Other Decks in Technology
See All in Technology
Blue/Green Deployment を用いた PostgreSQL のメジャーバージョンアップ
kkato1
0
110
【社内勉強会】新年度からコーディングエージェントを使いこなす - 構造と制約で引き出すClaude Codeの実践知
nwiizo
20
10k
脳が溶けた話 / Melted Brain
keisuke69
1
820
Laravelで学ぶOAuthとOpenID Connectの基礎と実装
kyoshidaxx
4
1.8k
20260323_データ分析基盤でGeminiを使う話
1210yuichi0
0
170
詳解 強化学習 / In-depth Guide to Reinforcement Learning
prinlab
0
360
欠陥分析(ODC分析)における生成AIの活用プロセスと実践事例 / 20260320 Suguru Ishii & Naoki Yamakoshi & Mayu Yoshizawa
shift_evolve
PRO
0
330
生成AI活用でQAエンジニアにどのような仕事が生まれるか/Support Required of QA Engineers for Generative AI
goyoki
1
370
Phase09_自動化_仕組み化
overflowinc
0
1.4k
Escape from Excel方眼紙 ~マークダウンで繋ぐ、人とAIの架け橋~ /nikkei-tech-talk44
nikkei_engineer_recruiting
0
180
Phase12_総括_自走化
overflowinc
0
1.2k
データマネジメント戦略Night - 4社のリアルを語る会
ktatsuya
1
160
Featured
See All Featured
The Anti-SEO Checklist Checklist. Pubcon Cyber Week
ryanjones
0
99
HU Berlin: Industrial-Strength Natural Language Processing with spaCy and Prodigy
inesmontani
PRO
0
280
How to build an LLM SEO readiness audit: a practical framework
nmsamuel
1
690
The untapped power of vector embeddings
frankvandijk
2
1.6k
Site-Speed That Sticks
csswizardry
13
1.1k
Digital Ethics as a Driver of Design Innovation
axbom
PRO
1
230
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
37
6.3k
The Language of Interfaces
destraynor
162
26k
Designing Experiences People Love
moore
143
24k
Conquering PDFs: document understanding beyond plain text
inesmontani
PRO
4
2.5k
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
231
22k
How People are Using Generative and Agentic AI to Supercharge Their Products, Projects, Services and Value Streams Today
helenjbeal
1
140
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