Slide 1

Slide 1 text

@usagimaruma GUI ͷ “ͪ͜Βଆ” ͔ΒͷσβΠϯ macos-native.github.io © 2019 Satori Maru / @usagimaruma. macOS native Symposium #04 #macosnative

Slide 2

Slide 2 text

© 2019 Satori Maru / @usagimaruma. ιϑτ΢ΣΞσβΠφʔ usagimaru Interface design / Interaction design / macOS / iOS @usagimaru @usagimaru @usagimaruma macOS native ίΞϝϯόʔ #macosnative

Slide 3

Slide 3 text

© 2019 Satori Maru / @usagimaruma. #macosnative Space Drag Adobe Photoshop CC 2018 Designing Desktop Interactions – macOS native Symposium #01 https://speakerdeck.com/usagimaru/designing-desktop-interactions #01

Slide 4

Slide 4 text

© 2019 Satori Maru / @usagimaruma. “ͪ͜Βଆ” #macosnative

Slide 5

Slide 5 text

© 2019 Satori Maru / @usagimaruma. ଆ #macosnative

Slide 6

Slide 6 text

© 2019 Satori Maru / @usagimaruma. #macosnative Ϣʔβʔࢹ఺ “ͪ͜Βଆ”

Slide 7

Slide 7 text

© 2019 Satori Maru / @usagimaruma. #macosnative ίϯϐϡʔλʔࢹ఺ “͋ͪΒଆ”

Slide 8

Slide 8 text

© 2019 Satori Maru / @usagimaruma. Interface #macosnative

Slide 9

Slide 9 text

© 2019 Satori Maru / @usagimaruma. Inter-face #macosnative ໘ͱ໘ͷؒ

Slide 10

Slide 10 text

© 2019 Satori Maru / @usagimaruma. #macosnative “ͪ͜Βଆ” “͋ͪΒଆ”

Slide 11

Slide 11 text

© 2019 Satori Maru / @usagimaruma. #macosnative “ͪ͜Βଆ” “͋ͪΒଆ” User Interface

Slide 12

Slide 12 text

© 2019 Satori Maru / @usagimaruma. #macosnative “ͪ͜Βଆ” “͋ͪΒଆ” ࡞༻ ࡞༻ User Interface

Slide 13

Slide 13 text

© 2019 Satori Maru / @usagimaruma. #macosnative “ͪ͜Βଆ” “͋ͪΒଆ” ࡞༻ ΧʔιϧҠಈ ΫϦοΫ Ωʔೖྗ Ի੠ೖྗ ࡞༻ άϥϑΟοΫඳը α΢ϯυ࠶ੜ ৼಈ ҹ࡮ User Interface

Slide 14

Slide 14 text

© 2019 Satori Maru / @usagimaruma. Human-Computer Interaction #macosnative ײ֮ث ਫ਼ਆ ਎ମೳྗ ώτ पลػثɾग़ྗ ϋʔυ΢ΣΞ ूੵճ࿏ ιϑτ΢ΣΞ macOS ΞϓϦέʔγϣϯ https://en.wikipedia.org/wiki/File:Linux_kernel_INPUT_OUPUT_evdev_gem_USB_framebuffer.svg ΑΓ࠶ߏ੒ पลػثɾೖྗ Cocoa Core Text Open AL Quartz Core Animation Core Audio Core Image AV Foundation Core Services Metal Darwin ΢Πϯυ΢ UIίϯτϩʔϧ ϝχϡʔ Χʔιϧ α΢ϯυ ϏσΦ Πϝʔδ ςΩετ ΩʔΠϕϯτ Ϛ΢εΠϕϯτ Ի੠ೖྗ ίϯςϯπ IC

Slide 15

Slide 15 text

