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

両OSやるマンという選択

 両OSやるマンという選択

iosdc2017

Ken Jumbo Haneda

September 16, 2017
Tweet

More Decks by Ken Jumbo Haneda

Other Decks in Programming

Transcript

  1. ྆OS΍ΔϚϯͱ͍͏બ୒
    J04%$!5SBDL$

    View Slide

  2. View Slide

  3. δϟϯϘ@jumboOrNot
    Kentaro Haneda
    Mobile [email protected]
    Swift/kotlin/Golang/WebRTC

    View Slide

  4. View Slide

  5. View Slide

  6. Q. Android։ൃͷܦݧ͕͋Δͱ͍͏ํ
    ಥવͰ͕͢ʢͦͷ1ʣ

    View Slide

  7. Q. kotlinͰͷAndroid։ൃͷܦݧ͕͋Δͱ͍͏ํ
    ಥવͰ͕͢ʢͦͷ2ʣ

    View Slide

  8. ࠓ೔ͷ఻͍͑ͨ͜ͱ
    ʮ྆ํͷOSͷΞϓϦΛ࡞Δͷ͸ָ͍͠͠ɺ
    ͍͍ͧͬͯ࿩ʯ

    View Slide

  9. ಋೖ
    “ҰਓͰ྆OSϑϧωΟςΟϒͰॻ͍͍ͯΔ࿩”

    View Slide

  10. WebͷձࣾͰΞϓϦࣄۀΛ࡞ΔͨΊʹస৬ͯ͠
    ੎͍Ͱ྆OSͷΞϓϦΛҰਓͰ࡞Δ͜ͱʹͳͬͨɾɾɾ
    ͋ͳͨͳΒͲ͏͠·͔͢ʁ
    ΨϯΨϯ͍͜͏ͥ ͍ͷͪΛ͍ͩ͡ʹ
    ͍͍͔Βస৬
    ͍Ζ͍Ζ΍Ζ͏ͥ

    View Slide

  11. ʮ੎͍Ͱݴ͚ͬͨͲAndroidΘ͔ΒΜ͠ɺ

    ͦ΋ͦ΋Ұਓͱ͸ɾɾɾʯ
    ΨϯΨϯ͍͜͏ͥ ͍ͷͪΛ͍ͩ͡ʹ
    ▶︎ ͍͍͔Βస৬
    ͍Ζ͍Ζ΍Ζ͏ͥ

    View Slide

  12. ʮ·͊΍ͬͯΈΔ͔ʯ
    ΨϯΨϯ͍͜͏ͥ ͍ͷͪΛ͍ͩ͡ʹ
    ͍͍͔Βస৬
    ▶︎ ͍Ζ͍Ζ΍Ζ͏ͥ

    View Slide

  13. ϨΞδϣϒӳձ࿩ΞϓϦ
    Ͱ͖͕͋Γ͕ͪ͜Β

    View Slide

  14. 3BSF+PCΞϓϦ J04 "OESPJE
    ։ൃݴޠ 4XJGU LPUMJO
    ։ൃ؀ڥ 9DPEF "OESPJE4UVEJP
    ΞʔΩςΫνϟ 3Y4XJGU.77. 3Y+BWB.77.
    ओͳϥΠϒϥϦ
    3Y4XJGU "1*,JU
    )JNPUPLJ 3FBMN
    3Y+BWB 3FUSpU 

    0L)551 3YCJOE
    Ξοϓσʔτස౓ গ ଟ
    Ϋϥογϡ গ ͪΐͬͱଟ
    ϨϏϡʔ
    Ϣʔβʔൺ཰
    ͦͯ͠1೥΄Ͳӡ༻ͯͨ݁͠Ռ

    View Slide

  15. ͜͏ͯ͠ʮ྆OS΍ΔϚϯʯʹͳͬͨɾɾɾ
    ͦΜͳ͜ΜͳͰ1೥͘Β͍ܦͪ·ͨ͠

    View Slide

  16. ࠓ೔ͷ࿩
    1೥ͷӡ༻Ͱಘͨؾ͖ͮ΍஌ݟ͔Β

    1. ചΕํ
    2. ࡞Γํ
    3. ࡞Δ΋ͷ
    4. ίʔυ


    ͷҧ͍ΛฐࣾͷࣄྫΛަ͑ͯ͝঺հ

    View Slide

  17. σόΠεɾ04ͷൺֱ
    ചΕํͷҧ͍Λ஌Δ
    “iOSͱAndroid”

    View Slide

  18. 2017೥಄ͷσόΠεγΣΞ
    Ҿ༻: http://www.idc.com/promo/smartphone-market-share/os
    http://www.ai-bibo.net/entry/2017/02/10/113350, https://www.kantarworldpanel.com/global/smartphone-os-market-share/
    14.7
    49.5
    16.4
    42
    4.3
    85
    49
    83.5
    56.4
    94.4
    0.2 0.95 1.42 1.61 1.3
    0
    20
    40
    60
    80
    100
    120


    ios android

    View Slide

  19. 2016೥ͷϚʔέοτऩӹϥϯΩϯά - ΫΠζ
    ■ iOS
    1Ґ China
    2Ґ Unites States
    3Ґ ???
    Android

    1Ґ ???
    2Ґ United States
    3Ґ South Korea
    Ҿ༻: https://www.appannie.com/jp/insights/market-data/app-annie-2016-retrospective/

    View Slide

  20. 2016೥ͷϚʔέοτऩӹϥϯΩϯά - ౴͑
    ■ iOS
    1Ґ China
    2Ґ Unites States
    3Ґ Japan
    Android

    1Ґ Japan
    2Ґ United States
    3Ґ South Korea
    Ҿ༻: https://www.appannie.com/jp/insights/market-data/app-annie-2016-retrospective/
    ೔ຊ͸DL਺ͱऩӹֹ͕͍ۚۙਪҠͰ
    ಈ͍͍ͯΔɻ
    ୯ՁͰݟΔͱؖࠃͱ͔͸DL਺͕গͳׂ͍ʹ
    ऩӹֹ͕ଟ͍ͷͰ୯Ձ͕େ͖͍ɻ
    ଞࠃϦʔδϣϯ΁ͷల։Λ͍ͯ͠Δ
    ΞϓϦʹؔ܎͍ͯ͠Δਓ͸ͥͻAppAnnieͷ
    2016೥ͷϨϙʔτΛݟ͍ͯͩ͘͞ɺ
    ௒໘ന͍Ͱ͢

    View Slide

  21. ͦΕͧΕͷϚʔέοτ
    Φεεϝهࣄ: https://growthhackjournal.com/app-store-optimization-tips-and-checklist-2017/
    https://www.quora.com/Are-there-any-SEO-guides-for-mobile-apps-Google-Play-and-AppStore
    Google Play
    AppStore
    • ৹͕ࠪඞཁ
    • આ໌΍λΠτϧ΋৹ࠪ
    ඞཁ
    • εΫγϣ͸αΠζݻఆ
    • ϨΪϡϨʔγϣϯݫ͠
    ͍ʢ”ແྉ”ͳͲ࢖͑ͳ
    ͍จݴʣ
    • ιʔγϟϧͳӨڹ͸ϥ
    ϯΩϯάʹߟྀ͞Εͳ
    ͍
    • ετΞͷػೳΞοϓσʔ
    τ͸ͦ͜·Ͱසൟʹͳ
    ͍
    • ৹͕ࠪෆཁ
    • ετΞͷ಺༰͸΄΅શͯ
    ABςετͰ͖Δ
    • εΫγϣ͸αΠζࢦఆॊೈ
    • ϨΪϡϨʔγϣ͸ൺֱతΏ
    Δ͍
    • ιʔγϟϧͳӨڹ͸ϥϯΩ
    ϯάʹߟྀ͞ΕΔ
    • ετΞͷػೳΞοϓσʔτ
    ͕සൟͰศརͳػೳ͕ଟ͍

    View Slide

  22. ϓϩμΫτͷൺֱ
    ࡞Δ΋ͷͷҧ͍Λ஌Δ
    “iOSΞϓϦͱAndroidΞϓϦ”

    View Slide

  23. σβΠϯ - ΨΠυϥΠϯ
    Ҿ༻: https://developer.apple.com/ios/human-interface-guidelines/overview/design-principles/
    Three primary themes differentiate iOS from
    other platforms.
    • Clarity

    ໌ྎͰΔ͜ͱ
    • Deference
    ߇͑ΊͰ͋Δ͜ͱ
    • Depth
    Ԟߦ͖͕͋Δ͜ͱ


    View Slide

  24. σβΠϯ - ΨΠυϥΠϯ
    Ҿ༻: https://material.io/guidelines/#introduction-goals
    Material Design Principles.
    • Bold, graphic, intentional
    େ୾ʹɺੜ͖ੜ͖ͱɺҙਤతʹ
    • Motion provides meaning
    ಈ͖͸ҙຯΛఏڙ͢Δ
    • Material is the metaphor

    ϚςϦΞϧ͸ϝλϑΝʔͰ͋Δ

    View Slide

  25. σβΠϯ - ΨΠυϥΠϯ
    Ҿ༻: https://material.io/guidelines/#introduction-goals
    • Material is the metaphor

    ϚςϦΞϧ͸ϝλϑΝʔͰ͋Δ

    View Slide

  26. σβΠϯ - େ͖͞ͷදݱ
    ■ iOS
    - px 

    pixel
    
 σόΠεαΠζ͕ҟͳΔ࣌ʹpxࢦఆ
    σόΠεαΠζ͕ҟͳΔ࣌ʹdpࢦఆ
    dpiͷදݱ
    Android
    - dp

    density-independent pixels 

    (ີ౓ඇґଘϐΫηϧ)
    - dpi 

    dots per inch

    (ը໘ີ౓)

    1inchͷதͷdot਺

    View Slide

  27. σβΠϯ - ΞΠίϯͳͲͷඞཁͳը૾
    ■ iOS
    - Image Assets 

    2x/3x͕͋Ε͹͍͍ɺRetina = 2x/Plus = 3x

    Android
    - dpi 

    hdpi, xhdpi, xxhdpi ͷ 3 छྨͷղ૾౓Ͱɺ

    ੈքͷશγΣΞͷ 8 ׂ
    Ҿ༻: https://developer.android.com/about/dashboards/index.html#Screens
    http://yuki312.blogspot.jp/2012/10/androidxhdpi.html

    View Slide

  28. σβΠϯ - ߏ੒
    ■ iOS
    - Navigation Controller/

    ViewController Classes 

    ը໘Λදݱ͢ΔΫϥε͕ܾ·͍ͬͯΔɺ

    ContainerΛ࢖͍Viewίϯϙʔωϯτͱͯ͠΋

    ࢖͑Δ

    Android
    - Activity
    - Fragment
    - View

    ϥΠϑαΠΫϧɺ࠶ར༻ੑɺ

    όοΫΩʔɺΩʔΠϕϯτɺ

    ςʔϚΛ͔࣋ͭͲ͏͔ͳͲ

    ҟͳΔ෦෼͕ଟ͍
    ཧղ͢ΔͨΊͷΦεεϝهࣄ: https://www.slideshare.net/yanzm/droid-kaigi2015-yanzm

    View Slide

  29. σβΠϯ - ߏ੒
    Android
    - Activity
    - Fragment
    - View


    ྆OS΍ΔϚϯʹͳΔʹ౰ͨͬͯ࠷ॳʹͭ·ͮ͘ϙΠϯτɻ



    Q. ݁ہͲΕͰը໘Λ࡞Δͷ͕͍͍ͷʁ

    A. ΈΜͳ͕ͪͬͯΈΜͳ͍͍ɻ
    ͭ·Γɾɾɾ

    View Slide

  30. σβΠϯ - ߏ੒
    Android
    - Activity
    - Fragment
    - View


    A. ΄΅perfume.
    View
    Fragment
    Activity

    View Slide

  31. σβΠϯ - ߏ੒
    Android
    - Activity
    - Fragment
    - View


    ͨͩͦΕͰ΋͋͑ͯݴ͏ͳΒ
    "ը໘֊૚ͷSPPUʹ͍ۙ΋ͷ΄Ͳ"DUJWJUZ'SBHNFOU7JFX

    ͭ·ΓJ04Ͱ͍͏.PEBMͱݺ͹Ε͍ͯͨ෦෼ʹ૬౰͢Δͱ͜ΖΛ

    "DUJWJUZͰදݱ͢Δͷ͕͏·͍͘͘

    View Slide

  32. ΫϩεϓϥοτϑΥʔϜͱ͍͏બ୒ࢶ
    ■ ϏδωεαΠυࢹ఺
    - ը໘ͷڞ௨։ൃͳͲ։ൃίετͷ࡟ݮ

    ■ ΤϯδχΞαΠυࢹ఺
    - ࠷৽ͷωΠςΟϒAPI΁ͷར༻ݒ೦
    - αϙʔτ͕ා͍
    - ࣮ࡍ׳Ε͍ͯΔݴޠͰ࡞ͬͨ΄͏͕ڞ௨Ͱ࡞ΔΑΓ

    ૣ͍ͷͰ͸ʁ
    - υΩϡϝϯτ͕ා͍
    - ΩϟϦΞతʹා͍

    View Slide

  33. ։ൃ؀ڥͷൺֱ
    ࡞Γํͷҧ͍
    “XcodeͱAndroid Studio”

    View Slide

  34. ڞ༗Ͱ͖Δ͜ͱͰ͖ͳ͍͜ͱ
    ڞ௨Խ Ͱ͖Δʁ ϝϞ
    σβΠϯ ✖
    ϓϥοτϑΥʔϜͷσβΠϯΨΠ
    υϥΠϯʹै͍·͠ΐ͏
    ઃܭɾΞʔΩςΫνϟ ˚ ͋ͱͰ࿩͠·͢
    ίʔυ ✖
    4XJGU,PUJO

    ม׵͸·ͩͰ͖ͳ͍ɾɾɾ
    $*$%ͳͲͷαʔϏε ˓ ͋ͱͰ࿩͠·͢
    ετΞ؅ཧ ✖
    ը૾΍εΫγϣͳͲඞཁͳ΋ͷ͕
    ݁ߏҧ͏
    ςετυΩϡϝϯτ ˚
    ࠩҟΛ͚ͭͳ͍ͷͰ͋Ε͹͋Δఔ
    ౓ڞ௨ԽͰ͖Δ͸ͣ
    Ϣʔβʔମݧ ˚
    σβΠϯ͕ҟͳΔͷͰɺΤϥʔද
    ه΍Ξχϝʔγϣϯ͸มΘΔ
    ΤσΟλ ˚
    ͕Μ͹Ε͹WJNͱ͔Ͱ΋ॻ͚Δ͚
    Ͳ݁ہϏϧυͱ͔Ͱඞཁ

    View Slide

  35. ࠷ۙͷXcodeͱAndroid Studioͷ৽ػೳ
    Xcode 9.0
    Android Studio 2.3
    ɾEmulatorͱͷΫϦοϓϘʔυڞ༗
    ɾσΟʔϓϦϯΫͷ؅ཧػೳ
    ɾInstant RunͷΞοϓσʔτ
    ɾϏϧυΩϟογϡͷσϑΥϧτ༗ޮԽ
    ɾωοτϫʔΫܦ༝ͷΞϓϦసૹ
    ɾෳ਺ಉ࣌ͷγϛϡϨʔλʔىಈ
    ɾSwift4ରԠ
    ɾϏϧυߴ଎Խ

    View Slide

  36. ։ൃ؀ڥ 9DPEF "OESPJE4UVEJP
    ಋೖ ָ ͪΐͬͱෳࡶ
    Ϙλϯ গͳ͍ ΊͪΌΊͪΌଟ͍
    ։ൃ؀ڥͱ

    ݴޠͷґଘ
    ڧ͍ɻ
    ͙͢όʔδϣϯ͋͛ͳ͍ͱ͍͚ͳ͍
    ऑ͍ɻ
    ݁ߏલͷόʔδϣϯͰ΋ಈ͘
    ύοέʔδɺϥΠϒϥϦ؅

    DPDPBQPETDBSUIBHFͳͲ

    ֎෦ͷπʔϧ
    (SBEMF
    Ϗϧυ࣌ؒ
    ࣮૷ʹ΋ΑΔ͚Ͳ
    ॏ͘ͳΓ͕ͪ
    ࣮૷ʹ΋ΑΔ͚Ͳ

    ͋·Γॏ͍ҹ৅͸ͳ͍
    ϨΠΞ΢τ؅ཧ
    4UPSZCPBSE"VUP-BZPVU

    ৴ڼ৺͕ඞཁ
    9.-

    ׂͱ$44ʹ͍ۙ
    ΤϛϡϨʔλʔͷ

    ࢖͍΍͢͞
    γϯϓϧɺͦ΋ͦ΋σόΠεࣗମ͕

    γϯϓϧͩ͠؅ཧָ͕
    ෳࡶͳ෦෼͕ଟ͍͕BECͰ

    $6*ܦ༝Ͱ؅ཧͰ͖Δ
    ϓϩδΣΫτ؅ཧ
    YDPEFQSPKYDXPSLTQBDFͳͲ

    ϓϩδΣΫτϑΝΠϧ͕࡞ΒΕγϯϓϧ
    ࣗ෼Ͱύεࢦఆͯ͠ىಈ͢Δɺ

    ؒҧ͑Δͱ͏·͘ಡΈࠐΊͳ͍
    ϓϩδΣΫτ࡞੒࣌ߏ੒
    ϓϩδΣΫτϑΝΠϧ͕΍΍͍͜͠ͱ͜Λ
    ͍͍ײ͡ʹݟͤͳ͍ͷͰΘ͔Γ΍͍͢
    ͍͖ͳΓΘ͔Βͳ͍΋ͷ͕ͨ͘͞
    Μੜ·ΕΔɻා͍
    ˎओ؍ʹجͮ͘ൺֱ

    View Slide

  37. ։ൃ؀ڥ͝ͱʹϏϧυΛ෼͚Δ - iOS
    Build Configuration / Scheme, ͋ͱ͸ݹ͍΍ΓํͩͱTarget΍ϚΫϩͰ෼͚ΔͳͲ
    1؀ڥ = 1 Scheme

    = 1 Debug, 1 Release Build

    ιʔείʔυ಺ͰϚΫϩͰίʔυΛ෼͚Δ͜ͱ
    ͕ଟ͍.

    View Slide

  38. ։ൃ؀ڥ͝ͱʹϏϧυΛ෼͚Δ - Android
    Build Variant = Build Type ✖ Flavor
    1؀ڥ = 2 Build Variant

    = 1 Debug, 1 Release Build Type

    ιʔείʔυ͕Build Variant͝ͱʹ෼͚ΒΕ
    Δɻجຊ͸ڞ௨ͷ΋ͷɺ͋Ε͹؀ڥ͝ͱͷ΋ͷ
    Λ࢖͏ɻ
    Build VariantΛ੾Γସ͑ΔͱࣗಈͰͦΕʹԠͨ͡Ϧιʔε͕બ͹ΕΔ

    View Slide

  39. CI/CDΛͲ͏͢Δ͔ʁ
    $JSDMF$* #JUSJTF 8FSDLFS #VEEZ#VJME +FOLJOT
    ରԠ04 ྆04 ྆04 "OESPJEͷΈ ྆04
    ྆04

    ʢ.BD04ͳΒʣ
    ࠷খϓϥϯ
    ྉۚ
    NP NP NP NP ࣗલ
    ແྉϓϥϯ

    ੍ݶ
    ͳ͠
    Ϗϧυ͕࣌ؒ෼Ҏ
    ಺ɺϏϧυճ਺͸݄
    ճ·Ͱͷ੍ݶ෇
    ͖
    Ϗϧυ࣌ؒ෼Ҏ
    ಺ɺ5SFMMP࿈ܞͳ͠
    ࣗલ
    ઃఆํ๏ :".-8FC :.-8FC
    %PDLFS*NBHF
    ඞཁ
    8FC ࣗલ
    ϝϞ ࢒೦ͳ͕Β༗ྉԽ
    Ϗϧυ͕࣌ؒҾ͔ͬ
    ͔Δ·Ͱ͸͜Ε࢖͑
    ͹͍͍ͱࢥ͍·͢ɻ

    ઃఆָ͕ͳͷͰɻ
    ͪΐͬͱલʹྲྀߦͬͯ
    ͨΠϝʔδ
    ΩϡʔΠϯά͕݁ߏଟ
    ͍ɺٸʹ࣌ؒ଴ͪͱ
    ͔͋Δɻಠࣗͷϑϩʔ
    Ͱ$*ͳͲ͕ಈ͘ͷͰͱ
    ͖ͬͭʹ͍͘ҹ৅ɻ
    ਏ͍͚Ͳɺ΍ͬͺ֦ு
    ੑ͸Ұ൪͋ΔͷͰ
    "QQJVNͱ͔Ͱ6*ςε
    τ΋͍ͨ͠ਓͱ͔ɺ
    .BDͷ༨͍ͬͯΔਓ
    ͸͍͍͔΋

    View Slide

  40. ݕ౼ͷ຤ɺզ͕Ո͸Bitrise
    ઃఆ͸྆OS΍ͬͯ΋1೔ͰͰ͖Δͱࢥ͍·͢ɻ
    - YAML׳Εͯͳͯ͘΋ɺworkflowͰWeb্Ͱࢦఆͨ͠؀ڥม਺͔Β

    ੜ੒͢Δ͜ͱ΋Ͱ͖Δ
    - ഑෍ɺitunesconnect΁ͷΞοϓϩʔυ·ͰͰ͖Δ
    - iOSͷAutomatically Manage Signinઃఆ͍ͯ͠Δͱࣦഊ͢Δʢॿ͚ͯʣ
    - PlayStoreʹ্͛Δͷʹ͸Ұख͍ؒΔʢBeta൛ͰͰ͖ΔNowʂʣ
    - ͲͪΒͷOS΋؀ڥ͝ͱʹϏϧυͰ͖Δ͸ͣ
    CI/CDΛͲ͏͢Δ͔ʁ

    View Slide

  41. ։ൃݴޠͷൺֱ
    ίʔυͷҧ͍
    ʢશ෦΍Δͱ͖Γ͕ͳ͍ͷͰ཈͑ͱ͍ͨ΄͏͕͍͍ͱ͚ͩ͜ʣ
    “Swiftͱkotlin”

    View Slide

  42. Enum
    // SwiftͱҟͳΔϙΠϯτ1. ෳ਺ͷॳظ஋ͷઃఆͱΞΫηε
    enum class Student(val firstName:String, val lastName:String, val age:Int){
    STUDNET1(firstName = "tarou", lastName = "tanaka", age = 10),
    STUDNET2(firstName = "jirou", lastName = "suzuki", age = 12)
    }
    print(Student.STUDNET1.firstName) // tarou
    print(Student.STUDNET2.firstName) // jirou
    print(Student.STUDNET1.toString()) // STUDNET1
    // SwiftͱҟͳΔϙΠϯτ2. ྻڍܕఆ਺ͷར༻ʹΑΓfilter΍foreach͕࢖͑Δ
    Student.values().forEach { student ->
    print(student.firstName)
    }
    kotlinʹ͓͚Δenum͸classͰ͋ΔͷͰɺෳ਺ͷॳظ஋Λ࣋ͬͨΓ

    Java४ڌͳͷͰͰ͖Δ͜ͱ͕ଟ͍˕
    ࢀߟ: https://dogwood008.github.io/kotlin-web-site-ja/docs/reference/enum-classes.html

    View Slide

  43. Protocol
    Φεεϝهࣄ: http://qiita.com/koher/items/ee31222b7f9b0ead3de7
    https://tech.recruit-mp.co.jp/mobile/swift-optional-method/
    protocol ≒ interface

    ͔ͳΓ͍ۙͷͰ͕͢ɺ
    ɾimplementʢ࣮૷ʣ͢΂͖΋ͷͱprotocolʢ࠾୒ʣ͢Δ΋ͷͰࢥ૝͕ҟͳΔ͜ͱ
    ɾkotlinͰ͸optional͕࢖͑ͳ͍
    ɾkotlin͸σϑΥϧτ͕finalʢܧঝෆՄʣͳͷͰimplementͰ͖ͳ͍৔߹΋͋Δ

    View Slide

  44. म০ࢺ
    TXJGU LPUMJO
    PQFO Ϟδϡʔϧ͔֗ΒͷΞΫηεΛڐՄ
    ʢ4XJGU͔ΒͷΞΫηείϯτϩʔϧʣ
    ܧঝΛڐՄ͢Δ

    ʢpOBM͕σϑΥϧτͳͷͰඞཁʹԠ࣮ͯ͡૷ʣ
    QVCMJD ผϞδϡʔϧ͔ΒΞΫηεͰ͖Δ͕
    ܧঝɾΦʔόʔϥΠυͰ͖ͳ͍
    ΞΫηεͰ͖ΔݶΓར༻Մೳ
    JOUFSOBM ಉ͡Ϟδϡʔϧ͔ΒΞΫηεͰ͖Δ ಉ͡Ϟδϡʔϧ͔ΒΞΫηεͰ͖Δ
    pMFQSJWBUF ಉ͡ιʔεϑΝΠϧ಺ͷΈΞΫηεͰ͖Δ
    QSJWBUF ఆٛ͞Εͨείʔϓ಺ͷΈ ͦͷΫϥε಺͚ͩݟ͑Δ
    QSPUFDUFE ͦͷΫϥεͱαϒΫϥε͔ΒͷΈݟ͑Δ
    pOBM ܧঝͰ͖ͳ͘ͳΔ ܧঝͰ͖ͳ͘ͳΔ
    ˎ஡৭͕σϑΥϧτ

    View Slide

  45. ར༻͢ΔϥΠϒϥϦ

    View Slide

  46. ར༻͢ΔϥΠϒϥϦ
    ৄ͍͜͠ͱ͸ͪ͜Βʹ
    ʮSwiftͰ࡞ͬͨ΋ͷΛKotlinͰ࡞͍ͬͯΔ࿩ - Qiitaʯ
    http://qiita.com/jumbOrNot/items/4f143c8dcf9620080382

    View Slide

  47. Swift to Kotlin
    Swift͔ΒkotlinͷίʔυΛ࡞ΔOSS
    https://github.com/angelolloqui/SwiftKotlin
    In fact, I explored an actual example using MVVM+Rx, where I got
    between a 50% and 90% of code similarity depending on the layer
    (non UIKit dependent is much more reusable than UIKit dependent
    classes of course). It took me around 30% the time to convert the
    Android version from the iOS version and
    I did not have SwiftKotlin then ;)

    View Slide

  48. ·ͱΊ
    ৭ʑ࿩͠·͕ͨ͠

    ɾڞ௨ԽͰ͖Δ෦෼ʢCI/CD΍ΞʔΩςΫνϟʣ
    ɾผʑʹߟ͑ͨํ͕͍͍෦෼ʢσβΠϯ΍ίʔυʣ

    ҧ͍Λҙࣝͯ͠ϓϩμΫτʹམͱ͠ࠐΉ͜ͱ͕Ұ൪ॏཁ

    ͩͱߟ͍͑ͯ·͢ɻͦͯ͠ئΘ͘͹

    ҰਓͰ΍Βͣʹෳ਺ਓͰ΍Γ·͠ΐ͏ʢޏ͍·͠ΐ͏ʣ

    View Slide

  49. r,FOUBSP)BOFEB!+VNCP0S/PU
    “Let’s start your career as ྆OS΍ΔϚϯ!”

    View Slide