Slide 1

Slide 1 text

5PVDI#BSPO$BUBMZTU QPUBUPUJQTJ04"OESPJE։ൃ5JQTڞ༗ձ

Slide 2

Slide 2 text

1SPpMF struct Profile { let name = "Kazuya Ueoka" let twitter = "@fromkk" let github = "fromkk" let qiita = "fromkk" let note = "fromkk" } • 2

Slide 3

Slide 3 text

No content

Slide 4

Slide 4 text

IUUQTEFWFMPQFSBQQMFDPNWJEFPTQMBZXXED

Slide 5

Slide 5 text

IUUQTEFWFMPQFSBQQMFDPNWJEFPTQMBZXXED

Slide 6

Slide 6 text

IUUQTEFWFMPQFSBQQMFDPNWJEFPTQMBZXXED

Slide 7

Slide 7 text

No content

Slide 8

Slide 8 text

IUUQTEFWFMPQFSBQQMFDPNWJEFPTQMBZXXED

Slide 9

Slide 9 text

IUUQTEFWFMPQFSBQQMFDPNWJEFPTQMBZXXED

Slide 10

Slide 10 text

IUUQTEFWFMPQFSBQQMFDPNWJEFPTQMBZXXED

Slide 11

Slide 11 text

No content

Slide 12

Slide 12 text

5PVDI#BSͱ͸ w ೥ʹൃച͞Εͨ.BDCPPL1SP͔Β౥ࡌ͞ΕͨΩʔϘʔ υͷԞଆʹ഑ஔ͞ΕΔσΟεϓϨΠ͖ͭͷίϯτϩʔϧόʔ w ൃച౰͔࣌Β&TDΩʔͱϑΝϯΫγϣϯΩʔ͕5PVDI#BSʹ ಺แ͞Εͯ͠·͍ࢍ൱྆࿦ w ೥݄ʹൃച͞Εͨ.BDCPPL1SPΠϯνͰ͸&TD Ωʔ͕෮ؼͨ͜͠ͱͰ଴ͪ๬ΜͰ͍ͨਓ͸େ׻ت 12

Slide 13

Slide 13 text

$BUBMZTUͰར༻ՄೳͳϘλϯͷछྨ 13

Slide 14

Slide 14 text

࣮૷ํ๏

Slide 15

Slide 15 text

࣮૷ํ๏ • NSTouchBar.CustomizationIdentifierΛఆٛ͢Δ • Touch BarͷछྨΛࣝผ͢Δ 15 extension NSTouchBar.CustomizationIdentifier { static let myTouchBar = NSTouchBar.CustomizationIdentifier( "me.fromkk.CatalystSampler.MyTouchBar" ) }

Slide 16

Slide 16 text

࣮૷ํ๏ 16 extension NSTouchBarItem.Identifier { static let prev = NSTouchBarItem.Identifier( "me.fromkk.CatalystSampler.prev" ) static let next = NSTouchBarItem.Identifier( "me.fromkk.CatalystSampler.next" ) } • NSTouchBarItem.IdentifierΛఆٛ͢Δ • Touch Barʹදࣔ͢Δ߲໨ͷछྨΛࣝผ͢Δ

Slide 17

Slide 17 text

࣮૷ํ๏ w $BUBMZTUͷ৔߹ʹ6*3FTQPOEFSʹ૿͍͑ͯΔNBLF5PVDI#BSϝιουΛ࣮૷͢Δ 17 #if targetEnvironment(macCatalyst) override func makeTouchBar() -> NSTouchBar? { let touchBar = NSTouchBar() touchBar.customizationIdentifier = .myTouchBar touchBar.defaultItemIdentifiers = [.prev, .next, .otherItemsProxy] touchBar.customizationAllowedItemIdentifiers = [.prev, .next] touchBar.delegate = self return touchBar } #endif

Slide 18

Slide 18 text

NSTouchBarͷϓϩύςΟ • customizationIdentifier:Touch BarΛࣝผ͢ΔͨΊͷ஋ • customizationAllowedItemIdentifiers:ΧελϚΠζΛڐՄ͢Δࣝผࢠ • customizationRequiredItemIdentifiers:ΧελϚΠζ࣌ʹ࡟আͰ͖ͳ͍ࣝผࢠ • defaultItemIdentifiers:ΧελϚΠζ͢Δલʹදࣔ͢Δࣝผࢠ • itemIdentifiers:ొ࿥ࡁΈͷࣝผࢠ • principalItemIdentifier:தԝʹදࣔ͞ΕΔॏཁͳࣝผࢠ • escapeKeyReplacementItemIdentifier:Esc ΩʔΛࠩ͠ସ͑Δ৔߹ͷࣝผࢠ • templateItems:ࣝผࢠ͔ΒΠϯελϯεԽ͞Ε߲ͨ໨Λอ࣋͢ΔϓϩύςΟ • delegate: ࣝผࢠ͔ΒΠϯελϯεΛੜ੒͢ΔॲཧΛҠৡ 18