© 2019 Satori Maru / @usagimaruma. Human-Computer Interaction #macosnative ײ֮ث ਫ਼ਆ ਎ମೳྗ ώτ पลػثɾग़ྗ ϋʔυ΢ΣΞ ूੵճ࿏ ιϑτ΢ΣΞ macOS ΞϓϦέʔγϣϯ https://en.wikipedia.org/wiki/File:Linux_kernel_INPUT_OUPUT_evdev_gem_USB_framebuffer.svg ΑΓ࠶ߏ੒ पลػثɾೖྗ Cocoa Core Text Open AL Quartz Core Animation Core Audio Core Image AV Foundation Core Services Metal Darwin ΢Πϯυ΢ UIίϯτϩʔϧ ϝχϡʔ Χʔιϧ α΢ϯυ ϏσΦ Πϝʔδ ςΩετ ΩʔΠϕϯτ Ϛ΢εΠϕϯτ Ի੠ೖྗ ΦϒδΣΫτ ؍೦ ಺ࡏԽ IC

Slide 16

Slide 16 text

© 2019 Satori Maru / @usagimaruma. Human-Computer Interaction #macosnative ਫ਼ਆ ώτ ιϑτ΢ΣΞ ΞϓϦέʔγϣϯ https://en.wikipedia.org/wiki/File:Linux_kernel_INPUT_OUPUT_evdev_gem_USB_framebuffer.svg ΑΓ࠶ߏ੒ ΦϒδΣΫτ ؍೦ ಺ࡏԽ

Slide 17

Slide 17 text

© 2019 Satori Maru / @usagimaruma. #macosnative

Slide 18

Slide 18 text

© 2019 Satori Maru / @usagimaruma. #macosnative ࡞༻ ࡞༻ ࡞༻

Slide 19

Slide 19 text

© 2019 Satori Maru / @usagimaruma. #macosnative ࡞༻ ࡞༻ ࡞༻

Slide 20

Slide 20 text

© 2019 Satori Maru / @usagimaruma. #macosnative ࡞༻ ࡞༻ ࡞༻

Slide 21

Slide 21 text

© 2019 Satori Maru / @usagimaruma. #macosnative ခ”C ခ”C ခ”C

Slide 22

Slide 22 text

© 2019 Satori Maru / @usagimaruma. #macosnative ခ”C ခ”C ခ”C Polymorphism ࣅͨੑ࣭ͷΦϒδΣΫτʹ͸ಉ͡࡞༻Λ༩͑ΒΕΔ

Slide 23

Slide 23 text

© 2019 Satori Maru / @usagimaruma. #macosnative ခ”C ခ”C ခ”C Polymorphism ࣅͨੑ࣭ͷΦϒδΣΫτʹ͸ಉ͡࡞༻Λ༩͑ΒΕΔ

Slide 24

Slide 24 text

© 2019 Satori Maru / @usagimaruma. #macosnative ໊শະઃఆϑΥϧμ Keynote.app Moof.app ခ”C ခ”C ခ”C Finder ϑΝΠϧγεςϜͷΦϒδΣΫτ͸ ಉ͡Α͏ʹૢ࡞Ͱ͖Δ << File >>

Slide 25

Slide 25 text

© 2019 Satori Maru / @usagimaruma. #macosnative ໊শະઃఆϑΥϧμ Keynote.app Moof.app ခ”C ခ”C ခ”C Window ခ”C Finder ͦͷ΄͔ͷΦϒδΣΫτ͸ҟͳΔੑ࣭Λ ࣋ͭͨΊɺಉ͡ૢ࡞͸௨༻͠ͳ͍͜ͱ΋ << File >>

Slide 26

Slide 26 text

© 2019 Satori Maru / @usagimaruma. HIG – Mouse and Trackpad Use standard controls and views. Respond to clicks and gestures based on meaning, not the user’s physical movements. In general, respond to gestures in a way that’s consistent with other apps. Avoid redefining systemwide, inter-app gestures. Make sure gestures apply to the appropriate content. Define custom gestures cautiously. Don’t rely on the availability of specific devices and gestures. #macosnative https://developer.apple.com/design/human-interface-guidelines/macos/user-interaction/mouse-and-trackpad/ HIG

Slide 27

Slide 27 text

