Slide 1

Slide 1 text

NBD04Ͱ ΋ͬͱΞϓϦΛ࡞Ζ͏ J04%$+BQBO %F/"!NBMU ଜాߛ࢘

Slide 2

Slide 2 text

!NBMU

Slide 3

Slide 3 text

!NBMU w 0NJBJͰ݁ࠗʢ೥ʣ

Slide 4

Slide 4 text

!NBMU w גࣜձࣾσΟʔɾΤψɾΤʔ w ৽نࣄۀ։ൃ w ୅ද࡞ɿ-B⒎Z w ҟಈͯ͠ۀ຿ఏܞઌͱͷ͓࢓ࣄ w ("&HPͱ͔͕ଟ͍

Slide 5

Slide 5 text

!NBMU w 4XJGUେ޷͖ w J04େ޷͖

Slide 6

Slide 6 text

!NBMU

Slide 7

Slide 7 text

ࠓ೔͸ ϓϥΠϕʔτͰ࡞͍ͬͯΔ NBDΞϓϦͰͷ͓࿩Ͱ͢

Slide 8

Slide 8 text

Ξϯέʔτ NBDΞϓϦΛ࡞ͬͨ͜ͱ͸ ͋Γ·͔͢ʁ

Slide 9

Slide 9 text

Ξϯέʔτ ωΠςΟϒͰ࡞Γ·͔ͨ͠ʁ

Slide 10

Slide 10 text

"OOBZ

Slide 11

Slide 11 text

"OOBZ w ࡞͍ͬͯΔཧ༝ w ࣗ෼ʹඞཁͳཁ݅Λ
 ຬͨ͢ΞϓϦ͕ͳ͔ͬͨ

Slide 12

Slide 12 text

ϝϞΞϓϦʹٻΊΔཁ݅ w ϚʔΫμ΢ϯͰॻ͚Δ w ϫʔΫεϖʔε͕࡞ΕΔ w ϑΥϧμͱͯ͠อଘ͞ΕΔ w J04Ͱ΋ฤूͰ͖Δ w w ϚʔΫμ΢ϯͰॻ͚Δ w ϫʔΫεϖʔε͕࡞ΕΔ w ϑΥϧμͱͯ͠อଘ͞ΕΔ w J04Ͱ΋ฤूͰ͖Δ w ωΠςΟϒͰ͋Δ

Slide 13

Slide 13 text

ͳͥωΠςΟϒͳͷ͔ w ಈ͖͕ܰշͰ͋Δ w ࢖͍΍͍͢6*

Slide 14

Slide 14 text

ͳͥωΠςΟϒͳͷ͔ w ಈ͖͕ܰշͰ͋Δ w ࢖͍΍͍͢6* ಛʹͬͪ͜

Slide 15

Slide 15 text

࢖͍΍͍͢6*ͱ͸Կ͔ w Ϣʔβ͕࢖͍׳Εͨ6* w Ϣʔβ͕ڍಈΛ૝૾͠΍͍͢6*

Slide 16

Slide 16 text

࢖͍΍͍͢6*ͱ͸Կ͔ Ϣʔβ͸
 ͦΕͧΕͷΞϓϦΛ
 ʮNBD04ͷͳ͔Ͱʯ
 ࢖͍ͬͯΔ

Slide 17

Slide 17 text

࢖͍΍͍͢6*ͱ͸Կ͔ NBD04Β͍͠6*

Slide 18

Slide 18 text

NBDΒ͍͠6*ͱ͸

Slide 19

Slide 19 text

w "QQ,JUΛར༻ͨ͠$PDPB"QQσεΫτοϓΞϓϦ w 8FC7JFX &MFDUSPO 'MBTI +BWBͳͲͷٕज़Ͱߏங͠ͳ͍ w )*(ΛकΔʗ"QQMF७ਖ਼ΞϓϦΛϦεϖΫτ͢Δ w 8JOEPXTͷ6*Λج४ʹ͠ͳ͍ w υϥοάΞϯυυϩοϓͳͲػೳతʹ΋.BD04ͷ࢓૊Έʹै͏ w ಠࣗ6*ͰԚછ͗͢͠ͳ͍ w .BD04Β͍͠৭࢖͍ w .BD04Β͍͠ΞχϝʔγϣϯʗΠϯλϥΫγϣϯ w .BD04Β͍͠ݴޠදݱʢྫ͑͹ʮ΢Πϯυ΢ʯʮ؀ڥઃఆʜʯͳͲʣ w .BD04Β͍͠ϑΥϯτʢ4BO'SBODJTDP )FMWFUJDB/FVF -VDJEB(SBOEF )JSBHJOP4BOT .FOMP .POBDPʜʣ w ඪ४తͳϝχϡʔόʔ͓ΑͼΩʔϘʔυγϣʔτΧοτ VTBHJNBSV͞Μʮ6*͕Τϩ͍.BD"QQूʯΑΓ NBDΒ͍͠6*ͱ͸

