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

Xcode8 で開発はどうかわったのか

Xcode8 で開発はどうかわったのか

iOSオールスターズ2
https://eventdots.jp/event/602872

Toshihiro Morimoto

November 20, 2016
Tweet

More Decks by Toshihiro Morimoto

Other Decks in Technology

Transcript

  1. 2016/11/20
    iOSΦʔϧελʔζ2
    @dealforest
    Toshihiro Morimoto
    Xcode8 Ͱ։ൃ͸Ͳ͏͔Θͬͨͷ͔

    View Slide

  2. ࣗݾ঺հ

    View Slide

  3. Works

    View Slide

  4. ຊ೔ͷΞδΣϯμ
    • Visual Debugging
    • App Signing
    • Xcode Plugin/Extension
    • ͓·͚ - TSan and Static Analysis

    View Slide

  5. ࠓ೔͠ͳ͍࿩
    • iOS
    • Storyboard
    • Swift
    • Xcode 7.3.1 -> Xcode 8 ΁ͷҠߦ

    View Slide

  6. Visual Debugging

    View Slide

  7. Visual Debugging
    • View Debugging
    • FPS Performance Gauge
    • Memory Graph Debugging

    View Slide

  8. View Debugging

    View Slide

  9. View Debugging
    • ϘλϯΛԡ͔ͯ͠Βͷ࣮ߦ଎౓͕ 70% ͸΍͘ͳͬͨ
    • transform, blur ͞Ε͍ͯͯ΋ਖ਼֬ʹϨϯμϦϯά͞ΕΔ
    • Ϋϥεఆٛʹඈ΂Δ
    • ΞυϨεͰϑΟϧλϦϯάͰ͖Δ
    • ݱࡏͷ AutoLayout ͷ੍໿Λ֬ೝͰ͖Δ

    View Slide

  10. ࣮ࡍʹ༗ޮʹ AutoLayout ͷ֬ೝ͕ग़དྷΔ

    View Slide

  11. FPS Performance Gauge

    View Slide

  12. FPS Performance Gauge

    View Slide

  13. Memory Graph Debugging

    View Slide

  14. ͜Ε͕ͱͯͭ΋ͳ͘ศརʂʂʂ

    View Slide

  15. Memory Leak Λ
    ݟ͚ͭΔͱ͖ʹྗΛൃش͠·͢ʂ

    View Slide

  16. ͜Ε͚ͩͷͨΊʹ
    Xcode 8 ʹҠߦͨ͠ͱݴͬͯ΋ɹɹ
    աݴͰ͸͋Γ·ͤΜ

    View Slide

  17. ͳʹΑΓோΊ͍ͯΔͱ
    ςϯγϣϯ͕͕͋Γ·͢

    View Slide

  18. ! Λλοϓ͢Ε͹ leak ͍ͯ͠Δ object Λදࣔ

    View Slide

  19. 410 - Visual Debugging with Xcode

    View Slide

  20. App Signing

    View Slide

  21. Signing Certificate per Mac

    View Slide

  22. ؾܰʹ Reset Λԡͯ͠͠·͏ͱ

    View Slide

  23. ͋Εʁʁ
    ϏϧυͰ͖ͳ͘ͳͬͨΜ͚ͩͲ…

    View Slide

  24. ((ƅЧƅ)); ŜƄŞŲƄſ

    View Slide

  25. Signing Certificate per Mac

    View Slide

  26. Signing Certificate per Mac

    View Slide

  27. Signing in Xcode

    View Slide

  28. Signing in Xcode

    View Slide

  29. View Slide

  30. Signing in Xcode

    View Slide

  31. Xcode 7

    View Slide

  32. Xcode 8

    View Slide

  33. Apple ͕ఏএ͢Δ Best Practice

    View Slide

  34. Development
    • Use automatic
    • Add all developers to team
    • Use the capabilities tab

    View Slide

  35. Manual
    • Don’t set CODE_SIGN_IDENTITY
    • Use the new general tab UI
    • Use the capabilities tab
    • Migrate to automatic

    View Slide

  36. 401 - What’s New in Xcode App Signing

    View Slide

  37. ͍͍͜ͱ͹͔ͬΓʹฉ͑͜Δʂʂ

    View Slide

  38. ·ɺͦΜͳΘ͚ͳ͍Ͱ͢ΑͶ

    View Slide

  39. fastlane, Enterprise ͕
    བྷΜͰ͘ΔͱΊΜͲ͍͘͞ʂʂ

    View Slide

  40. ΊΜͲ͍͘͞ϙΠϯτ
    • Team ͕ҟͳΔ
    - Automatic Signing ͩͱෳ਺νʔϜΛ·ͨ͛ͳ͍
    • BUNDLE IDENTIFIER ͕ҟͳΔ
    - Company ΞΧ΢ϯτͰ Automatic Signing Ͱɹ
    Ϗϧυ͸Ͱ͖Δ
    - Automatic Signing Ͱ archive ͕Ͱ͖ͳ͍

    View Slide

  41. ͔͠͠։ൃ࣌͸
    Automatic Signing Λ࢖͍͍ͨʂ

    View Slide

  42. Ͳ͏͢Δͷ͔

    View Slide

  43. Enterprise ରԠํ๏ -खಈϏϧυ-
    1. ֘౰͢Δ Cert, Provisioning Profile ΛΠϯετʔϧ
    2. Customised Signing Λ࢖͏
    3. ഑෍༻ͷ Configuration(scheme) ʹ Provisioning
    Profile Λબ୒
    4. archive -> export

    View Slide

  44. Enterprise ରԠํ๏ -fastlane-
    खಈϏϧυͱಉ͡Α͏ͳ͜ͱΛ͢Ε͹͍͍
    1. gym Ͱ࣮ߦ͢Δલʹ fastlane-plugin-
    update_project_codesigning Λ࢖ͬͯ Customised
    Signing ʹมߋ
    2. Cert, Provisioning Profile ͷࢦఆΛ xcconfig ʹॻ͍ͯ
    ͓͘
    3. ഑෍༻ͷ Configuration ʹ xcconfig Λࢦఆ͓ͯ͘͠
    4. gym Ͱ࣮ߦ͢Δޙʹ Automatic Signing ʹมߋ

    View Slide

  45. xcconfig ͷαϯϓϧ
    CODE_SIGN_IDENTITY = 1Q5231V7YW
    // CODE_SIGN_IDENTITY = iPhone Distribution:
    dealforest (1Q5231V7YW)
    PROVISIONING_PROFILE_SPECIFIER =
    PROVISIONING_PROFILE_app = f3f8281b-
    a115-4529-8dnd-60e111d92fae
    PROVISIONING_PROFILE = $(PROVISIONING_PROFILE_$
    (WRAPPER_EXTENSION))

    View Slide

  46. ͜ͷลΓ͸΋͏গ͠஌ݟ͕ͨ·Ε͹
    ϒϩάʹॻ͜͏͔ͳͱࢥ͏ͬͯ·͢

    View Slide

  47. Xcode Plugin/Extension

    View Slide

  48. Xcode Plugin
    • ඇެࣜͰ Xcode ͷ Plugin Λ࡞Δ͜ͱ͕Ͱ͖·ͨ͠
    • Alcatraz ͱ͍͏ Package Manager ΋͋Γ·ͨ͠
    • Xcode 8 ʹͳ͔ͬͯΒ͸ެࣜͰ Xcode Extension ͕
    αϙʔτ͞Ε࢖͑ͳ͘ͳΓ·ͨ͠ (ؤுΕ͹࢖͑Δ)

    View Slide

  49. Xcode 8 Ͱ Xcode Plugin Λ
    ࢖͏ํ๏

    View Slide

  50. ࢍ൱྆࿦͋Δͱࢥ͍·͕͢

    View Slide

  51. Xcode ͕ Apple ʹΑͬͯॺ໊͞ΕΔ
    Α͏ʹͳͬͨͷͰॺ໊Λ֎ͤ͹͍͍

    View Slide

  52. Xcode ͷॺ໊ͷ֎͠ํ
    • steakknife/unsign Λ࢖ͬͯࣗྗͰॺ໊Λ֎͢
    https://gist.github.com/dealforest/
    c5a5362005bce1a4280c34d18a5bc893
    • fpg1503/MakeXcodeGr8Again Λ࢖͏

    View Slide

  53. ྆ํͱ΋΍͍ͬͯΔ͜ͱ͸ಉ͡Ͱ
    ॺ໊Λ֎͍ͯ͠Δ͚ͩͰ͢

    View Slide

  54. ͋ͱ͸ Xcode Plugin ʹ
    ࢖͍͍ͨ Xcode ͷ UUID Λ௥Ճ͢Δ

    View Slide

  55. UUID ͷ௥Ճํ๏
    $ find ~/Library/Application\ Support/Developer/
    Shared/Xcode/Plug-ins -name Info.plist -maxdepth 3
    | xargs -I{} defaults write {}
    DVTPlugInCompatibilityUUIDs -array-add `defaults
    read /Applications/Xcode.app/Contents/Info
    DVTPlugInCompatibilityUUID`

    View Slide

  56. Xcode Extension
    • Xcode 8 ͔Βਖ਼ࣜʹαϙʔτ
    • ݱঢ় Plugin ͱ͸ҟͳΓͰ͖Δ͜ͱ͸ݶఆ͞Ε͍ͯΔ
    • ΞϓϦؒΛ XPC Ͱ௨৴࣮ͯ͠૷͍ͯ͠Δ

    View Slide

  57. Xcode 8 beta ͕ग़ͨ࣌ʹ͸
    গ͠੝Γ্͕͍͕ͬͯͨ...

    View Slide

  58. ࠓ Xcode Extension ͷ͜ͱΛ
    ݴ͍ͬͯΔਓ͸୭΋͍ͳ͍

    View Slide

  59. ͱ͍͏Θ͚Ͱ Xcode Extension ͷ
    ݱঢ়ʹ͍͓ͭͯ࿩͠͠·͢

    View Slide

  60. Ͳ͏͢Ε͹࢖͑ΔΑ͏ʹͳΔͷ͔
    • Xcode Extension ʹରԠ͍ͯ͠Δ Mac App ΛΠϯ
    ετʔϧ͢Ε͹࢖͑ΔΑ͏ʹͳΔ
    • App Store or GitHub or DMG Download

    View Slide

  61. ͱ͍͏Θ͚Ͱ
    App Store ΛݟͯΈ·͠ΐ͏

    View Slide

  62. App Store

    View Slide

  63. (ͭд⊂)ŠƄŢŠƄŢ

    View Slide

  64. App Store

    View Slide

  65. App Store

    View Slide

  66. ʢʀƅЧƅʣ …ʂʁ

    View Slide

  67. ҧ͍͕ͳʹ΋ͳ͍ͩͱ…

    View Slide

  68. Xcode Extension Ͱ͋Δ͜ͱ͕
    Θ͔Βͳ͍…

    View Slide

  69. ΧςΰϦ͕͋ΔΘ͚Ͱ΋ͳ͍͠…

    View Slide

  70. ͭΒ͍…

    View Slide

  71. Sierra ͩͱ͋Δͷ͔΋…
    ͱ୶͍ظ଴Λͯ͠·͢

    View Slide

  72. ͦΜͳ͋ͳͨͷͨΊʹ

    View Slide

  73. tib/awesome-xcode-extensions

    View Slide

  74. ࣮ࡍʹಈ࡞Ͱ͖Δঢ়ଶʹ
    ͳ͍ͬͯΔ͔ͷ֬ೝ

    View Slide

  75. System Preference -> Extensions

    View Slide

  76. ͓·͚ - TSan and Static Analysis

    View Slide

  77. Thread Sanitizer

    View Slide

  78. Diagnostics Ͱ༗ޮʹ͢Δ

    View Slide

  79. Diagnostics Ͱ༗ޮʹ͢Δ

    View Slide

  80. ͨͩ͠࢖͑Δঢ়گ͸ݶΒΕ͍ͯ·͢

    View Slide

  81. View Slide

  82. Static Analysis

    View Slide

  83. Product -> Analyze

    View Slide

  84. 412 - Thread Sanitizer and Static Analysis

    View Slide

  85. ·ͱΊ
    Xcode 8 ʹͳ͔ͬͯΒ௥Ճ͞Εͨػೳ͸ͨ͘͞Μ͋Γ·͢ɻ
    ຊ೔͸ͦͷҰ෦Λ঺հ͠·ͨ͠ɻ
    iOS 10 ͱ͸ҟͳΓࠓ͔ΒͰ΋ɺ͙͢ʹͰ΋࢖͑Δ΋ͷ͕ͨ
    ͘͞Μ͋Γ·͢ɻ

    View Slide

  86. গ͠Ͱ΋σόοάϥΠϑ͕
    շదʹͳΕ͹޾͍Ͱ͢

    View Slide

  87. ͝ਗ਼ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠

    View Slide