© 2019 Satori Maru / @usagimaruma. HIG – Mouse and Trackpad ඪ४ͷίϯτϩʔϧ෦඼ͱϏϡʔΛ࢖༻͠·͠ΐ͏ɻ Ϣʔβʔͷ਎ମతͳಈ͖Ͱ͸ͳ͘ɺҙຯʹج͍ͮͯδΣενϟʔʹରԠ͠·͠ΐ͏ɻ Ұൠతʹ͸ɺଞͷΞϓϦέʔγϣϯͱಉ͡ํ๏ͰδΣενϟʔʹରԠ͠·͠ΐ͏ɻ γεςϜશମͰద༻͞ΕΔδΣενϟʔΛ࠶ఆٛ͠ͳ͍Ͱ͍ͩ͘͞ɻ δΣενϟʔ͕ίϯςϯπʹରͯ͠ద੾ʹద༻͞ΕΔ͜ͱʹཹҙ͍ͯͩ͘͠͞ɻ ಠࣗͷδΣενϟʔͷఆٛ͸৻ॏʹߦ͍ͬͯͩ͘͞ɻ ಛఆػثʹΑΔδΣενϟʔʹ͸པΒͳ͍Ͱ͍ͩ͘͞ɻ #macosnative https://developer.apple.com/design/human-interface-guidelines/macos/user-interaction/mouse-and-trackpad/ HIG

Slide 28

Slide 28 text

ඪ४ͷίϯτϩʔϧ෦඼ͱϏϡʔΛ࢖༻͠·͠ΐ͏ɻ Ϣʔβʔͷ਎ମతͳಈ͖Ͱ͸ͳ͘ɺҙຯʹج͍ͮͯδΣενϟʔʹରԠ͠·͠ΐ͏ɻ Ұൠతʹ͸ɺଞͷΞϓϦέʔγϣϯͱಉ͡ํ๏ͰδΣενϟʔʹରԠ͠·͠ΐ͏ɻ γεςϜશମͰద༻͞ΕΔδΣενϟʔΛ࠶ఆٛ͠ͳ͍Ͱ͍ͩ͘͞ɻ δΣενϟʔ͕ίϯςϯπʹରͯ͠ద੾ʹద༻͞ΕΔ͜ͱʹཹҙ͍ͯͩ͘͠͞ɻ ಠࣗͷδΣενϟʔͷఆٛ͸৻ॏʹߦ͍ͬͯͩ͘͞ɻ ಛఆػثʹΑΔδΣενϟʔʹ͸པΒͳ͍Ͱ͍ͩ͘͞ɻ © 2019 Satori Maru / @usagimaruma. HIG – Mouse and Trackpad #macosnative https://developer.apple.com/design/human-interface-guidelines/macos/user-interaction/mouse-and-trackpad/ HIG Ұ ؏ ੑ

Slide 29

Slide 29 text

ඪ४ͷίϯτϩʔϧ෦඼ͱϏϡʔΛ࢖༻͠·͠ΐ͏ɻ Ϣʔβʔͷ਎ମతͳಈ͖Ͱ͸ͳ͘ɺҙຯʹج͍ͮͯδΣενϟʔʹରԠ͠·͠ΐ͏ɻ Ұൠతʹ͸ɺଞͷΞϓϦέʔγϣϯͱಉ͡ํ๏ͰδΣενϟʔʹରԠ͠·͠ΐ͏ɻ γεςϜશମͰద༻͞ΕΔδΣενϟʔΛ࠶ఆٛ͠ͳ͍Ͱ͍ͩ͘͞ɻ δΣενϟʔ͕ίϯςϯπʹରͯ͠ద੾ʹద༻͞ΕΔ͜ͱʹཹҙ͍ͯͩ͘͠͞ɻ ಠࣗͷδΣενϟʔͷఆٛ͸৻ॏʹߦ͍ͬͯͩ͘͞ɻ ಛఆػثʹΑΔδΣενϟʔʹ͸པΒͳ͍Ͱ͍ͩ͘͞ɻ © 2019 Satori Maru / @usagimaruma. HIG – Mouse and Trackpad #macosnative https://developer.apple.com/design/human-interface-guidelines/macos/user-interaction/mouse-and-trackpad/ HIG Ұ ؏ ੑ ର ৅ ͱ ͷ ૢ ࡞ ํ ๏ ʹ ؔ ͢ Δ ϙ Ϧ Ϟ ʔ ϑ ỹ ζ Ϝ

Slide 30

Slide 30 text

© 2019 Satori Maru / @usagimaruma. ೖྗํ๏ͷ૊Έཱͯํ #macosnative

Slide 31

Slide 31 text

