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

Xcode previews and llvm

Akio Itaya
December 17, 2019

Xcode previews and llvm

potatotips 67

Akio Itaya

December 17, 2019
Tweet

More Decks by Akio Itaya

Other Decks in Programming

Transcript

  1. AKKEY / AKIO ITAYA
    LLVM ͷυΩϡϝϯτಡΉӋ໨ʹͳͬͨ࿩
    MatchingAgent, Inc.
    SwiftUI ಋೖͰ

    View Slide

  2. ໊લɿ൘୩ ߊྑɹ/ɹ͖͋ͬʔ
    झຯɿυϥΠϒ
    ׆ಈɿ@AkkeyLab
    Cyberagent, Inc.
    MatchingAgent, Inc.
    େֶೖֶޙϓϩάϥϛϯάʹҰ໨ࠍΕɺ18೥৽ଔ iOS ΤϯδχΞ
    ࣗݾ঺հ

    View Slide

  3. AkkeyLab / AutoPreviewableɹ⭐
    5
    AkkeyLab / XcodePreviewsTemplateɹ⭐
    1
    AkkeyLab / StoryboardPreviewsBySwiftUIɹ⭐
    27
    ࣗݾ঺հ
    I want a ⭐ !! I will do anything !!

    View Slide

  4. SwiftUI※
    ಋೖͯ͠·͢ʂ
    ※ XcodePreviews by SwiftUI

    View Slide

  5. SwiftUI ಋೖͯ͠·͢ʂ

    View Slide

  6. ಋೖ͸؆୯͡Όͳ͔ͬͨ…

    View Slide

  7. ಋೖ͸؆୯͡Όͳ͔ͬͨ…
    iOS13 ະຬͱڞଘͤ͞ΔͨΊ
    UIKit Λ SwiftUI ʹରԠ

    View Slide

  8. AkkeyLab / AutoPreviewableɹ⭐
    5
    AkkeyLab / XcodePreviewsTemplateɹ⭐
    1
    AkkeyLab / StoryboardPreviewsBySwiftUIɹ⭐
    27
    ಋೖ͸؆୯͡Όͳ͔ͬͨ…
    I want a ⭐ !! I will do anything !!

    View Slide

  9. ࣮ߦʂ

    View Slide

  10. ಋೖ͸؆୯͡Όͳ͔ͬͨ…
    ͨͬͨ1ߦ҉߸Λు͍ͯϓϨϏϡʔ͕Τϥʔ

    View Slide

  11. ಋೖ͸؆୯͡Όͳ͔ͬͨ…
    ͱΓ͋͑ͣɺάάͬͯΈΔ͜ͱʹ

    View Slide

  12. ಋೖ͸؆୯͡Όͳ͔ͬͨ…

    View Slide

  13. ಋೖ͸؆୯͡Όͳ͔ͬͨ…

    View Slide

  14. ಋೖ͸؆୯͡Όͳ͔ͬͨ…

    View Slide

  15. ಋೖ͸؆୯͡Όͳ͔ͬͨ…

    View Slide

  16. ಋೖ͸؆୯͡Όͳ͔ͬͨ…

    View Slide

  17. ಋೖ͸؆୯͡Όͳ͔ͬͨ…

    View Slide

  18. ಋೖ͸؆୯͡Όͳ͔ͬͨ…

    View Slide

  19. ಋೖ͸؆୯͡Όͳ͔ͬͨ…

    View Slide

  20. ಋೖ͸؆୯͡Όͳ͔ͬͨ…


    View Slide

  21. ಋೖ͸؆୯͡Όͳ͔ͬͨ…


    ৘ใ͕
    ແ͍!!
    ͋Δ͋Δᶃ

    View Slide

  22. ݸਓΞϓϦͰ΋ࢼͯ͠ΈΔ

    View Slide

  23. ݸਓΞϓϦͰ΋ࢼͯ͠ΈΔ
    ਌੾৺͸૿ͨ͠΋ͷͷɺ FirebaseCore ͕ݟ౰ͨΒͳ͍ͱݴΘΕΔ

    View Slide

  24. ݸਓΞϓϦͰ΋ࢼͯ͠ΈΔ
    ͱΓ͋͑ͣɺάάͬͯΈΔ͜ͱʹ

    View Slide

  25. ݟ͔ͭΔݟ͔ͭΔ͓͓͓͓͓͓͓ͧ͒͒͒͒͒͒͒͒ʂʂʂ
    ݸਓΞϓϦͰ΋ࢼͯ͠ΈΔ

    View Slide

  26. ճ౴͸ͳ͍΋ͷͷɺSwiftUI Ͱಉ͡೰ΈΛ๊͑ͯΔ౤ߘΛൃݟ
    ݸਓΞϓϦͰ΋ࢼͯ͠ΈΔ

    View Slide

  27. ݸਓΞϓϦͰ΋ࢼͯ͠ΈΔ
    ͑ɺΧόϨοδ༗ޮʹͯ͠Δͱμϝͳͷʂʁ

    View Slide

  28. ݸਓΞϓϦͰ΋ࢼͯ͠ΈΔ
    ΧόϨοδ༗ޮʹͨ͠ঢ়ଶͰϓϨϏϡʔෆՄೳ͡ΌͶʁ
    ͑ɺΧόϨοδ༗ޮʹͯ͠Δͱμϝͳͷʂʁ

    View Slide

  29. ReactiveCocoa ͷϦϙδτϦ͕ͩɺ͜͜ʹਆ͕ʂʂʂ
    ݸਓΞϓϦͰ΋ࢼͯ͠ΈΔ

    View Slide

  30. ݸਓΞϓϦͰ΋ࢼͯ͠ΈΔ
    ਆݱΔ

    View Slide

  31. ݸਓΞϓϦͰ΋ࢼͯ͠ΈΔ
    ਆݱΔ
    static framework Λ dynamic framework ʹϦϯΫ
    ͢Δͱ͖ʹγϛϡϨʔλͩͱΤϥʔࡇΓͰϚδਏΈʙ

    View Slide

  32. ݸਓΞϓϦͰ΋ࢼͯ͠ΈΔ
    ਆݱΔ
    static framework Λ dynamic framework ʹϦϯΫ
    ͢Δͱ͖ʹγϛϡϨʔλͩͱΤϥʔࡇΓͰϚδਏΈʙ
    Linker flags ʹ -fprofile-instr-generate ௥Ճͨ͠Β
    ͏·͘ಈ͍͚ͨͲɺ͜Ε͕Կ͔͸஌ΒΜ

    View Slide

  33. ݸਓΞϓϦͰ΋ࢼͯ͠ΈΔ
    ਆݱΔ
    static framework Λ dynamic framework ʹϦϯΫ
    ͢Δͱ͖ʹγϛϡϨʔλͩͱΤϥʔࡇΓͰϚδਏΈʙ
    Linker flags ʹ -fprofile-instr-generat ௥Ճͨ͠Β
    ͏·͘ಈ͍͚ͨͲɺ͜Ε͕Կ͔͸஌ΒΜ
    ٳܜ͸
    େ੾!!
    ͋Δ͋Δᶄ

    View Slide

  34. -fprofile-instr-generate

    View Slide

  35. ݸਓΞϓϦͰϓϨϏϡʔͰ͖ͨʂ

    View Slide

  36. Ͱ΋ϓϨϏϡʔͰ͖ͨʂ

    View Slide

  37. Ұ୴ɺঢ়گ੔ཧ

    View Slide

  38. Ұ୴ɺঢ়گ੔ཧ
    ɾXcodePreviews ͕ಈ͔ͳ͍

    View Slide

  39. Ұ୴ɺঢ়گ੔ཧ
    ɾXcodePreviews ͕ಈ͔ͳ͍
    ➞ ΧόϨοδΛແޮʹ͢Ε͹ಈ͘

    View Slide

  40. Ұ୴ɺঢ়گ੔ཧ
    ɾXcodePreviews ͕ಈ͔ͳ͍
    ➞ ΧόϨοδΛແޮʹ͢Ε͹ಈ͘
    ➞ -fprofile-instr-generate Λ௥Ճ͢Ε͹ಈ͘

    View Slide

  41. Ұ୴ɺঢ়گ੔ཧ
    ɾXcodePreviews ͕ಈ͔ͳ͍
    ➞ ΧόϨοδΛແޮʹ͢Ε͹ಈ͘
    ➞ -fprofile-instr-generate Λ௥Ճ͢Ε͹ಈ͘
    ➞ ͜ͷϑϥάͷਖ਼ମ͸·ͩΘ͔Βͳ͍

    View Slide

  42. Ұ୴ɺঢ়گ੔ཧ
    ɾXcodePreviews ͕ಈ͔ͳ͍
    ➞ ΧόϨοδΛແޮʹ͢Ε͹ಈ͘
    ➞ -fprofile-instr-generate Λ௥Ճ͢Ε͹ಈ͘
    ➞ Static Framework ؚ͕·Ε͍ͯΔ͜ͱ͕ݪҼͬΆ͍
    ➞ ͜ͷϑϥάͷਖ਼ମ͸·ͩΘ͔Βͳ͍

    View Slide

  43. Ұ୴ɺঢ়گ੔ཧ
    ɾXcodePreviews ͕ಈ͔ͳ͍
    ➞ ΧόϨοδΛແޮʹ͢Ε͹ಈ͘
    ➞ -fprofile-instr-generate Λ௥Ճ͢Ε͹ಈ͘
    ➞ Static Framework ؚ͕·Ε͍ͯΔ͜ͱ͕ݪҼͬΆ͍
    ➞ Firebase ͷ಺෦͸ Static Framework ͔ͩΒے͕௨Δ
    ➞ ͜ͷϑϥάͷਖ਼ମ͸·ͩΘ͔Βͳ͍

    View Slide

  44. Ұ୴ɺঢ়گ੔ཧ
    ɾXcodePreviews ͕ಈ͔ͳ͍
    ➞ ΧόϨοδΛແޮʹ͢Ε͹ಈ͘
    ➞ -fprofile-instr-generate Λ௥Ճ͢Ε͹ಈ͘
    ➞ Static Framework ؚ͕·Ε͍ͯΔ͜ͱ͕ݪҼͬΆ͍
    ➞ Firebase ͷ಺෦͸ Static Framework ͔ͩΒے͕௨Δ
    ➞ tapple ΋ىಈ଎౓ߴ଎ԽͷͨΊʹҰ෦ϥΠϒϥϦΛ
    ɹ Static Framework Խͯ͠Δ͔Βے͕௨Δ
    ➞ ͜ͷϑϥάͷਖ਼ମ͸·ͩΘ͔Βͳ͍

    View Slide

  45. flag ͷਖ਼ମΛௐ΂Δ

    View Slide

  46. flag ͷਖ਼ମΛௐ΂Δ
    Ҿ༻ݩɿClang 10 documentation / Clang command line argument reference
    -fprofile-instr-generate, -fno-profile-instr-generate
    Generate instrumented code to collect execution counts into
    default.profraw file (overridden by ‘=’ form of option or
    LLVM_PROFILE_FILE env var)
    Instrumentation ʢܭଌɾ਍அ༻ͷίʔυΛૠೖ͢Δ͜ͱʣ͞ΕͨίʔυΛੜ੒
    ͠ɺΧόϨοδ౳ͷ৘ใΛ default.profraw ϑΝΠϧʹอଘ͠·͢ɻ
    -fprofile-instr-generate=
    Generate instrumented code to collect execution counts into (overridden by
    LLVM_PROFILE_FILE env var)
    ग़ྗϑΝΠϧΛࢦఆ͢Δ͜ͱ͕Ͱ͖·͢ɻ
    https://clang.llvm.org/docs/ClangCommandLineReference.html

    View Slide

  47. flag ͷਖ਼ମΛௐ΂Δ
    Ҿ༻ݩɿClang 10 documentation / Clang command line argument reference
    -fprofile-instr-generate, -fno-profile-instr-generate
    Generate instrumented code to collect execution counts into
    default.profraw file (overridden by ‘=’ form of option or
    LLVM_PROFILE_FILE env var)
    Instrumentation ʢܭଌɾ਍அ༻ͷίʔυΛૠೖ͢Δ͜ͱʣ͞ΕͨίʔυΛੜ੒
    ͠ɺΧόϨοδ౳ͷ৘ใΛ default.profraw ϑΝΠϧʹอଘ͠·͢ɻ
    -fprofile-instr-generate=
    Generate instrumented code to collect execution counts into (overridden by
    LLVM_PROFILE_FILE env var)
    ग़ྗϑΝΠϧΛࢦఆ͢Δ͜ͱ͕Ͱ͖·͢ɻ
    https://clang.llvm.org/docs/ClangCommandLineReference.html

    View Slide

  48. flag ͷਖ਼ମΛௐ΂Δ
    Ҿ༻ݩɿClang 10 documentation / Clang command line argument reference
    -fprofile-instr-generate, -fno-profile-instr-generate
    Generate instrumented code to collect execution counts into
    default.profraw file (overridden by ‘=’ form of option or
    LLVM_PROFILE_FILE env var)
    Instrumentation ʢܭଌɾ਍அ༻ͷίʔυΛૠೖ͢Δ͜ͱʣ͞ΕͨίʔυΛੜ੒
    ͠ɺΧόϨοδ౳ͷ৘ใΛ default.profraw ϑΝΠϧʹอଘ͠·͢ɻ
    -fprofile-instr-generate=
    Generate instrumented code to collect execution counts into (overridden by
    LLVM_PROFILE_FILE env var)
    ग़ྗϑΝΠϧΛࢦఆ͢Δ͜ͱ͕Ͱ͖·͢ɻ
    https://clang.llvm.org/docs/ClangCommandLineReference.html

    View Slide

  49. flag ͷਖ਼ମΛௐ΂Δ
    ͖ͭͶ͞ΜͰ΋Θ͔ΔLLVMʙίϯύΠϥΛࣗ࡞͢ΔͨΊͷΨΠυϒοΫʙ
    Clang ͸ɺ LLVM Core ΛόοΫΤϯυͱͯ͠࢖༻͢Δ C/C++/Objective-C/
    Objective-C++ ͷ LLVM ϑϩϯτΤϯυ࣮૷ʢίϯύΠϥʣͰ͢ɻ
    LLVM Core ͸ɺ LLVM ϓϩδΣΫτʹ͓͍ͯίϯύΠϥج൫ٴͼ JIT ίϯ
    ύΠϥͷػೳΛఏڙ͢ΔϓϩδΣΫτͰ͋Γɺͦͷ໊ͷͱ͓Γ LLVM ͷίΞͱ
    ͳΔαϒϓϩδΣΫτͰ͢ɻ
    LLVM ͸ɺίϯύΠϧ࣌ɾϦϯΫ࣌ɾ࣮ߦ࣌ͳͲ͋ΒΏΔ࣌఺ͰϓϩάϥϜΛ
    ࠷దԽ͢ΔΑ͏ʹઃܭ͞Εͨɺ೚ҙͷϓϩάϥϛϯάݴޠʹରԠՄೳͳίϯύΠ
    ϥج൫Ͱ͢ɻ

    View Slide

  50. flag ͷਖ਼ମΛௐ΂Δ
    ͖ͭͶ͞ΜͰ΋Θ͔ΔLLVMʙίϯύΠϥΛࣗ࡞͢ΔͨΊͷΨΠυϒοΫʙ
    Clang ͸ɺ LLVM Core ΛόοΫΤϯυͱͯ͠࢖༻͢Δ C/C++/Objective-C/
    Objective-C++ ͷ LLVM ϑϩϯτΤϯυ࣮૷ʢίϯύΠϥʣͰ͢ɻ
    LLVM Core ͸ɺ LLVM ϓϩδΣΫτʹ͓͍ͯίϯύΠϥج൫ٴͼ JIT ίϯ
    ύΠϥͷػೳΛఏڙ͢ΔϓϩδΣΫτͰ͋Γɺͦͷ໊ͷͱ͓Γ LLVM ͷίΞͱ
    ͳΔαϒϓϩδΣΫτͰ͢ɻ
    LLVM ͸ɺίϯύΠϧ࣌ɾϦϯΫ࣌ɾ࣮ߦ࣌ͳͲ͋ΒΏΔ࣌఺ͰϓϩάϥϜΛ
    ࠷దԽ͢ΔΑ͏ʹઃܭ͞Εͨɺ೚ҙͷϓϩάϥϛϯάݴޠʹରԠՄೳͳίϯύΠ
    ϥج൫Ͱ͢ɻ

    View Slide

  51. flag ͷਖ਼ମΛௐ΂Δ
    ͖ͭͶ͞ΜͰ΋Θ͔ΔLLVMʙίϯύΠϥΛࣗ࡞͢ΔͨΊͷΨΠυϒοΫʙ
    Clang ͸ɺ LLVM Core ΛόοΫΤϯυͱͯ͠࢖༻͢Δ C/C++/Objective-C/
    Objective-C++ ͷ LLVM ϑϩϯτΤϯυ࣮૷ʢίϯύΠϥʣͰ͢ɻ
    LLVM Core ͸ɺ LLVM ϓϩδΣΫτʹ͓͍ͯίϯύΠϥج൫ٴͼ JIT ίϯ
    ύΠϥͷػೳΛఏڙ͢ΔϓϩδΣΫτͰ͋Γɺͦͷ໊ͷͱ͓Γ LLVM ͷίΞͱ
    ͳΔαϒϓϩδΣΫτͰ͢ɻ
    LLVM ͸ɺίϯύΠϧ࣌ɾϦϯΫ࣌ɾ࣮ߦ࣌ͳͲ͋ΒΏΔ࣌఺ͰϓϩάϥϜΛ
    ࠷దԽ͢ΔΑ͏ʹઃܭ͞Εͨɺ೚ҙͷϓϩάϥϛϯάݴޠʹରԠՄೳͳίϯύΠ
    ϥج൫Ͱ͢ɻ

    View Slide

  52. ׬શཧղʢΘ͔ΒΜʣ

    View Slide

  53. Ұ୴ɺঢ়گ੔ཧ
    ɾXcodePreviews ͕ಈ͔ͳ͍
    ➞ ΧόϨοδΛແޮʹ͢Ε͹ಈ͘
    ➞ -fprofile-instr-generate Λ௥Ճ͢Ε͹ಈ͘
    ➞ ͜ͷϑϥάͷਖ਼ମ͸·ͩΘ͔Βͳ͍

    View Slide

  54. Ұ୴ɺঢ়گ੔ཧ
    ɾXcodePreviews ͕ಈ͔ͳ͍
    ➞ ΧόϨοδΛແޮʹ͢Ε͹ಈ͘
    ➞ -fprofile-instr-generate Λ௥Ճ͢Ε͹ಈ͘
    ➞ ͜ͷϑϥάͷਖ਼ମ͸·ͩΘ͔Βͳ͍
    ➞ ΧόϨοδΛ༗ޮʹ͢ΔΦϓγϣϯͩͬͨ

    View Slide

  55. Ұ୴ɺঢ়گ੔ཧ
    ɾXcodePreviews ͕ಈ͔ͳ͍
    ➞ ΧόϨοδΛແޮʹ͢Ε͹ಈ͘
    ➞ -fprofile-instr-generate Λ௥Ճ͢Ε͹ಈ͘
    ➞ ͜ͷϑϥάͷਖ਼ମ͸·ͩΘ͔Βͳ͍
    ➞ ΧόϨοδΛ༗ޮʹ͢ΔΦϓγϣϯͩͬͨ

    View Slide

  56. ׬શཧղʢ͸ʁʣ

    View Slide

  57. ϏϧυํࣜΛௐ΂Δ

    View Slide

  58. ϏϧυํࣜΛௐ΂Δ
    C ܥίϯύΠϥ clang Swift ίϯύΠϥ swiftc

    Linker

    View Slide

  59. ϏϧυํࣜΛௐ΂Δ
    C ܥίϯύΠϥ clang
    Xcode/Contents/Plugins/Xcode3Core.ideplugin/
    Contents/SharedSupport/Developer/Library/Xcode/
    Plug-ins/Clang LLVM 1.0.xcplugin/Contents/Resources/
    Clang LLVM 1.0.xcspec
    Xcode ➞ *.xcspec ➞ command

    View Slide

  60. ϏϧυํࣜΛௐ΂Δ
    C ܥίϯύΠϥ clang
    Xcode/Contents/Plugins/Xcode3Core.ideplugin/
    Contents/SharedSupport/Developer/Library/Xcode/
    Plug-ins/Clang LLVM 1.0.xcplugin/Contents/Resources/
    Clang LLVM 1.0.xcspec
    Xcode ➞ *.xcspec ➞ command

    View Slide

  61. ϏϧυํࣜΛௐ΂Δ
    C ܥίϯύΠϥ clang
    Xcode/Contents/Plugins/Xcode3Core.ideplugin/
    Contents/SharedSupport/Developer/Library/Xcode/
    Plug-ins/Clang LLVM 1.0.xcplugin/Contents/Resources/
    Clang LLVM 1.0.xcspec
    Xcode ➞ *.xcspec ➞ command

    View Slide

  62. ϏϧυํࣜΛௐ΂Δ
    C ܥίϯύΠϥ clang
    Xcode/Contents/Plugins/Xcode3Core.ideplugin/
    Contents/SharedSupport/Developer/Library/Xcode/
    Plug-ins/Clang LLVM 1.0.xcplugin/Contents/Resources/
    Clang LLVM 1.0.xcspec
    Xcode ➞ *.xcspec ➞ command

    View Slide

  63. ϏϧυํࣜΛௐ΂Δ
    Xcode/Contents/Plugins/Xcode3Core.ideplugin/
    Contents/SharedSupport/Developer/Library/Xcode/
    Plug-ins/XCLanguageSupport.xcplugin/Contents/
    Resources/Swift.xcspec
    Xcode ➞ *.xcspec ➞ command
    Swift ίϯύΠϥ swiftc

    View Slide

  64. ϏϧυํࣜΛௐ΂Δ
    Xcode/Contents/Plugins/Xcode3Core.ideplugin/
    Contents/SharedSupport/Developer/Library/Xcode/
    Plug-ins/XCLanguageSupport.xcplugin/Contents/
    Resources/Swift.xcspec
    Xcode ➞ *.xcspec ➞ command
    Swift ίϯύΠϥ swiftc

    View Slide

  65. ϏϧυํࣜΛௐ΂Δ
    Xcode/Contents/Plugins/Xcode3Core.ideplugin/
    Contents/SharedSupport/Developer/Library/Xcode/
    Plug-ins/CoreBuildTasks.xcplugin/Contents/Resources/
    Ld.xcspec
    Xcode ➞ *.xcspec ➞ command

    Linker
    ֘౰ͳ͠

    View Slide

  66. ΋ͬͱ޿͘ݟͯΈΔ

    View Slide

  67. Xcode Build System

    View Slide

  68. Xcode Build System
    Compiler
    Assembler
    Linker
    Loader
    Modified source program
    Target assembly program
    Relocatable machine code
    Executable machine code
    https://www.vadimbulavin.com/xcode-build-system/
    Source program in Swift
    Memory
    Relocatable object files
    Library files
    Preprocessor
    Active Compilation Conditions

    View Slide

  69. Xcode Build System
    Compiler
    Assembler
    Linker
    Loader
    Modified source program
    Target assembly program
    Relocatable machine code
    Executable machine code
    https://www.vadimbulavin.com/xcode-build-system/
    Source program in Swift
    Memory
    Relocatable object files
    Library files

    Preprocessor
    Active Compilation Conditions

    View Slide

  70. Xcode Build System
    Compiler
    Assembler
    Linker
    Loader
    Modified source program
    Target assembly program
    Relocatable machine code
    Executable machine code
    https://www.vadimbulavin.com/xcode-build-system/
    Source program in Swift
    Memory
    Relocatable object files
    Library files

    Preprocessor
    Active Compilation Conditions
    -fprofile-instr-generate
    *.xcspec

    View Slide

  71. Xcode Build System
    Compiler
    Assembler
    Linker
    Loader
    Modified source program
    Target assembly program
    Relocatable machine code
    Executable machine code
    https://www.vadimbulavin.com/xcode-build-system/
    Source program in Swift
    Memory
    Relocatable object files
    Library files

    Preprocessor
    Active Compilation Conditions
    -fprofile-instr-generate
    -fprofile-instr-generate
    OTHER_LDFLAGS
    *.xcspec

    View Slide

  72. ߟ࡯

    View Slide

  73. ߟ࡯
    Code Instrumentationʢinstrʣ ͕༗ޮͰɺ
    Static Framework Λ Link ͢Δͱ͖ɺ

    Linker ʹରͯ͠ instr Λ༗ޮʹ͢ΔΑ͏ʹࢦఆ͠ͳ͚Ε͹ͳΒͳ͍

    View Slide

  74. ߟ࡯
    Code Instrumentationʢinstrʣ ͕༗ޮͰɺ
    Static Framework Λ Link ͢Δͱ͖ɺ

    Linker ʹରͯ͠ instr Λ༗ޮʹ͢ΔΑ͏ʹࢦఆ͠ͳ͚Ε͹ͳΒͳ͍
    ͱ͍͏ݱ৅͕ SwiftUI ͷ XcodePreviews ಈ࡞࣌ʹൃੜ͢Δ

    View Slide

  75. ߟ࡯
    Code Instrumentationʢinstrʣ ͕༗ޮͰɺ
    Static Framework Λ Link ͢Δͱ͖ɺ

    Linker ʹରͯ͠ instr Λ༗ޮʹ͢ΔΑ͏ʹࢦఆ͠ͳ͚Ε͹ͳΒͳ͍
    ͱ͍͏ݱ৅͕ SwiftUI ͷ XcodePreviews ಈ࡞࣌ʹൃੜ͢Δ
    օ͞Μͷҙݟେืूதʂօ͞Μͷ஌ܙΛି͍ͯͩ͘͠͞ʂ

    View Slide

  76. Thank you !!

    View Slide