Slide 1

Slide 1 text

ͳͥAndroid։ൃʹ KotlinΛબΜ͔ͩ?

Slide 2

Slide 2 text

ࣗݾ঺հ • גࣜձࣾtech vein(ςοΫϕΠϯ)
 ୅දऔక໾ΤϯδχΞ
 ழມɹॆԝ(͍ͷ·ͨɹΈͭͻΖ) • http://www.tech-vein.com/ • twitter: @ino2222

Slide 3

Slide 3 text

tech vein(ςοΫϕΠϯ)ͱ͍͏ डୗ։ൃձࣾΛӡӦ͍ͯ͠·͢ http://www.tech-vein.com/

Slide 4

Slide 4 text

AndroidΞϓϦ։ൃ؀ڥ • IDE … Android Studio 
 (Eclipse ADT ͸։ൃऴྃ) • ݴޠ • Java 7 • Java 8 • Kotlin • AltJava(Groovy, Scala, etc) • Swift?

Slide 5

Slide 5 text

AndroidΞϓϦ։ൃ؀ڥ • IDE … Android Studio 
 (Eclipse ADT ͸։ൃऴྃ) • ݴޠ • Java 7 … ͍··Ͱͷओྲྀ(2016-07·Ͱ) • Java 8 … ͜Ε͔Β(2016-08ʙ)ओྲྀʹͳΔ͔΋ʁ • Kotlin … ͜Ε͔ΒओྲྀʹͳΔ͔΋ʁ(ࠓճ࠾༻ͨ͠ݴޠ) • ଞͷAltJava(Groovy, Scala, etc) … Android࠾༻ͮ͠Β͍ • Swift? … Ұ࣌ظ࿩୊ʹͳͬͨɻͱΓ͋͑ͣίϯύΠϧͯ͠JNI ͰࢀরͰ͖ͨɺͱ͍͏Ϩϕϧ

Slide 6

Slide 6 text

ͳͥAndroid։ൃʹ KotlinΛબΜ͔ͩ • Swift, ScalaͷΑ͏ͳϞμϯͳ(ؔ਺ܕతͳ)ݴޠ • Java7͕ͭΒ͔ͬͨɻJava8͕࢖͑ΔΑ͏ʹͳ͚ͬͨͲɺ·ͩݶఆత
 (ϥϜμࣜɺϝιουࢀর͚ͩ) • IDE։ൃݩͷɺJetBrainsࣾʹΑΔڧྗͳαϙʔτ • Javaͱͷޓ׵ੑ͕ߴ͍ • 2016೥3݄຤ʹKotlin ver1.0͕ਖ਼ࣜϦϦʔε͞Εͨ • طʹಋೖࣄྫ΋͋ͬͨ

Slide 7

Slide 7 text

iOS ։ൃ Swiftʹ͍ͭͯ • 2014೥·ͰiOS։ൃͱ͍͑͹ObjectiveCͩͬͨɻ • 2014೥ʹApple͕SwiftݴޠΛൃදޙɺঃʑʹීٴɻ • 2016೥ݱࡏ͸͔ͬ͢ΓSwift͕ओྲྀʹɻ • SwiftҎલͷObjective CͳΞϓϦ΋ɺେ͖ͳϦχϡʔΞϧͷλΠϛϯάͰ SwiftʹҠߦ͍ͯ͠Δ • ObjC͸։ൃͰ͖ͳ͍͚ͲɺSwiftͳΒͰ͖ͦ͏ɺͱ͍͏ࣄͰiOSΤϯδχΞ͕ ૿͍͑ͯΔ • SwiftൃදҎདྷɺAndroid Ͱ΋ Swift ͷΑ͏ͳݴޠֵ໋͕ظ଴͞Ε͖ͯͨ • ※໌೔(2016೥9݄8೔)ʹ iOSʹ͍ͭͯ৽͍͠ൃද͕͋Γͦ͏Ͱ͢ɻ
 Xcode8(Swift3)͕͘Δ͔΋ɻ

Slide 8

Slide 8 text

