Upgrade to Pro — share decks privately, control downloads, hide ads and more …

なぜAndroid開発にKotlinを選んだか

M.Inomata
September 08, 2016

 なぜAndroid開発にKotlinを選んだか

ギルドカンファレンス2016の発表資料です。

M.Inomata

September 08, 2016
Tweet

More Decks by M.Inomata

Other Decks in Technology

Transcript

  1. AndroidΞϓϦ։ൃ؀ڥ • IDE … Android Studio 
 (Eclipse ADT ͸։ൃऴྃ)

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

    • ݴޠ • Java 7 … ͍··Ͱͷओྲྀ(2016-07·Ͱ) • Java 8 … ͜Ε͔Β(2016-08ʙ)ओྲྀʹͳΔ͔΋ʁ • Kotlin … ͜Ε͔ΒओྲྀʹͳΔ͔΋ʁ(ࠓճ࠾༻ͨ͠ݴޠ) • ଞͷAltJava(Groovy, Scala, etc) … Android࠾༻ͮ͠Β͍ • Swift? … Ұ࣌ظ࿩୊ʹͳͬͨɻͱΓ͋͑ͣίϯύΠϧͯ͠JNI ͰࢀরͰ͖ͨɺͱ͍͏Ϩϕϧ
  3. 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)͕͘Δ͔΋ɻ
  4. Android Java8 • 2016೥3݄ʹAndroidͰ΋Java8ରԠ͞Ε·ͨ͠(N preview)ɻ • Android 6Ҏલͷ୺຤ … ϥϜμࣜɺϝιουࢀর͕࢖͑ΔΑ

    ͏ʹͳͬͨ
 (Android 7.0 SDKͰJackπʔϧνΣʔϯΛ༗ޮʹ͢Δͱ࢖͑ Δ) • Android 7.0 Ҏ߱ͷ୺຤ … StreamͳͲͷJava8௥Ճύοέʔ δ͕࢖͑ΔΑ͏ʹͳΔ
  5. ֶशίετɺ ࣮૷ίετ͕͔͔Δ͔ʁ • Javaͱͷޓ׵ੑ͕ߴ͘ɺJava͕ॻ͚ΔΤϯδχΞͳΒ਺೔Ͱ֮͑ ΒΕΔ
 ࢀߟ: Comparison To Java
 https://kotlinlang.org/docs/reference/comparison-to-java.html

    • ݴޠ࢓༷͕Swiftʹࣅ͍ͯͯɺiOSΤϯδχΞ΋਌͠Έ΍͍͢ • Android StudioͰެࣜରԠ͍ͯ͠ΔͷͰɺKotlinॳ৺ऀͰ΋࠷ॳ ͔ΒεϜʔζʹ࣮૷Ͱ͖ΔɻJava to Kotlinͷࣗಈม׵͕خ͍͠ɻ • ࣮૷ίετ͸JavaΑΓKotolinͷ΄͏͕͍ܰ
  6. KotlinͰͩΊͩͬͨ࣌ͷ ϦΧόϦ͕Ͱ͖Δ͔ʁ • Kotlin͸Javaͱͷ૬ޓӡ༻Λ೦಄ʹ͓͍͍ͯΔͷͰɺ Java Ϋϥεͱࣗવʹ૬ޓࢀরͰ͖Δɻ • Kotlinίʔυ͸ൺֱత༰қʹJavaίʔυʹஔ͖׵͑Δ ࣄ͕Մೳɻ(͍͟ͱͳͬͨΒdex ->

    javaʹٯίϯύΠϧͯ͠Javaʹ͢ Δ͜ͱ΋Ͱ͖Δ) • →Kotlin࣮૷ʹ೰Μͩ࣌ʹ෦෼తʹJavaΫϥεʹ͢Δ ͜ͱ΋ग़དྷΔɻؾܰʹJavaͰ΋։ൃͰ͖Δ҆৺ײɻ
  7. AndroidͰଞͷݴޠ͕
 ओྲྀʹͳΔՄೳੑ͸ʁ • Google ͕Android޲͚ݴޠΛ։ൃͨ͠Β͋ΓಘΔ • طଘAndroid OSόʔδϣϯͰ Java9ରԠͱ͔ •

    ग़ͯ΋ීٴ͢Δͷ͸͕͔͔࣌ؒΓͦ͏ɻ
 (౰໘͸ͳͦ͞͏) • Kotlin͸ಋೖࣄྫ΋ग़͖ͯͯɺطʹීٴͭͭ͋͠Δɻ • JavaҎ֎ͰओྲྀͷݴޠʹͳΔՄೳੑ͕Ұ൪ߴ͍ͷ͸ࠓͷͱ͜Ζ Kotlinͩͱࢥ͏ɻ
  8. طଘͷ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
  9. Ͳ͏͍͏ํ๏͕͋Δ͔ • WebͰͷ࣮૷ • WebView, Apache Cordova • JS࣮૷ •

    React Native, Titanium(Appcelerator) • ͦͷଞ • Xamarin
  10. Apache Cordova • WebViewͷػೳΛ֦ுͨ͠΋ͷ • ग़དྷΔ͜ͱ͸WebView ϓϥεΞϧϑΝ • JS,HTML,CSS͚ͩͰUIΛΞϓϦͬΆ͘͢Δ •

    JS͚ͩͰ(push௨஌ͳͲ)ωΠςΟϒػೳ͕࢖͑Δ • ΋ͱ΋ͱAdobe PhoneGapͱݺ͹Ε͍͕ͯͨɺ Apacheʹدଃ͞ΕͯɺCordovaϓϩδΣΫτͱͳͬͨ
  11. React Nativeͷྑ͔ͬͨॴ • JSΤϯδχΞ͕։ൃ͠΍͍͢ • Babel Ͱ ES6͕࢖͑Δ(class, Promise, async)

    • JSϥΠϒϥϦ΋΋ͪΖΜ࢖͑Δ • AltJS ͳΒԿͰ΋࢖͑ͦ͏ • React.jsͷJSXͱಉ͡ه๏ͰϏϡʔͷϨΠΞ΢τఆ͕ٛग़དྷΔ • CSS3ͷFlexboxϨΠΞ΢τ͕࢖͑Δ • ͍·Ͳ͖ͬΆ͍ઃܭࢥ૝(Flux, Redux) • ϒϥ΢βײ֮Ͱɺը໘Ϧϩʔυ͢Δ͚ͩͰ࣮૷֬ೝͰ͖Δ(⌘+R Ωʔ)
  12. React Nativeͷ ؤுͬͯཉ͍͠ॴ • React Nativeຊମ͕·ͩ·ͩ҆ఆ͍ͯ͠ͳ͍ • React NativeΛόʔδϣϯΞοϓ͢ΔͱϥΠϒϥϦ͕ಈ͔ͳ͘ ͳͬͨΓ͢Δ

    • ϋΠϒϦουΞϓϦͱ͍͍ͭͭɺAndroid/iOS ྆ํରԠ͢Δ ͷ͕͔ͳΓେม • ΞϓϦͷڍಈ͕ॏ͍ • ࠓޙʹظ଴
  13. ൪֎ɿήʔϜܥ • Unity, Unreal Engine, Cocos2D… • ήʔϜܥ͸ྫ֎ͰɺϋΠϒϦου։ൃ͕جຊ • جຊతʹήʔϜͷੈքͰ׬݁͢Δ

    • UI͕OSґଘ͠ͳ͍ • ωΠςΟϒ࣮૷ίετΑΓɺήʔϜಛ༗ͷUIɾػ ೳ࣮૷ίετͷ΄͏͕ߴ͍(ϨϯμϦϯάॲཧͳͲ)