Slide 1

Slide 1 text

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

Slide 2

Slide 2 text

No content

Slide 3

Slide 3 text

δϟϯϘ@jumboOrNot Kentaro Haneda Mobile Engineer@RareJob
 Swift/kotlin/Golang/WebRTC

Slide 4

Slide 4 text

No content

Slide 5

Slide 5 text

No content

Slide 6

Slide 6 text

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

Slide 7

Slide 7 text

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

Slide 8

Slide 8 text

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

Slide 9

Slide 9 text

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

Slide 10

Slide 10 text

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

Slide 11

Slide 11 text

ʮ੎͍Ͱݴ͚ͬͨͲAndroidΘ͔ΒΜ͠ɺ
 ͦ΋ͦ΋Ұਓͱ͸ɾɾɾʯ ΨϯΨϯ͍͜͏ͥ ͍ͷͪΛ͍ͩ͡ʹ ▶︎ ͍͍͔Βస৬ ͍Ζ͍Ζ΍Ζ͏ͥ

Slide 12

Slide 12 text

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

Slide 13

Slide 13 text

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

Slide 14

Slide 14 text

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೥΄Ͳӡ༻ͯͨ݁͠Ռ

Slide 15

Slide 15 text

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

Slide 16

Slide 16 text

ࠓ೔ͷ࿩ 1೥ͷӡ༻Ͱಘͨؾ͖ͮ΍஌ݟ͔Β
 1. ചΕํ 2. ࡞Γํ 3. ࡞Δ΋ͷ 4. ίʔυ
 
 ͷҧ͍ΛฐࣾͷࣄྫΛަ͑ͯ͝঺հ

Slide 17

Slide 17 text

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

Slide 18

Slide 18 text

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 

Slide 19

Slide 19 text

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/

Slide 20

Slide 20 text

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೥ͷϨϙʔτΛݟ͍ͯͩ͘͞ɺ ௒໘ന͍Ͱ͢

Slide 21

Slide 21 text

ͦΕͧΕͷϚʔέοτ Φεεϝهࣄ: 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ςετͰ͖Δ • εΫγϣ͸αΠζࢦఆॊೈ • ϨΪϡϨʔγϣ͸ൺֱతΏ Δ͍ • ιʔγϟϧͳӨڹ͸ϥϯΩ ϯάʹߟྀ͞ΕΔ • ετΞͷػೳΞοϓσʔτ ͕සൟͰศརͳػೳ͕ଟ͍

Slide 22

Slide 22 text

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

Slide 23

Slide 23 text

σβΠϯ - ΨΠυϥΠϯ Ҿ༻: https://developer.apple.com/ios/human-interface-guidelines/overview/design-principles/ Three primary themes differentiate iOS from other platforms. • Clarity
 ໌ྎͰΔ͜ͱ • Deference ߇͑ΊͰ͋Δ͜ͱ • Depth Ԟߦ͖͕͋Δ͜ͱ


Slide 24

Slide 24 text

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


Slide 25

Slide 25 text

σβΠϯ - ΨΠυϥΠϯ Ҿ༻: https://material.io/guidelines/#introduction-goals • Material is the metaphor
 ϚςϦΞϧ͸ϝλϑΝʔͰ͋Δ

Slide 26

Slide 26 text

σβΠϯ - େ͖͞ͷදݱ ■ iOS - px 
 pixel 
 σόΠεαΠζ͕ҟͳΔ࣌ʹpxࢦఆ σόΠεαΠζ͕ҟͳΔ࣌ʹdpࢦఆ dpiͷදݱ Android - dp
 density-independent pixels 
 (ີ౓ඇґଘϐΫηϧ) - dpi 
 dots per inch
 (ը໘ີ౓)
 1inchͷதͷdot਺

Slide 27

Slide 27 text

σβΠϯ - ΞΠίϯͳͲͷඞཁͳը૾ ■ 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

Slide 28

Slide 28 text

σβΠϯ - ߏ੒ ■ iOS - Navigation Controller/
 ViewController Classes 
 ը໘Λදݱ͢ΔΫϥε͕ܾ·͍ͬͯΔɺ
 ContainerΛ࢖͍Viewίϯϙʔωϯτͱͯ͠΋
 ࢖͑Δ 
 Android - Activity - Fragment - View
 ϥΠϑαΠΫϧɺ࠶ར༻ੑɺ
 όοΫΩʔɺΩʔΠϕϯτɺ
 ςʔϚΛ͔࣋ͭͲ͏͔ͳͲ
 ҟͳΔ෦෼͕ଟ͍ ཧղ͢ΔͨΊͷΦεεϝهࣄ: https://www.slideshare.net/yanzm/droid-kaigi2015-yanzm

Slide 29

Slide 29 text

