$30 off During Our Annual Pro Sale. View Details »

クックパッドのiOS更新との付き合い方 / CAMPFIRE iOS #2

クックパッドのiOS更新との付き合い方 / CAMPFIRE iOS #2

CAMPFIRE iOS #2 で発表した時の資料です。
iOSの更新がきたときにクックパッドではどういう事を考えてどう対応しているか話しました。

Tomohiro Moro

June 13, 2017
Tweet

More Decks by Tomohiro Moro

Other Decks in Programming

Transcript

  1. ΫοΫύουͷ
    iOSߋ৽ͱͷ෇͖߹͍ํ
    2017/06/12
    CAMPFIRE iOS #2
    ΫοΫύουגࣜձࣾ
    ໜ࿊ ஐେ

    View Slide

  2. ࣗݾ঺հ
    • ໜ࿊ ஐେ - @slightair
    • iOS ΞϓϦΤϯδχΞ
    • ΫοΫύουגࣜձࣾ ٕज़෦ ϞόΠϧج൫άϧʔϓ
    • ࣾ಺ͷ։ൃ؀ڥ੔උɺαʔϏε։ൃ෦ॺͷٕज़తࢧԉ͕ۀ຿
    • https://github.com/slightair

    View Slide

  3. ಺༰
    • աڈͷ iOS & Xcodeߋ৽ͷରԠࣄྫͷ঺հ
    • ৽͍͠ػೳΛಋೖɾར༻͢Δཧ༝
    • iOSͷߋ৽࣌ʹ஫ҙ͍ͯ͠Δͱ͜Ζ
    • ৽ػೳಋೖͷ൑அج४

    View Slide

  4. Handoff ରԠ
    • iOSͱMacͷମݧΛҾ͖ܧ͙ػೳɺiOS8Ͱ௥Ճ͞Εͨ
    • ΫοΫύουΞϓϦͰ͸ΞϓϦ·ͨ͸ MacͰΈ͍ͯͨϨγϐը
    ໘Λ΋͏ยํʹҾ͖ܧ͙Α͏ʹ
    • ϦϦʔε౰ॳ apple-app-site-association΁ͷΞΫηε͕ΞϓϦ
    ࣗಈΞοϓσʔτʹ࿈ಈͯ͠ʁ೔෇Λ௒͑Δ࣌ʹεύΠΫ͢Δ
    ໰୊ʹૺ۰
    .BD͔ΒJ1IPOFʹભҠͤ͞Α͏ΫοΫύου։ൃऀϒϩά
    IUUQUFDIMJGFDPPLQBEDPNFOUSZ

    View Slide

  5. AppleWatch ରԠ
    • AppleWatch ʹϨγϐΛදࣔ
    • ϨγϐͰࢦఆ͞Εͨ࣌ؒͷ
    λΠϚʔΛઃఆ
    • 2015/3/27 ެ։ɺ2016/10/27 ऴྃ
    $PPLQBE"QQMF8BUDI"QQ஀ੜͷ෣୆ཪΫοΫύου։ൃऀϒϩά
    IUUQUFDIMJGFDPPLQBEDPNFOUSZ

    View Slide

  6. Swift
    • WWDC2014 ͰൃදɺΫοΫύουΞϓϦͰ͸ 2016/5 ͋ͨΓ͔Βར༻։࢝
    • ΞϓϦΛૉૣ͘ɺ҆શʹॻ͖͍ͨ…→ϥΠϒϥϦͷબఆ΋ؚΊɺ৻ॏʹಋೖ
    ΛਐΊ͖ͯͨ
    • ϨΨγʔίʔυΛϦϑΝΫλϦϯάͨ͠Γ ObjC ͷ nullability,
    LightweightGenerics ͳͲΛ௥Ճͨ͠Γे෼ʹ४උΛͯ͠ಋೖ
    • Swift 2.3 Λܦ༝ͯ͠ 2016/12 ʹ͸ Swift 3 ʹҠߦ׬ྃ
    4XJGUϚΠάϨʔγϣϯΫοΫύου։ൃऀϒϩά
    IUUQUFDIMJGFDPPLQBEDPNFOUSZ

    View Slide

  7. 100%Λ໨ࢦ͍ͯ͠ΔΘ͚Ͱ͸ͳ͍͕ɺׂ߹͕େ͖͚
    Ε͹SwiftͷػೳΛϑϧͰ࢖͑Δͱ͜Ζ͕޿͍ͱ͍͏
    ͜ͱʹͳΔ͸ͣ…
    2017/6 ݱࡏͷ Swift coverage

    View Slide

  8. ৽͍͠ػೳΛಋೖɾར༻͢Δཧ༝
    • རศੑ޲্ͷͨΊ
    • ϓϩϞʔγϣϯͷͨΊ
    • ։ൃޮ཰޲্ͷͨΊ

    View Slide

  9. རศੑ޲্ͷͨΊ
    • 4.7 / 5.5 Πϯν ը໘ରԠ (ࠓͱͳͬͯ͸౰ͨΓલ)
    • Spotlight ͰϨγϐݕࡧ
    • Shared Web Credential
    • ͳͲͳͲ
    ୺຤΍OSͷਐԽʹΑͬͯΞϓϦͰͰ͖Δ͜ͱ͸
    ͲΜͲΜ૿͍͑ͯΔ

    View Slide

  10. ϓϩϞʔγϣϯͷͨΊ
    • Handoff ରԠ
    • AppleWatch ରԠ (ݱࡏ͸ऴྃͯ͠Δ͚Ͳ…)
    ‣ Apple ͷαΠτʹࡌͤͯ΋ΒͬͨΓɺχϡʔεαΠτ
    ͳͲͰ࿩୊ʹͯ͠΋ΒͬͨΓ͠·ͨ͠
    ৽ػೳΛར༻ͨ͠ΞϓϦ͸ AppStoreͰऔΓ্͛
    ΒΕΔ͜ͱ΋͋ΓɺޮՌ͕ߴ͍

    View Slide

  11. ։ൃޮ཰޲্ͷͨΊ
    • Swift ͷར༻
    • AutoLayoutؔ࿈ɺUIStackViewɺWebViewͳͲͳͲ
    • ඇਪ঑ʹͳͬͨ API ͷར༻ՕॴΛ࢒͢ͱෛ࠴ʹ…
    Ϣʔβʹݟ͑Δͱ͜Ζ͚ͩͰ͸ͳ͘։ൃͷ͠΍
    ͢͞ɺ҆ఆੑ޲্ʹ΋Өڹ͕͋Δ

    View Slide

  12. iOSߋ৽࣌ʹ஫ҙ͍ͯ͠Δͱ͜Ζ
    • มߋ఺ͷ৘ใऩू
    • ࣄۀ΁ͷӨڹ
    • ։ൃ؀ڥͷมԽʹ௥ै
    • αϙʔτόʔδϣϯͷݟ௚͠

    View Slide

  13. มߋ఺ͷ৘ใऩू
    • ެࣜυΩϡϝϯτɺAPI diff ͳͲ
    • iOS ΍ Xcode ͷ beta ൛͕͖ͨΒ͙͢ࢼͦ͏
    • beta ൛Λ৮͍ͬͯͯυΩοͱͨ͜͠ͱ
    ‣ UniversalLinks ͷόάͰҙਤͤͣ SPWeb ͷશͯͷϦϯΫ͔Β
    ΞϓϦىಈͪ͠Ό͏ → ్தͰಈ͖͕มΘͬͨ
    ‣ 10.3 beta2ɺΞϓϦ࡟আͰ Keychain ͷ৘ใ΋ফ͑Δ → औΓԼ͛
    • όά͔ͳʁͬͯࢥͬͨΒόάϨϙʔτΛૹΖ͏ɺϑΥʔϥϜΛݟΑ͏
    J04ͷϦϦʔεͰΫοΫύουʹى͖ͨ͜ͱΫοΫύου։ൃऀϒϩά
    IUUQUFDIMJGFDPPLQBEDPNFOUSZ

    View Slide

  14. ࣄۀ΁ͷӨڹ͕ͳ͍͔୳Δ
    • ίϯςϯπϒϩοΧʔ
    ‣ εϚʔτϑΥϯWebͷ޿ࠂͲ͏ͳΔͷ
    ‣ ΞϓϦͷ͜ͱ͚ͩؾʹ͢Ε͹͍͍Θ͚Ͱ΋ͳ͍
    • App Transport Security
    ‣ Ͳ͜·ͰରԠ͢Ε͹͍͍ͷɺඞਢԽԆظͨ͠͠…
    ‣ ޿ࠂ SDK ͷ௨৴ͳͲ͚ࣗࣾͩͰղܾ͠ͳ͍΋ͷ΋͋Δ
    ޿ࠂϒϩοΧʔͷݕ஌ͱܭଌʹ͍ͭͯΫοΫύου։ൃऀϒϩά
    IUUQUFDIMJGFDPPLQBEDPNFOUSZ
    "QQ5SBOTQPSU4FDVSJUZͱωοτϫʔΫ޿ࠂΫοΫύου։ൃऀϒϩά
    IUUQUFDIMJGFDPPLQBEDPNFOUSZ

    View Slide

  15. ։ൃ؀ڥͷมԽʹ௥ै͢Δ
    • Xcode, Swift ͷόʔδϣϯΞοϓʹ௥ैͯ͠ɺ
    ҆ఆͨ͠ϦϦʔεαΠΫϧͷͨΊͷݒ೦Λ෷১
    ͢Δ
    • Swift ੡ͷϥΠϒϥϦ΍πʔϧΛߋ৽͢Δ
    • ։ൃΛଓ͚Δ͜ͱ͕Ͱ͖ͳ͍Α͏ͳঢ়گʹͳ
    Βͳ͍Α͏ؾΛ഑Δ

    View Slide

  16. αϙʔτόʔδϣϯͷݟ௚͠
    • جຊతʹ৽ػೳ͕࢖͑Δͷ͸৽͍͠όʔδϣϯͷ
    iOSͷΈ
    • جຊ͸௚ۙ2όʔδϣϯΛαϙʔτ͢Δํ਑ɺ
    Ϣʔβൺ཰Λݟͯ൑அ
    • Ϣʔβ૚తʹૢ࡞͕ಘҙͰͳ͍ਓ΋ߟྀͯ͠ɺ
    OSߋ৽ͷҊ಺Λ͖ͪΜͱߦ͑ΔΑ͏ʹ͢Δ

    View Slide

  17. ৽ػೳಋೖͷ൑அج४
    • Ϣʔβ͕ศརʹͳΔػೳɺఏڙαʔϏεͱϚον͢Δ΋ͷ͸
    ੵۃతʹऔΓ૊Ή
    • ػೳϦϦʔεޙʹऔΓԼ͛Δ͜ͱ΋͋Δ
    ‣ AppleWatch ͸զʑ͕αʔϏε֦େ૾Λ͏·͘ඳ͚ͳ͔ͬͨ
    ‣ த్൒୺ͳରԠঢ়گͰ࢒ͯ͠΋ϢʔβɾαʔϏεఏڙଆ૒ํ
    ʹෆརӹͱ൑அ
    • ϦϦʔε͠ͳͯ͘΋ϓϩτλΠϓΛ࡞͍ͬͯͨɺͱ͍͏͜ͱ΋
    ‣ tvOS ͷΞϓϦΛࢼ͠ʹ࡞ͬͨ

    View Slide

  18. ৽ػೳಋೖͷ൑அج४
    • ։ൃޮ཰΍ύϑΥʔϚϯεɺηΩϡϦςΟ͕޲্͢
    ΔͳΒɺ࠾༻
    • ໌Β͔ʹ΍Βͳ͍ͱߦ͖٧·Δ΋ͷ͸΍Δ͔͠ͳ͍
    ‣ Swift ΍ Xcode ͳͲͷ։ൃπʔϧͷߋ৽
    ‣ ৽APIͷͨΊʹ࠷৽ͷ SDK Λ࢖͏ඞཁ͕͋Δ͜ͱ
    ΋ → Α΄Ͳͷཧ༝͕ͳ͔ͬͨΒ࠷৽Λ࢖͏

    View Slide

  19. ·ͱΊ
    • ఏڙαʔϏε΍ΞϓϦʹ΋ΑΔͱ͸ࢥ͏͕ɺϢʔβ͕ศརʹ
    ͳΔ৽ػೳ͸ੵۃతʹ࠾༻͍͖͍ͯͨ͠
    • όʔδϣϯΞοϓʹΑΔมߋ఺ͷ৘ใऩू͸͔ͬ͠Γ΍Ζ͏ɺ
    ৭ʑͳ໘͔ΒӨڹ͕ͳ͍͔୳Δ
    • ҆ఆͨ͠ϦϦʔεαΠΫϧΛճͨ͢Ίɺ։ൃ؀ڥʹؔΘΔมߋ
    ʹ͸ૉૣ͘௥ै͢Δ΂͠
    • ৔߹ʹΑͬͯόάϨϙʔτΛग़ͨ͠ΓϑΥʔϥϜͰฉ͍ͯΈΔ
    ͷ͕Α͍

    View Slide