© 2019 Satori Maru / @usagimaruma. #macosnative ΠσΟΦϜ ෳ߹ཁૉ ݪ࢝తཁૉ جຊૢ࡞ͱ ϑΟʔυόοΫ ͷ࢓૊Έ Ұൠతͳೖग़ྗૢ࡞΍ه߸ྨ ݪ࢝తཁૉΛ૊Έ߹Θͤͨ΋ͷ ΠϯλʔϑΣΠεݻ༗ͷίϚϯυͱϑΟʔυόοΫ ϢʔβʔͷߦಈύλʔϯΛߟྀͭͭ͠ෳ߹ཁૉΛ૊Έ߹Θͤͨ΋ͷ ʰAbout Face 3 ΠϯλϥΫγϣϯσβΠϯͷۃҙʱΑΓղऍ Alan Cooper, Robert Reimann, David Cronin ஶɺ௕ඌߴ߂ ༁ ϙΠϯςΟϯά ΫϦοΫ λον υϥοά Ωʔೖྗ Χʔιϧ ςΩετ ը૾ μϒϧΫϦοΫ μϒϧλοϓ ϘλϯͷԡԼ ൣғબ୒ ΩʔόΠϯσΟϯά ςΩετϑΟʔϧυ ϥδΦϘλϯ બ୒ൣғͷදࣔ ԡԼཁૉͷڧௐදࣔ ৽ن࡞੒ ฤू ඳը εΫϩʔϧϏϡʔ φϏήʔγϣϯόʔ ΞϥʔτμΠΞϩά ೖྗ ग़ྗ

Slide 32

Slide 32 text

© 2019 Satori Maru / @usagimaruma. #macosnative ΠσΟΦϜ ෳ߹ཁૉ ݪ࢝తཁૉ جຊૢ࡞ͱ ϑΟʔυόοΫ ͷ࢓૊Έ Ұൠతͳೖग़ྗૢ࡞΍ه߸ྨ ݪ࢝తཁૉΛ૊Έ߹Θͤͨ΋ͷ ΠϯλʔϑΣΠεݻ༗ͷίϚϯυͱϑΟʔυόοΫ ϢʔβʔͷߦಈύλʔϯΛߟྀͭͭ͠ෳ߹ཁૉΛ૊Έ߹Θͤͨ΋ͷ ϙΠϯςΟϯά ΫϦοΫ λον υϥοά Ωʔೖྗ Χʔιϧ ςΩετ ը૾ μϒϧΫϦοΫ μϒϧλοϓ ϘλϯͷԡԼ ൣғબ୒ ΩʔόΠϯσΟϯά ςΩετϑΟʔϧυ ϥδΦϘλϯ બ୒ൣғͷදࣔ ԡԼཁૉͷڧௐදࣔ ৽ن࡞੒ ฤू ඳը εΫϩʔϧϏϡʔ φϏήʔγϣϯόʔ ΞϥʔτμΠΞϩά ʰAbout Face 3 ΠϯλϥΫγϣϯσβΠϯͷۃҙʱΑΓղऍ Alan Cooper, Robert Reimann, David Cronin ஶɺ௕ඌߴ߂ ༁ ग़ྗ ग़ ྗ ૷ ஔ ͔ Β ͷ ද ݱ ํ ๏ ೖྗ ೖ ྗ ૷ ஔ ͔ Β ͷ ૢ ࡞ ํ ๏

Slide 33

Slide 33 text