σβΠϯ - ߏ੒ Android - Activity - Fragment - View
 
 ྆OS΍ΔϚϯʹͳΔʹ౰ͨͬͯ࠷ॳʹͭ·ͮ͘ϙΠϯτɻ
 
 
 Q. ݁ہͲΕͰը໘Λ࡞Δͷ͕͍͍ͷʁ
 A. ΈΜͳ͕ͪͬͯΈΜͳ͍͍ɻ ͭ·Γɾɾɾ

Slide 30

Slide 30 text

σβΠϯ - ߏ੒ Android - Activity - Fragment - View
 
 A. ΄΅perfume. View Fragment Activity

Slide 31

Slide 31 text

σβΠϯ - ߏ੒ Android - Activity - Fragment - View
 
 ͨͩͦΕͰ΋͋͑ͯݴ͏ͳΒ "ը໘֊૚ͷSPPUʹ͍ۙ΋ͷ΄Ͳ"DUJWJUZ'SBHNFOU7JFX
 ͭ·ΓJ04Ͱ͍͏.PEBMͱݺ͹Ε͍ͯͨ෦෼ʹ૬౰͢Δͱ͜ΖΛ
 "DUJWJUZͰදݱ͢Δͷ͕͏·͍͘͘

Slide 32

Slide 32 text

ΫϩεϓϥοτϑΥʔϜͱ͍͏બ୒ࢶ ■ ϏδωεαΠυࢹ఺ - ը໘ͷڞ௨։ൃͳͲ։ൃίετͷ࡟ݮ 
 ■ ΤϯδχΞαΠυࢹ఺ - ࠷৽ͷωΠςΟϒAPI΁ͷར༻ݒ೦ - αϙʔτ͕ා͍ - ࣮ࡍ׳Ε͍ͯΔݴޠͰ࡞ͬͨ΄͏͕ڞ௨Ͱ࡞ΔΑΓ
 ૣ͍ͷͰ͸ʁ - υΩϡϝϯτ͕ා͍ - ΩϟϦΞతʹා͍

Slide 33

Slide 33 text

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

Slide 34

Slide 34 text

ڞ༗Ͱ͖Δ͜ͱͰ͖ͳ͍͜ͱ ڞ௨Խ Ͱ͖Δʁ ϝϞ σβΠϯ ✖ ϓϥοτϑΥʔϜͷσβΠϯΨΠ υϥΠϯʹै͍·͠ΐ͏ ઃܭɾΞʔΩςΫνϟ ˚ ͋ͱͰ࿩͠·͢ ίʔυ ✖ 4XJGU,PUJO
 ม׵͸·ͩͰ͖ͳ͍ɾɾɾ $*$%ͳͲͷαʔϏε ˓ ͋ͱͰ࿩͠·͢ ετΞ؅ཧ ✖ ը૾΍εΫγϣͳͲඞཁͳ΋ͷ͕ ݁ߏҧ͏ ςετυΩϡϝϯτ ˚ ࠩҟΛ͚ͭͳ͍ͷͰ͋Ε͹͋Δఔ ౓ڞ௨ԽͰ͖Δ͸ͣ Ϣʔβʔମݧ ˚ σβΠϯ͕ҟͳΔͷͰɺΤϥʔද ه΍Ξχϝʔγϣϯ͸มΘΔ ΤσΟλ ˚ ͕Μ͹Ε͹WJNͱ͔Ͱ΋ॻ͚Δ͚ Ͳ݁ہϏϧυͱ͔Ͱඞཁ

Slide 35

Slide 35 text

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

Slide 36

Slide 36 text