Android Java8 • 2016೥3݄ʹAndroidͰ΋Java8ରԠ͞Ε·ͨ͠(N preview)ɻ • Android 6Ҏલͷ୺຤ … ϥϜμࣜɺϝιουࢀর͕࢖͑ΔΑ ͏ʹͳͬͨ
 (Android 7.0 SDKͰJackπʔϧνΣʔϯΛ༗ޮʹ͢Δͱ࢖͑ Δ) • Android 7.0 Ҏ߱ͷ୺຤ … StreamͳͲͷJava8௥Ճύοέʔ δ͕࢖͑ΔΑ͏ʹͳΔ

Slide 9

Slide 9 text

ͦΕͰ΋KotlinΛ
 ࢖͏΄͏͕͍͍ཧ༝ • ࠓ͔ΒͰ΋StreamతͳϦετૢ࡞͕Ͱ͖Δ (map, filter, forEach) • JavaΑΓ΋ίʔυ͕؆ܿʹͳΔ • JavaΑΓ΋ίʔυΛ҆શʹॻ͚Δ(Null҆શ)

Slide 10

Slide 10 text

Kotlin(JavaҎ֎)Λ ࢖͏ϦεΫ͸ͳ͍ͷ͔ʁ

Slide 11

Slide 11 text

ֶशίετɺ ࣮૷ίετ͕͔͔Δ͔ʁ • Javaͱͷޓ׵ੑ͕ߴ͘ɺJava͕ॻ͚ΔΤϯδχΞͳΒ਺೔Ͱ֮͑ ΒΕΔ
 ࢀߟ: Comparison To Java
 https://kotlinlang.org/docs/reference/comparison-to-java.html • ݴޠ࢓༷͕Swiftʹࣅ͍ͯͯɺiOSΤϯδχΞ΋਌͠Έ΍͍͢ • Android StudioͰެࣜରԠ͍ͯ͠ΔͷͰɺKotlinॳ৺ऀͰ΋࠷ॳ ͔ΒεϜʔζʹ࣮૷Ͱ͖ΔɻJava to Kotlinͷࣗಈม׵͕خ͍͠ɻ • ࣮૷ίετ͸JavaΑΓKotolinͷ΄͏͕͍ܰ

Slide 12

Slide 12 text

KotlinͰͩΊͩͬͨ࣌ͷ ϦΧόϦ͕Ͱ͖Δ͔ʁ • Kotlin͸Javaͱͷ૬ޓӡ༻Λ೦಄ʹ͓͍͍ͯΔͷͰɺ Java Ϋϥεͱࣗવʹ૬ޓࢀরͰ͖Δɻ • Kotlinίʔυ͸ൺֱత༰қʹJavaίʔυʹஔ͖׵͑Δ ࣄ͕Մೳɻ(͍͟ͱͳͬͨΒdex -> javaʹٯίϯύΠϧͯ͠Javaʹ͢ Δ͜ͱ΋Ͱ͖Δ) • →Kotlin࣮૷ʹ೰Μͩ࣌ʹ෦෼తʹJavaΫϥεʹ͢Δ ͜ͱ΋ग़དྷΔɻؾܰʹJavaͰ΋։ൃͰ͖Δ҆৺ײɻ

Slide 13

Slide 13 text

Kotlinͷݴޠ࢓༷มߋͰ
 ίʔυ͕ಈ͔ͳ͘ͳΔՄೳੑ͸ʁ • ver1.0ʹͳΓɺ࢓༷มߋϦεΫ͸ݮͬͨɻ • ࠷ۙग़ͨver1.0.3͸όάϑΟΫε͕ϝΠϯɻ • SwiftݴޠΑΓͣͬͱ࢓༷มߋϦεΫ͸௿͍ࢥ ͏

Slide 14

Slide 14 text

কདྷతʹAndroidͰKotlin͕࢖͑ͳ͘ͳ Δ(ϝϯςφϯε͞Εͳ͘ͳΔ)Մೳੑ͸ʁ • Kotlin͸JetBrains͕ࣾ࡞ͬͨݴޠ • JetBrainsࣾ͸Android Studio։ൃݩ • GoogleެࣜݴޠͰ͸ͳ͍΋ͷͷɺJetBrainsࣾ ͕KotlinʹྗΛೖΕ͍ͯΔɻ • Android ͕ Android StudioΛඪ४IDEʹ͍ͯ͠ ΔݶΓ͸ɺ҆৺ͯ͠࠾༻Ͱ͖ͦ͏