Slide 20

Slide 20 text

NBDΒ͘͠ͳ͍ͱʁ w ׳ΕΔ·ͰڍಈΛ૝૾Ͱ͖ͳ͍ w ׳Εͯ΋ΞϓϦΛ੾Γସ͑Δͱ͖ʹ
 ίϯςΩετεΠον͕ൃੜ͢Δ w %PDLʹฒ΂ͨ͘ͳ͍

Slide 21

Slide 21 text

ྫ͑͹ʜ

Slide 22

Slide 22 text

ྫ͑͹ʜ

Slide 23

Slide 23 text

NBD04OBUJWF IUUQTNBDPTOBUJWFHJUIVCJP ৄ͘͠͸ͪ͜Β

Slide 24

Slide 24 text

NBD04OBUJWF w ωΠςΟϒΞϓϦΛѪͯ͠
 ΍·ͳ͍ਓ͕ू͏ڰؾͷษڧձ w ͓ͱͱ͍ୈҰճ͕։࠵ w ୈೋճ΋ʢͨͿΜʣ΍ΔΒ͍͠ w σβΠϯ໘ؚΊͯ௒ษڧʹͳͬͨ IUUQTNBDPTOBUJWFHJUIVCJP

Slide 25

Slide 25 text

ωΠςΟϒͰ͋Δҙຯ͸ ͝ཧղ͍͚͔ͨͩͨͱ ࢥ͍·͢

Slide 26

Slide 26 text

ͨͩʜ w ωΠςΟϒΞϓϦͬͯ௒গͳ͍ w اۀ͕NBDΞϓϦΛ࡞Δͷ͸೉͍͠ w NBDϢʔβ͸฼਺͕গͳ͍

Slide 27

Slide 27 text

͡Ό͋Ͳ͏͢Δ͔

Slide 28

Slide 28 text

͋ͳ͕ͨ ϓϥΠϕʔτͰ ࡞͍ͬͯͩ͘͞

Slide 29

Slide 29 text

ϓϥΠϕʔτͳΒ ݄ԁºਓͰ΋ ݄ສԁͷച্ʂ

Slide 30

Slide 30 text

σβΠϯͷ࢓ํ͕ Θ͔Βͳ͍ʁ

Slide 31

Slide 31 text

ωΠςΟϒͳΒେৎ෉
 ࡞Γ΍͍͢Α͏ʹ࡞Ε͹ ࣗવͱNBDΒ͘͠ͳΓ·͢ʂ

Slide 32

Slide 32 text

Ҏ্ʂ

Slide 33

Slide 33 text

͔͜͜Β͸ ΤϯδχΞͱͯ͠ͷ͓࿩

Slide 34

Slide 34 text

NBDΞϓϦ։ൃ͸ ਏ͍Ͱ͢

Slide 35

Slide 35 text

NBDΞϓϦ։ൃͷਏΈ υΩϡϝϯτ͕ͻͲ͍

Slide 36

Slide 36 text

NBDΞϓϦ։ൃͷ৺ಘ w Πϯλʔωοτ͸ӕͩΒ͚ w ϓϩάϥϛϯάΨΠυ΋ӕ w ϦϑΝϨϯε͸ϛεϦʔυ

Slide 37

Slide 37 text

Πϯλʔωοτ͸ӕͩΒ͚ w /45BCMF7JFX w "SSBZ$POUSPMMFSΛ࢖͏ͱྑ͍ w ɹ w ɹ


Slide 38

Slide 38 text

Πϯλʔωοτ͸ӕͩΒ͚ w /45BCMF7JFX w "SSBZ$POUSPMMFSΛ࢖͏ͱྑ͍ w ˠӕ w 4XJGUͰ࢖͓͏ͱ͢Δͱ
 Ϋϥογϡͷཛྷ

Slide 39

Slide 39 text

Πϯλʔωοτ͸ӕͩΒ͚ w ಠࣗϑΝΠϧͷઃఆ w %PDVNFOU5ZQFTͷΈͰ΍Δ w ɹ w ɹ w

Slide 40

Slide 40 text