© 2019 Satori Maru / @usagimaruma. #macosnative ΠσΟΦϜ ෳ߹ཁૉ Ұൠతͳೖग़ྗૢ࡞΍ه߸ྨ ݪ࢝తཁૉΛ૊Έ߹Θͤͨ΋ͷ ΠϯλʔϑΣΠεݻ༗ͷίϚϯυͱϑΟʔυόοΫ ϢʔβʔͷߦಈύλʔϯΛߟྀͭͭ͠ෳ߹ཁૉΛ૊Έ߹Θͤͨ΋ͷ ϙΠϯςΟϯά ΫϦοΫ λον υϥοά Ωʔೖྗ Χʔιϧ ςΩετ ը૾ μϒϧΫϦοΫ μϒϧλοϓ ϘλϯͷԡԼ ൣғબ୒ ΩʔόΠϯσΟϯά ςΩετϑΟʔϧυ ϥδΦϘλϯ બ୒ൣғͷදࣔ ԡԼཁૉͷڧௐදࣔ ৽ن࡞੒ ฤू ඳը εΫϩʔϧϏϡʔ φϏήʔγϣϯόʔ ΞϥʔτμΠΞϩά ʰAbout Face 3 ΠϯλϥΫγϣϯσβΠϯͷۃҙʱΑΓղऍ Alan Cooper, Robert Reimann, David Cronin ஶɺ௕ඌߴ߂ ༁ ग़ྗ ೖྗ ग़ ྗ ૷ ஔ ͔ Β ͷ ද ݱ ํ ๏ ೖ ྗ ૷ ஔ ͔ Β ͷ ૢ ࡞ ํ ๏ ݪ࢝తཁૉ جຊૢ࡞ͱ ϑΟʔυόοΫ ͷ࢓૊Έ

Slide 34

Slide 34 text

© 2019 Satori Maru / @usagimaruma. #macosnative ςΩετ ग़ྗ

Slide 35

Slide 35 text

© 2019 Satori Maru / @usagimaruma. #macosnative ςΩετ ग़ྗ

Slide 36

Slide 36 text

© 2019 Satori Maru / @usagimaruma. #macosnative ςΩετ ೖྗ ग़ྗ ʴ

Slide 37

Slide 37 text

© 2019 Satori Maru / @usagimaruma. #macosnative ςΩετ ೖྗ ग़ྗ ʴ

Slide 38

Slide 38 text

© 2019 Satori Maru / @usagimaruma. #macosnative ςΩετ ೖྗ ग़ྗ ʴ

Slide 39

Slide 39 text

© 2019 Satori Maru / @usagimaruma. #macosnative ςΩετ ςΩετ ςΩετ ςΩετ ϨΠϠʔબ୒ঢ়ଶ ͷมԽ ςΩετฤूϞʔυ ΁ͷભҠ ςΩετબ୒ঢ়ଶ ͷมԽ ʵ ೖྗૢ࡞ ༩͑Δ࡞༻ ڍಈ က= က? က; ကA ΫϦοΫ ΫϦοΫ μϒϧΫϦοΫ ʵ

Slide 40

Slide 40 text

© 2019 Satori Maru / @usagimaruma. #macosnative ςΩετ ೖྗ ग़ྗ ʴ

Slide 41

Slide 41 text

© 2019 Satori Maru / @usagimaruma. #macosnative ೖྗ ग़ྗ ʴ ခ›

Slide 42

Slide 42 text

© 2019 Satori Maru / @usagimaruma. #macosnative ೖྗ ग़ྗ ʴ m mac a c

Slide 43

Slide 43 text

© 2019 Satori Maru / @usagimaruma. #macosnative ೖྗ ग़ྗ ʴ ခ” mac A ςΩετΛର৅ʹ ͢΂ͯબ୒

Slide 44

Slide 44 text

© 2019 Satori Maru / @usagimaruma. #macosnative ग़ྗ mac NSObject Moof!

Slide 45

Slide 45 text

© 2019 Satori Maru / @usagimaruma. #macosnative ೖྗ ग़ྗ ʴ ခ” A mac ϨΠϠʔΛର৅ʹ ͢΂ͯબ୒ Moof! NSObject

Slide 46

Slide 46 text

© 2019 Satori Maru / @usagimaruma. #macosnative ςΩετ ςΩετϑΟʔϧυ Χϯόε Ϗϡʔ্ͷϨΠϠʔશൠ બ୒͞ΕͨϨΠϠʔ ςΩετϑΟʔϧυ Πϕϯτ௨஌ର৅ ڍಈ mac mac mac ςΩετฤूϞʔυ Χϯόε্ͰϞʔυϨε ϨΠϠʔબ୒ঢ়ଶ Ϟʔυʗঢ়ଶ ςΩετฤूϞʔυ

Slide 47

Slide 47 text