Slide 15

Slide 15 text

AndroidͰଞͷݴޠ͕
 ओྲྀʹͳΔՄೳੑ͸ʁ • Google ͕Android޲͚ݴޠΛ։ൃͨ͠Β͋ΓಘΔ • طଘAndroid OSόʔδϣϯͰ Java9ରԠͱ͔ • ग़ͯ΋ීٴ͢Δͷ͸͕͔͔࣌ؒΓͦ͏ɻ
 (౰໘͸ͳͦ͞͏) • Kotlin͸ಋೖࣄྫ΋ग़͖ͯͯɺطʹීٴͭͭ͋͠Δɻ • JavaҎ֎ͰओྲྀͷݴޠʹͳΔՄೳੑ͕Ұ൪ߴ͍ͷ͸ࠓͷͱ͜Ζ Kotlinͩͱࢥ͏ɻ

Slide 16

Slide 16 text

طଘͷ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

Slide 17

Slide 17 text

Kotlin͸ ίʔυ΋ॻ͖΍͘͢ ҆৺ͯ͠࢖͑Δݴޠ

Slide 18

Slide 18 text

…ͱ͍͏͜ͱͰɺ KotlinΛ ࠾༻͢Δ͜ͱʹͳΓ·ͨ͠

Slide 19

Slide 19 text

ϋΠϒϦουΞϓϦͱ͸ • ωΠςΟϒίʔυ(Objective C, Swift, Java)Ҏ ֎Λ࢖ͬͯ࡞ΒΕͨΞϓϦͰ͢ɻ • Android/iOSΞϓϦΛಉ͡։ൃݴޠͰ࡞Δ͜ ͱ͕Ͱ͖Δͱ͍͏ಛ௃͕͋Γ·͢ɻ

Slide 20

Slide 20 text

ϋΠϒϦουΞϓϦͱ͍͑͹ • WebܥΤϯδχΞͰ΋ͬ͘͞ͱ࡞ΕΔ • AndroidɾiOSͷ̎छྨͷ։ൃݴޠΛԱ͑ͳ͘ ͯ΋͍͍ • ̍ͭͷίʔυͰ͍͍ͷͰ҆͘ɺૣ͘Ͱ͖Δ • ͍͍͜ͱͮ͘Ίʂخ͍͠ʂ ('ω')

Slide 21

Slide 21 text

ຊ౰ʁ

Slide 22

Slide 22 text

ϋΠϒϦουΞϓϦͱ͍͑͹ • (ωΠςΟϒґଘ͠ͳ͍΋ͷͳΒ)WebܥΤϯδχΞͰ΋ͬ͘͞ͱ࡞ΕΔ • (ωΠςΟϒґଘ͠ͳ͍΋ͷͳΒ)AndroidɾiOSͷ̎छྨͷ։ൃํ๏Λ Ա͑ͳͯ͘΋͍͍ • (ωΠςΟϒґଘ͠ͳ͍΋ͷͳΒ)̍ͭͷίʔυͰ͍͍ͷͰ҆͘ɺૣ͘Ͱ ͖Δ • →͍͍ΞϓϦΛ࡞Ζ͏ͱ͢Δ΄ͲɺେମωΠςΟϒґଘ͢ΔΑ͏ʹͳ Δ
 (͘͘͞͞ಈ͘Α͏ʹͯ͠඼࣭Λ্͍͛ͨɺpush௨஌ɺΞϓϦ֎෦࿈ܞ ͳͲػೳΛ૿΍͍ͨ͠ etc.)

Slide 23

Slide 23 text