Πϯλʔωοτ͸ӕͩΒ͚ w ಠࣗϑΝΠϧͷઃఆ w %PDVNFOU5ZQFTͷΈͰ΍Δ w ˠӕ w େ෼ݹ͍΍Γํ w ࠓͳΒ&YQPSUFE65*TΛซ༻

Slide 41

Slide 41 text

ϓϩάϥϛϯάΨΠυ΋ӕ w *OUSPEVDUJPOUP%SBHBOE%SPQ w ࠷ऴߋ৽͸ w

Slide 42

Slide 42 text

ϓϩάϥϛϯάΨΠυ΋ӕ w *OUSPEVDUJPOUP%SBHBOE%SPQ w ࠷ऴߋ৽͸ w ೥ʹେ͖ͳΞοϓσʔτ͋Γ

Slide 43

Slide 43 text

ϦϑΝϨϯε͸ϛεϦʔυ ಠࣗϑΝΠϧͷઃఆ΋ υϥοάΞϯυυϩοϓͷ࣮૷΋ ݹ͍΍Γํ͕EFQSFDBUFEʹ͢Β ͳ͍ͬͯͳ͍

Slide 44

Slide 44 text

ͦͷΘΓʹ w ࣮૷͸݁ߏߋ৽͞Ε͍ͯΔ w ຖ೥8IBU`T/FXJO$PDPB
 ͷϏσΦ͕ଘࡏ͢Δ w υΩϡϝϯτ͕௥͍͔ͭͳ͍

Slide 45

Slide 45 text

NBDΞϓϦ։ൃͷ৺ಘ 88%$ͷಈը͕ਖ਼ٛʂ

Slide 46

Slide 46 text

NBDΞϓϦ։ൃͷ৺ಘ w ϋϚͬͨͱ͖ͷಈ͖ w ϑϨʔϜϫʔΫͷରԠNBD04ͷ
 όʔδϣϯΛ֬ೝ w όʔδϣϯͷϦϦʔε೥Λ֬ೝ w ͦͷ೥ͷ88%$Λࢹௌ

Slide 47

Slide 47 text

NBDΞϓϦ։ൃͷ৺ಘ w %SBHBOE%SPQͳΒɾɾɾ w /4'JMF1SPNJTF1SPWJEFS w NBD04 w ೥ϦϦʔε w IUUQTEFWFMPQFSBQQMFDPN WJEFPTQMBZXXED

Slide 48

Slide 48 text

͍΍͍΍͆
 ͱࢥ͍ͬͯΔ͋ͳͨ

Slide 49

Slide 49 text

ϚδͰ͢

Slide 50

Slide 50 text

΍ͬͯΒΕΜʂ ͱࢥͬͨํ͸ !NBMU ·Ͱ࣭໰ͯ͠Լ͍͞ɻ େ఍ͷϋϚΓͲ͜Ζ͸ϋϚͬͨؾ͕͠·͢ɻ

Slide 51

Slide 51 text

࠷ޙʹ ϋϚͬͨͱ͜ΖΛ঺հ

Slide 52

Slide 52 text

ಠࣗϑΝΠϧͷઃఆ w 6OJGPSN5ZQF*EFOUJpFS w σʔλλΠϓΛҰҙʹಛఆ͢Δ
 ࣝผࢠ


Slide 53

Slide 53 text

ࣝผࢠ ܧঝݩ ֦ுࢠ QVCMJDQMBJOUFYU QVCMJDUFYU UYU QVCMJDTPVSDFDPEF QVCMJDQMBJOUFYU QVCMJDDTPVSDF QVCMJDTPVSDFDPEF D DPNBQQMFQBDLBHF QVCMJDEJSFDUPSZ DPNBQQMFBQQMJDBUJPO QVCMJDFYFDVUBCMF DPNBQQMFBQQMJDBUJPOCVOEMF DPNBQQMFQBDLBHF DPNBQQMFCVOEMF DPNBQQMFBQQMJDBUJPO BQQ

Slide 54

Slide 54 text

ಠࣗϑΝΠϧͷઃఆ ࣝผࢠ ܧঝݩ ֦ுࢠ PSHBOOBZXPSLTQBDF DPNBQQMFQBDLBHF BOOBZ

Slide 55

Slide 55 text

ಠࣗϑΝΠϧͷઃఆ

Slide 56

Slide 56 text

ಠࣗϑΝΠϧͷઃఆ w %PDVNFOU5ZQFTͷ*EFOUJpFSʹ
 PSHBOOBZXPSLTQBDFΛࢦఆ w ΄͔ͷ஋͸ඞཁͳ͠

Slide 57

Slide 57 text

ಠࣗϑΝΠϧͷઃఆ

Slide 58

Slide 58 text

%SBHBOE%SPQ w ৄ͘͠͸ίνϥ
 IUUQTEFWFMPQFSBQQMFDPN WJEFPTQMBZXXED

Slide 59

Slide 59 text

%SBHBOE%SPQ w /41BTUFCPBSEΛ࢖͏ w ΄΅6*1BTUFCPBSEͱಉ͡ w %SBHͷλΠϛϯάͰHFOFSBMͰ͸ ͳ͍/41BTUFCPBSEΛҾ਺ʹ EFMFHBUFͷϝιου͕ݺ͹ΕΔ

Slide 60

Slide 60 text

%SBHBOE%SPQ func outlineView( _ outlineView: NSOutlineView, writeItems items: [Any], to pasteboard: NSPasteboard ) -> Bool { let nodes = items.compactMap { $0 as? NodeModel } let filePromiseProviders = nodes.map { NSFilePromiseProvider( fileType: kUTTypePlainText as String, delegate: $0 ) } pasteboard.writeObjects(filePromiseProviders) return true }

Slide 61

Slide 61 text

%SBHBOE%SPQ extension NodeModel: NSFilePromiseProviderDelegate { func filePromiseProvider( _ filePromiseProvider: NSFilePromiseProvider, fileNameForType fileType: String ) -> String { return name } func filePromiseProvider( _ filePromiseProvider: NSFilePromiseProvider, writePromiseTo url: URL, completionHandler: @escaping (Error?) -> Void ) { do { try write(to: url) } catch { completionHandler(error) } completionHandler(nil) } }

Slide 62

Slide 62 text

/40VUMJOF7JFX

Slide 63

Slide 63 text

/40VUMJOF7JFX w ͱͯ΋ศརϏϡʔ w υΩϡϝϯτগͳ͗͢ w ओʹར༻͢ΔϓϩτίϧϝιουΛ
 ྻڍ͠·͢

Slide 64

Slide 64 text

/40VUMJOF7JFX protocol NSOutlineViewDataSource { func outlineView( _ outlineView: NSOutlineView, numberOfChildrenOfItem item: Any? ) -> Int func outlineView( _ outlineView: NSOutlineView, child index: Int, ofItem item: Any? ) -> Any func outlineView( _ outlineView: NSOutlineView, isItemExpandable item: Any ) -> Bool }

Slide 65

Slide 65 text

/40VUMJOF7JFX protocol NSOutlineViewDelegate { func outlineViewSelectionDidChange( _ notification: Notification ) func outlineView( _ outlineView: NSOutlineView, viewFor tableColumn: NSTableColumn?, item: Any ) -> NSView? }

Slide 66

Slide 66 text

/40VUMJOF7JFX 0VUMJOF7JFX಺%SBHBOE%SPQ༻ protocol NSOutlineViewDataSource { func outlineView( _ outlineView: NSOutlineView, validateDrop info: NSDraggingInfo, proposedItem item: Any?, proposedChildIndex index: Int ) -> NSDragOperation func outlineView( _ outlineView: NSOutlineView, acceptDrop info: NSDraggingInfo, item: Any?, childIndex index: Int ) -> Bool }

Slide 67

Slide 67 text

/40VUMJOF7JFX ։͖ঢ়ଶอଘ outlineView.autosaveName = .init(“foobar”) outlineView.autosaveExpandedItems = true protocol NSOutlineViewDataSource { func outlineView( _ outlineView: NSOutlineView, itemForPersistentObject object: Any ) -> Any? func outlineView( _ outlineView: NSOutlineView, persistentObjectForItem item: Any? ) -> Any? }

Slide 68

Slide 68 text

࠷ޙʹ w NBDΞϓϦ։ൃͷ࣮૷͸
 ૉ੖Β͍͠Ͱ͢ w ඒ͘͠ɺ଎͘ɺ࢖͍΍͍͢ΞϓϦ͕ ࡞Ε·͢ w υΩϡϝϯτ͕ἧ͍ͬͯͳ͍ͷ͕
 ͭΒ͍͚ͩͰ͢

Slide 69

Slide 69 text

࠷ޙʹ w օͰɺNBDΞϓϦք۾Λ
 ੝Γ্͍͖͛ͯ·ͤΜ͔ʁ w ࣭໰͸͍ͭͰ΋͓ड͚͠·͢
 !NBMU

Slide 70

Slide 70 text

͋Γ͕ͱ͏ ͍͟͝·ͨ͠