© 2019 Satori Maru / @usagimaruma. #macosnative ςΩετ ςΩετฤूϞʔυ Χϯόε্ͰϞʔυϨε ϨΠϠʔબ୒ঢ়ଶ ςΩετϑΟʔϧυ Χϯόε Ϗϡʔ্ͷϨΠϠʔશൠ બ୒͞ΕͨϨΠϠʔ ςΩετϑΟʔϧυ Ϟʔυʗঢ়ଶ Πϕϯτ௨஌ର৅ ڍಈ ςΩετฤूϞʔυ mac mac mac

Slide 48

Slide 48 text

© 2019 Satori Maru / @usagimaruma. Responder Chain #macosnative

Slide 49

Slide 49 text

© 2019 Satori Maru / @usagimaruma. Responder Chain ʬͨΒ͍ճ͠ͷύλʔϯʭ ϝοηʔδͷ਺चܨ͗ܦ࿏Λܗ੒͠ɺ੹೚ͷॴࡏΛΦϒδΣΫτࣗ਎ʹܾΊͤ͞Δ #macosnative nextResponder nextResponder nextResponder nextResponder firstResponder

Slide 50

Slide 50 text

© 2019 Satori Maru / @usagimaruma. l$PDPBT3FTQPOEFS$IBJOXBTUIFJOTQJSBUJPOGPSUIF (P'$IBJOPG3FTQPOTJCJMJUZQBUUFSOz 'SPN/F9545&1UP$PDPB&SJL#VDLPOUIF%FWFMPQNFOUPG$PDPBBOE0CKFDUJWF$ IUUQXXXJOGPSNJUDPNBSUJDMFTBSUJDMFBTQY Q #macosnative

Slide 51

Slide 51 text

© 2019 Satori Maru / @usagimaruma. #macosnative NSViewController NSView NSTextView NSView NSWindow

Slide 52

Slide 52 text

© 2019 Satori Maru / @usagimaruma. #macosnative NSViewController NSView NSTextView NSView firstResponder ϑΥʔΧε͕౰ͨΔ makeFirstResponder(textview) keyWindow NSWindow

Slide 53

Slide 53 text

© 2019 Satori Maru / @usagimaruma. #macosnative NSViewController NSView NSTextView NSView keyDown() ΩʔೖྗΛड͚෇͚ NSWindow “͍͋͏↵” “ခ”C”

Slide 54

Slide 54 text

© 2019 Satori Maru / @usagimaruma. #macosnative NSViewController NSView NSTextView NSView makeFirstResponder(aView) NSWindow firstResponder

Slide 55

Slide 55 text

© 2019 Satori Maru / @usagimaruma. #macosnative NSViewController NSView NSTextView NSView keyDown() keyDown() NSWindow

Slide 56

Slide 56 text

© 2019 Satori Maru / @usagimaruma. #macosnative NSViewController NSView NSWindowController NSTextView NSView NSWindow delegate NSApplication App delegate keyDown() NSBeep() NSWindow noResponder(for:) Πϕϯτ͕ ड͚औΒΕͳ͍৔߹

Slide 57

Slide 57 text

© 2019 Satori Maru / @usagimaruma. #macosnative Click window.firstResponder textView ử

Slide 58

Slide 58 text

© 2019 Satori Maru / @usagimaruma. #macosnative ခ” A window.firstResponder NSEvent “ခ”A” textView ử

Slide 59

Slide 59 text

© 2019 Satori Maru / @usagimaruma. #macosnative ခ” W window.firstResponder NSEvent “ခ”W” textView ử .nextResponder window

Slide 60

Slide 60 text

© 2019 Satori Maru / @usagimaruma. #macosnative ခ” W window.firstResponder NSEvent “ခ”W” textView ử .nextResponder window

Slide 61

Slide 61 text

© 2019 Satori Maru / @usagimaruma. #macosnative

Slide 62

Slide 62 text

© 2019 Satori Maru / @usagimaruma. #macosnative Space Drag

Slide 63

Slide 63 text

© 2019 Satori Maru / @usagimaruma. #macosnative Drag

Slide 64

Slide 64 text

© 2019 Satori Maru / @usagimaruma. #macosnative ΞϦςΟΞ ൣғબ୒

Slide 65

Slide 65 text

© 2019 Satori Maru / @usagimaruma. #macosnative ΞϦςΟΞ mouseDown(with:) ൣғબ୒

Slide 66

Slide 66 text

© 2019 Satori Maru / @usagimaruma. #macosnative ΞϦςΟΞ mouseDown(with:) mouseDragged(with:) ൣғબ୒

Slide 67

Slide 67 text

© 2019 Satori Maru / @usagimaruma. #macosnative ΞϦςΟΞ mouseDragged(with:) ൣғબ୒

Slide 68

Slide 68 text

© 2019 Satori Maru / @usagimaruma. #macosnative ΞϦςΟΞ mouseDragged(with:) isHighlighted = true ൣғબ୒

Slide 69

Slide 69 text

© 2019 Satori Maru / @usagimaruma. #macosnative ΞϦςΟΞ mouseUp(with:) ൣғબ୒

Slide 70

Slide 70 text

© 2019 Satori Maru / @usagimaruma. #macosnative ΞϦςΟΞ υϥοά&υϩοϓ

Slide 71

Slide 71 text

© 2019 Satori Maru / @usagimaruma. #macosnative ΞϦςΟΞ mouseDown(with:) બ୒ঢ়ଶʹ isHighlighted = true υϥοά&υϩοϓ

Slide 72

Slide 72 text

© 2019 Satori Maru / @usagimaruma. #macosnative ΞϦςΟΞ mouseDown(with:) mouseDragged(with:) બ୒ঢ়ଶʹ isHighlighted = true υϥοά&υϩοϓ

Slide 73

Slide 73 text

© 2019 Satori Maru / @usagimaruma. #macosnative ΞϦςΟΞ mouseDragged(with:) Ϛ΢ε࠲ඪͷมԽྔΛ൓ө υϥοά&υϩοϓ

Slide 74

Slide 74 text

© 2019 Satori Maru / @usagimaruma. #macosnative ΞϦςΟΞ mouseUp(with:) ϨΠϠʔΦϒδΣΫτͷ ҠಈॲཧΛऴ͑Δ ʢબ୒ঢ়ଶ͸ҡ࣋ʣ υϥοά&υϩοϓ

Slide 75

Slide 75 text

© 2019 Satori Maru / @usagimaruma. #macosnative mouseDown(with:) mouseDragged(with:) ΞϦςΟΞ Χʔιϧ͕1ptͰ΋ಈ͚͹ɺϨΠϠʔΦϒδΣΫτ͸Ҡಈͯ͠͠·͏ ਓؒͷޡಈ࡞Λى͜͢ՄೳੑΛݕ౼͠ͳ͕ΒɺϢʔβϏϦςΟͷ޲্Λ໨ࢦ͍ͨ͠ ʂ υϥοά&υϩοϓ

Slide 76

Slide 76 text

© 2019 Satori Maru / @usagimaruma. #macosnative ΞϦςΟΞ Ҡಈॲཧʹᮢ஋Λઃ͚ͯ υϥοάͷ“͸ͣΈ”Λ཈͑Δ mouseDragged(with:) ᮢ஋ະຬͰ͸Ҡಈ͕ൃੜ͠ͳ͍ 5–6pt υϥοά&υϩοϓ

Slide 77

Slide 77 text

© 2019 Satori Maru / @usagimaruma. #macosnative ΞϦςΟΞ mouseDragged(with:) ᮢ஋Λߟྀͭͭ͠ Ϛ΢ε࠲ඪͷมԽྔΛ൓ө υϥοά&υϩοϓ

Slide 78

Slide 78 text

© 2019 Satori Maru / @usagimaruma. #macosnative ΞϦςΟΞ mouseUp(with:) ϨΠϠʔΦϒδΣΫτͷ ҠಈॲཧΛऴ͑Δʢબ୒ঢ়ଶ͸ҡ࣋ʣ υϥοά&υϩοϓ

Slide 79

Slide 79 text

© 2019 Satori Maru / @usagimaruma. #macosnative ΞϦςΟΞ mouseDragged(with:) mouseUp(with:) ͷલʹ υϥοάΛதࢭͨ͘͠ͳͬͨ৔߹ͷߟྀ ʂ ခ” . ခ§ υϥοά&υϩοϓ

Slide 80

Slide 80 text

© 2019 Satori Maru / @usagimaruma. #macosnative ΞϦςΟΞ cancelOperation(_:) தஅૢ࡞ͷड͚ೖΕ ခ” . ခ§ AppKit ڞ௨ͷதஅૢ࡞ υϥοά&υϩοϓ

Slide 81

Slide 81 text

© 2019 Satori Maru / @usagimaruma. #macosnative ΞϦςΟΞ தஅૢ࡞ͷड͚ೖΕ cancelOperation(_:) override func cancelOperation(_ sender: Any?) { // υϥοάॲཧΛதࢭͯ͠ mouseDown(with:) ௚લͷঢ়ଶʹ໭͢౳ } ခ” . ခ§ ϨεϙϯμʔνΣΠϯʹͯ keyDown(with:) Λ͏·͘ύε͠ͳ͍ͱ ॲཧ͞Εͳ͍ՄೳੑΞϦ஫ҙ υϥοά&υϩοϓ

Slide 82

Slide 82 text

© 2019 Satori Maru / @usagimaruma. #macosnative

Slide 83

Slide 83 text

© 2019 Satori Maru / @usagimaruma. #macosnative

Slide 84

Slide 84 text

© 2019 Satori Maru / @usagimaruma. #macosnative ΠσΟΦϜ ෳ߹ཁૉ ݪ࢝తཁૉ جຊૢ࡞ͱ ϑΟʔυόοΫ ͷ࢓૊Έ Ұൠతͳೖग़ྗૢ࡞΍ه߸ྨ ݪ࢝తཁૉΛ૊Έ߹Θͤͨ΋ͷ ΠϯλʔϑΣΠεݻ༗ͷίϚϯυͱϑΟʔυόοΫ ϢʔβʔͷߦಈύλʔϯΛߟྀͭͭ͠ෳ߹ཁૉΛ૊Έ߹Θͤͨ΋ͷ ʰAbout Face 3 ΠϯλϥΫγϣϯσβΠϯͷۃҙʱΑΓղऍ Alan Cooper, Robert Reimann, David Cronin ஶɺ௕ඌߴ߂ ༁ ೖྗ ग़ྗ গͳ͍छྨ ؆୯ͳૢ࡞ํ๏ େ ͖ ͳ ޮ Ռ

Slide 85

Slide 85 text

© 2019 Satori Maru / @usagimaruma. #macosnative ෳ߹ཁૉ ݪ࢝తཁૉ جຊૢ࡞ͱ ϑΟʔυόοΫ ͷ࢓૊Έ Ұൠతͳೖग़ྗૢ࡞΍ه߸ྨ ݪ࢝తཁૉΛ૊Έ߹Θͤͨ΋ͷ ʰAbout Face 3 ΠϯλϥΫγϣϯσβΠϯͷۃҙʱΑΓղऍ Alan Cooper, Robert Reimann, David Cronin ஶɺ௕ඌߴ߂ ༁ ೖྗ ग़ྗ গͳ͍छྨ ؆୯ͳૢ࡞ํ๏ େ ͖ ͳ ޮ Ռ ΠσΟΦϜ ΠϯλʔϑΣΠεݻ༗ͷίϚϯυͱϑΟʔυόοΫ ϢʔβʔͷߦಈύλʔϯΛߟྀͭͭ͠ෳ߹ཁૉΛ૊Έ߹Θͤͨ΋ͷ

Slide 86

Slide 86 text

© 2019 Satori Maru / @usagimaruma. #macosnative ෳ߹ཁૉ ݪ࢝తཁૉ جຊૢ࡞ͱ ϑΟʔυόοΫ ͷ࢓૊Έ Ұൠతͳೖग़ྗૢ࡞΍ه߸ྨ ݪ࢝తཁૉΛ૊Έ߹Θͤͨ΋ͷ ʰAbout Face 3 ΠϯλϥΫγϣϯσβΠϯͷۃҙʱΑΓղऍ Alan Cooper, Robert Reimann, David Cronin ஶɺ௕ඌߴ߂ ༁ ೖྗ ग़ྗ গͳ͍छྨ ؆୯ͳૢ࡞ํ๏ େ ͖ ͳ ޮ Ռ macOS ωΠςΟϒΠϯλʔϑΣΠε “Β͠͞”

Slide 87

Slide 87 text

© 2019 Satori Maru / @usagimaruma. #macosnative