ϋΠϒϦουΞϓϦ։ൃͷಛ௃ • ͦΕͧΕͷϋΠϒϦουΞϓϦ։ൃʹର͢Δ஌ࣝ͸ඞཁʹͳΔ • ࠷ॳ͔ΒΞϓϦ։ൃίετ͕൒෼ʹ͸ͳΒͳ͍ • ίετΛԼ͛ΒΕΔͷ͸ɺωΠςΟϒ࣮૷ͳ͠Ͱɺ΄΅ط ଘػೳ͚ͩͰ࡞ΕΔ৔߹͚ͩ • ωΠςΟϒ࿈ܞॲཧɺUIվળɺύϑΥʔϚϯε޲্͕ඞཁʹ ͳͬͨ৔߹ʹɺ௨ৗͷωΠςΟϒΞϓϦΑΓख͕͔͔ؒΔɻ • ϑϧωΠςΟϒΞϓϦͱಉϨϕϧͷ΋ͷΛ࡞Δͱɺ͕࣌ؒ൒෼ ͰࡁΉͲ͜Ζ͔̎ഒ͔͔Δ͜ͱ΋ɻ

Slide 24

Slide 24 text

ϋΠϒϦουΞϓϦ։ൃ͸
 ۜͷ஄ؙͰ͸ͳ͍ • ϋΠϒϦουΞϓϦʹ͸ݶք͕͋ΔɻωΠςΟϒݴޠͰผʑʹΞϓϦ Λ࡞Δ΄͏͕ɺϋΠϒϦουΞϓϦͰؤுΔΑΓ͍͍΋ͷ͕ग़དྷΔ • Ϧιʔε(༧ࢉɾ޻਺ɾ޻ظ)Λ͔͚ΒΕͣɺϛχϚϜͰ΋Android/iOS ྆ํରԠ͍ͨ͠ͳΒɺҰ൪ϥΠτͳWebView(ඪ४WebView, Cordova) ϕʔεΞϓϦ͕ݸਓతʹ͸͓͢͢Ί • Ϧιʔε͕ݶΒΕΔͳΒɺՄೳͳΒยํ͚ͩ(Android/iOS͚ͩ)ʹߜͬ ͯωΠςΟϒ։ൃ͢Δ΄͏͕͍͍Ͱ͢ɻ(඼࣭ͷ୲อ) • ϋΠϒϦουΞϓϦ։ൃΛબͿʹ͸੍ݶ͕͋Δ͜ͱΛ஌͓ͬͯ͘

Slide 25

Slide 25 text

Ͳ͏͍͏ํ๏͕͋Δ͔ • WebͰͷ࣮૷ • WebView, Apache Cordova • JS࣮૷ • React Native, Titanium(Appcelerator) • ͦͷଞ • Xamarin

Slide 26

Slide 26 text

ඪ४WebView • OSඪ४ͷWebView(UIWebView, WKWebView) • ΞϓϦ಺ϒϥ΢βͱ΋ݺ͹ΕΔ • WebϖʔδΛΞϓϦ಺Ͱදࣔ͢ΔUI෦඼ (Ϗϡʔ) • ϒϥ΢βͱग़དྷΔ͜ͱ͸େମಉ͡ • ωΠςΟϒ࿈ܞ͢Δʹ͸ɺ֤OSͰωΠςΟϒ ࣮૷͕ඞཁ

Slide 27

Slide 27 text

Apache Cordova • WebViewͷػೳΛ֦ுͨ͠΋ͷ • ग़དྷΔ͜ͱ͸WebView ϓϥεΞϧϑΝ • JS,HTML,CSS͚ͩͰUIΛΞϓϦͬΆ͘͢Δ • JS͚ͩͰ(push௨஌ͳͲ)ωΠςΟϒػೳ͕࢖͑Δ • ΋ͱ΋ͱAdobe PhoneGapͱݺ͹Ε͍͕ͯͨɺ Apacheʹدଃ͞ΕͯɺCordovaϓϩδΣΫτͱͳͬͨ

Slide 28

Slide 28 text

React Native • Facebook͕։ൃݩʢʂʣ • JavaScriptͰϋΠϒϦουΞϓϦ(+Web)։ൃ͕Ͱ͖Δ • React.jsϥΠϒϥϦΛϕʔεʹͨ͠ϋΠϒϦουΞϓϦ։ൃ ༻ϑϨʔϜϫʔΫ • WebViewͰ͸ͳ͘JavaScriptΤϯδϯͰಈ͘