։ൃ؀ڥ 9DPEF "OESPJE4UVEJP ಋೖ ָ ͪΐͬͱෳࡶ Ϙλϯ গͳ͍ ΊͪΌΊͪΌଟ͍ ։ൃ؀ڥͱ
 ݴޠͷґଘ ڧ͍ɻ ͙͢όʔδϣϯ͋͛ͳ͍ͱ͍͚ͳ͍ ऑ͍ɻ ݁ߏલͷόʔδϣϯͰ΋ಈ͘ ύοέʔδɺϥΠϒϥϦ؅ ཧ DPDPBQPETDBSUIBHFͳͲ
 ֎෦ͷπʔϧ (SBEMF Ϗϧυ࣌ؒ ࣮૷ʹ΋ΑΔ͚Ͳ ॏ͘ͳΓ͕ͪ ࣮૷ʹ΋ΑΔ͚Ͳ
 ͋·Γॏ͍ҹ৅͸ͳ͍ ϨΠΞ΢τ؅ཧ 4UPSZCPBSE "VUP-BZPVU
 ৴ڼ৺͕ඞཁ 9.-
 ׂͱ$44ʹ͍ۙ ΤϛϡϨʔλʔͷ
 ࢖͍΍͢͞ γϯϓϧɺͦ΋ͦ΋σόΠεࣗମ͕
 γϯϓϧͩ͠؅ཧָ͕ ෳࡶͳ෦෼͕ଟ͍͕BECͰ
 $6*ܦ༝Ͱ؅ཧͰ͖Δ ϓϩδΣΫτ؅ཧ YDPEFQSPKYDXPSLTQBDFͳͲ
 ϓϩδΣΫτϑΝΠϧ͕࡞ΒΕγϯϓϧ ࣗ෼Ͱύεࢦఆͯ͠ىಈ͢Δɺ
 ؒҧ͑Δͱ͏·͘ಡΈࠐΊͳ͍ ϓϩδΣΫτ࡞੒࣌ߏ੒ ϓϩδΣΫτϑΝΠϧ͕΍΍͍͜͠ͱ͜Λ ͍͍ײ͡ʹݟͤͳ͍ͷͰΘ͔Γ΍͍͢ ͍͖ͳΓΘ͔Βͳ͍΋ͷ͕ͨ͘͞ Μੜ·ΕΔɻා͍ ˎओ؍ʹجͮ͘ൺֱ

Slide 37

Slide 37 text

։ൃ؀ڥ͝ͱʹϏϧυΛ෼͚Δ - iOS Build Configuration / Scheme, ͋ͱ͸ݹ͍΍ΓํͩͱTarget΍ϚΫϩͰ෼͚ΔͳͲ 1؀ڥ = 1 Scheme
 = 1 Debug, 1 Release Build
 ιʔείʔυ಺ͰϚΫϩͰίʔυΛ෼͚Δ͜ͱ ͕ଟ͍.

Slide 38

Slide 38 text

։ൃ؀ڥ͝ͱʹϏϧυΛ෼͚Δ - Android Build Variant = Build Type ✖ Flavor 1؀ڥ = 2 Build Variant
 = 1 Debug, 1 Release Build Type
 ιʔείʔυ͕Build Variant͝ͱʹ෼͚ΒΕ Δɻجຊ͸ڞ௨ͷ΋ͷɺ͋Ε͹؀ڥ͝ͱͷ΋ͷ Λ࢖͏ɻ Build VariantΛ੾Γସ͑ΔͱࣗಈͰͦΕʹԠͨ͡Ϧιʔε͕બ͹ΕΔ

Slide 39

Slide 39 text

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ͷ༨͍ͬͯΔਓ ͸͍͍͔΋

Slide 40

Slide 40 text

ݕ౼ͷ຤ɺզ͕Ո͸Bitrise ઃఆ͸྆OS΍ͬͯ΋1೔ͰͰ͖Δͱࢥ͍·͢ɻ - YAML׳Εͯͳͯ͘΋ɺworkflowͰWeb্Ͱࢦఆͨ͠؀ڥม਺͔Β
 ੜ੒͢Δ͜ͱ΋Ͱ͖Δ - ഑෍ɺitunesconnect΁ͷΞοϓϩʔυ·ͰͰ͖Δ - iOSͷAutomatically Manage Signinઃఆ͍ͯ͠Δͱࣦഊ͢Δʢॿ͚ͯʣ - PlayStoreʹ্͛Δͷʹ͸Ұख͍ؒΔʢBeta൛ͰͰ͖ΔNowʂʣ - ͲͪΒͷOS΋؀ڥ͝ͱʹϏϧυͰ͖Δ͸ͣ CI/CDΛͲ͏͢Δ͔ʁ

Slide 41

Slide 41 text

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

Slide 42

Slide 42 text

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

Slide 43

Slide 43 text

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Ͱ͖ͳ͍৔߹΋͋Δ

Slide 44

Slide 44 text

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

Slide 45

Slide 45 text

ར༻͢ΔϥΠϒϥϦ

Slide 46

Slide 46 text

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

Slide 47

Slide 47 text

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 ;)

Slide 48

Slide 48 text

·ͱΊ ৭ʑ࿩͠·͕ͨ͠ 
 ɾڞ௨ԽͰ͖Δ෦෼ʢCI/CD΍ΞʔΩςΫνϟʣ ɾผʑʹߟ͑ͨํ͕͍͍෦෼ʢσβΠϯ΍ίʔυʣ 
 ҧ͍Λҙࣝͯ͠ϓϩμΫτʹམͱ͠ࠐΉ͜ͱ͕Ұ൪ॏཁ
 ͩͱߟ͍͑ͯ·͢ɻͦͯ͠ئΘ͘͹
 ҰਓͰ΍Βͣʹෳ਺ਓͰ΍Γ·͠ΐ͏ʢޏ͍·͠ΐ͏ʣ

Slide 49

Slide 49 text

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