Slide 19

Slide 19 text

ΧελϚΠζ w ʮදࣔʯϝχϡʔ͔Βʮ5PVDI#BSΛΧελϚΠζʜʯΛબ୒ ͢Δ͜ͱͰදࣔ͢Δ߲໨΍ฒͼॱͷઃఆ͕Մೳ w DVTUPNJ[BUJPO"MMPXFE*UFN*EFOUJpFST΍ DVTUPNJ[BUJPO3FRVJSFE*UFN*EFOUJpFSTΛࢦఆ 19

Slide 20

Slide 20 text

࣮૷ํ๏ • NSTouchBarDelegateΛ࣮૷͢Δ • func touchBar(_ touchBar: NSTouchBar, makeItemForIdentifier identifier: NSTouchBarItem.Identifier) -> NSTouchBarItem? • identifierʹࣄલʹఆٛͨ͠஋͕౉͞ΕΔͷͰNSTouchBarItem ͷαϒΫϥεΛੜ੒ͯ͠ฦ͢ • NSTouchBarItemʹ͸customizationLabelΛઃఆ͓ͯ͘͠ͱΧ ελϚΠζ࣌ʹϥϕϧ͕දࣔ͞ΕΔ 20

Slide 21

Slide 21 text

ݕࡧॱং IUUQTEFWFMPQFSBQQMFDPNEPDVNFOUBUJPOBQQLJUOTUPVDICBS 10. App delegate 9. App object 8. Main window’s controller 7. Main window’s delegate 6. Main window 5. Main window’s first responder 4. Key window’s controller 3. Key window’s delegate 2. Key window 1. Key window’s first responder 5PVDI#BSΛݕࡧ͢ΔॱংʢԼ͔Β্ʹʣ 6*3FTQPOEFSͷαϒΫϥεΛൃݟ͢Δͱߋʹݕࡧ 9. App delegate 8. App object 7. Key window’s controller 6. Key window 5. View controller that is closest to root of window 4. View that is closest to root of window 3. Intermediate view controllers and views 2. View controller of key window’s first responder 1. Key window’s first responder

Slide 22

Slide 22 text

஫ҙ఺ w 6*3FTQPOEFSΛܧঝͯ͠Ε͹දࣔ͞ΕΔ͔ͱࢥ͕ͬͨ4XJGU6* ʢ6*7JFX$POUSPMMFS3FQSFTFOUBCMF 6*7JFX3FQSFTFOUBCMFͰϥοϓͨ͠΋ͷʣͰ͸ දࣔ͞Εͳ͍ w XJOEPX4DFOFͷUPVDI#BSϓϩύςΟʹແཧ΍Γ/45PVDI#BSͷΠϯελϯεΛ౉ ͙͢Β͍͔͠ͳͦ͞͏ w 4XJGU6*Λར༻͍ͨ͠৔߹͸$BUBMZTUͰ͸ແ͘NBD04ωΠςΟϒͷΞϓϦΛ։ൃ͠ ͨํ͕ྑ͍͔΋ w εϥΠμʔΛදݱ͢Δ/44MJEFS5PVDI#BS*UFN͔Β஋Λऔಘ͢ΔϓϩύςΟ͕ແ͍ w TMJEFS*UFNWBMVF GPS,FZlEPVCMF7BMVF ͰऔಘՄೳ 22

Slide 23

Slide 23 text

·ͱΊ w 5PVDI#BS͸/45PVDI#BSͰදݱ w ରԠࡁΈͷ/45PVDI#BS*UFNͷछྨ΋·ͩগͳ͍ͪ͠ΌΜͱ஋ ͕औΕͳ͔ͬͨΓ͢ΔͷͰࠓޙʹظ଴ w 5PVDI#BS͸NBD04ͳΒͰ͸ͷཁૉͷҰͭͳͷͰ$BUBMZTUର Ԡ͢Δ࣌͸ੋඇ࣮૷͠·͠ΐ͏ 23

Slide 24

Slide 24 text

αϯϓϧίʔυ IUUQTHJUIVCDPNGSPNLL$BUBMZTU4BNQMFS

Slide 25

Slide 25 text

13

Slide 26

Slide 26 text

ʲిࢠॻ੶ʳNBD04$BUBMZTU%FFQ%JWF 26 IUUQTGSPNLLCPPUIQNJUFNT

Slide 27

Slide 27 text

IUUQTGSFFUJNFQJDLFSpSFCBTFBQQDPN

Slide 28

Slide 28 text

IUUQTUZQFNBSLEPXOBQQ

Slide 29

Slide 29 text

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