Slide 29

Slide 29 text

React Nativeͷྑ͔ͬͨॴ • JSΤϯδχΞ͕։ൃ͠΍͍͢ • Babel Ͱ ES6͕࢖͑Δ(class, Promise, async) • JSϥΠϒϥϦ΋΋ͪΖΜ࢖͑Δ • AltJS ͳΒԿͰ΋࢖͑ͦ͏ • React.jsͷJSXͱಉ͡ه๏ͰϏϡʔͷϨΠΞ΢τఆ͕ٛग़དྷΔ • CSS3ͷFlexboxϨΠΞ΢τ͕࢖͑Δ • ͍·Ͳ͖ͬΆ͍ઃܭࢥ૝(Flux, Redux) • ϒϥ΢βײ֮Ͱɺը໘Ϧϩʔυ͢Δ͚ͩͰ࣮૷֬ೝͰ͖Δ(⌘+R Ωʔ)

Slide 30

Slide 30 text

React Nativeͷ ؤுͬͯཉ͍͠ॴ • React Nativeຊମ͕·ͩ·ͩ҆ఆ͍ͯ͠ͳ͍ • React NativeΛόʔδϣϯΞοϓ͢ΔͱϥΠϒϥϦ͕ಈ͔ͳ͘ ͳͬͨΓ͢Δ • ϋΠϒϦουΞϓϦͱ͍͍ͭͭɺAndroid/iOS ྆ํରԠ͢Δ ͷ͕͔ͳΓେม • ΞϓϦͷڍಈ͕ॏ͍ • ࠓޙʹظ଴

Slide 31

Slide 31 text

Titanium(Appcelerator) • Titanium Mobileͷ໊લΛฉ͔ͳ͍ͷͰऴΘ͔ͬͨͱࢥͬͨ Β·ͩ׆ൃʹϝϯςφϯε͞Ε͍ͯΔΑ͏Ͱ͢ɻ • ̓೥ؒͷྺ࢙ɺ࣮੷΋͋Γɺ҆ఆ͍ͯ͠Δ(Β͍͠)
 • 2015೥ʹ Appceleratorࣾʹങऩ͞ΕɺAppceleratorͱͯ͠ ༗ྉԽɺTitanium SDK͸ػೳݶఆ൛ͱͯ͠ແྉͷ··
 • 2016೥ Appcelerator͕͞ΒʹAxwayࣾʹങऩ͞ΕͨΒ͍͠

Slide 32

Slide 32 text

TitaniumͷࢀߟεϥΠυ http://www.slideshare.net/tdtsh/titanium-2016

Slide 33

Slide 33 text

൪֎ɿXamarin • .NETͰ։ൃͰ͖Δ(C#,VB) • Microsoftʹങऩ͞Εɺ࠷ۙແྉԽͨ͠͹͔Γ • දཱ࣮ͬͨ੷͸ࠓͷͱ͜Ζ͋·Γݟ͔ͭΒͳ ͔ͬͨ
 (ϑΣϯϦϧ͞Μʹฉ͍ͯΈ͍ͨ) • ࠓޙʹظ଴ʁ࣮੷͕ͳ͍͚͔ͩ΋ɻ

Slide 34

Slide 34 text

൪֎ɿήʔϜܥ • Unity, Unreal Engine, Cocos2D… • ήʔϜܥ͸ྫ֎ͰɺϋΠϒϦου։ൃ͕جຊ • جຊతʹήʔϜͷੈքͰ׬݁͢Δ • UI͕OSґଘ͠ͳ͍ • ωΠςΟϒ࣮૷ίετΑΓɺήʔϜಛ༗ͷUIɾػ ೳ࣮૷ίετͷ΄͏͕ߴ͍(ϨϯμϦϯάॲཧͳͲ)

Slide 35

Slide 35 text

ଓ͖ Kotlin࠾༻ϓϩδΣΫτͷ
 ٕज़໘ͷ࿩ http://goo.gl/OAAnwo