Slide 1

Slide 1 text

4DFOF,JUΛ࢖ͬͯΞϓϦͷΫΦϦςΟ Λܶతʹ্͛Δ J04%$+BQBO גࣜձࣾ;0;0ςΫϊϩδʔζ ;0;0ΞϓϦ෦J04νʔϜ Ϧʔμʔ ໊औ߂ฏ $PQZSJHIU˜;0;05FDIOPMPHJFT *OD

Slide 2

Slide 2 text

© ZOZO Technologies, Inc. גࣜձࣾ;0;0ςΫϊϩδʔζ ;0;0ΞϓϦ෦J04νʔϜ Ϧʔμʔ ໊औ߂ฏ ೥݄c;0;0ςΫϊϩδʔζೖࣾ ೥݄c;0;0508/J04ΞϓϦ։ൃ ࠷ۙνʔϜϦʔμʔʹͳΓ·ͨ͠ɻ 2

Slide 3

Slide 3 text

© ZOZO Technologies, Inc. IUUQT[P[PKQ 3 ● ೔ຊ࠷େڃͷϑΝογϣϯ௨ൢαΠτ ● Ҏ্ͷγϣοϓɺ Ҏ্ͷϒϥϯυͷऔΓѻ͍ʢͱ΋ʹ೥ ݄຤࣌఺ʣ ● ৗ࣌ສ఺Ҏ্ͷ঎඼ΞΠςϜ਺ͱຖ೔ฏۉ ఺Ҏ্ͷ৽ண঎඼Λ ܝࡌ ● ίεϝઐ໳Ϟʔϧʮ;0;0$04.&ʯ΍ۺͷઐ໳Ϟʔϧ ʮ;0;04)0&4ʯɺϥάδϡΞϦʔˍσβΠφʔζκʔϯ ʮ;0;07*--"ʯΛల։ ● ଈ೔഑ૹαʔϏε ● ΪϑτϥοϐϯάαʔϏε ● πέ෷͍ͳͲ

Slide 4

Slide 4 text

© ZOZO Technologies, Inc. 4 ;0;0508/Ͱ࠷ۙങͬͨ΋ͷ

Slide 5

Slide 5 text

© ZOZO Technologies, Inc. 5 ͜ͷηογϣϯͷओ୊

Slide 6

Slide 6 text

© ZOZO Technologies, Inc. 6 4DFOF,JU͕ͲͷΑ͏ͳϑϨʔϜϫʔΫͳͷ͔ɺ ΞϓϦͷΫΦϦςΟΛ্͛ΔͨΊʹ4DFOF,JUͱ6*,JUͷซ༻ ʹΑ࣮ͬͯݱͰ͖Δදݱͱͦͷ࣮૷ྫ Λ͓࿩͠·͢ɻ

Slide 7

Slide 7 text

© ZOZO Technologies, Inc. 7 ຊηογϣϯʹ͓͚ΔΞϓϦͷΫΦϦςΟ දݱͷ࣭ ΞϓϦͷදݱྗɾදݱͷ๛͔͞ ʹ

Slide 8

Slide 8 text

© ZOZO Technologies, Inc. 8 ࠓ೔࿩͍ͨ͜͠ͱ ʁ 4DFOF,JUʷ6*,JUͷ දݱͱ࣮૷ྫ ʁ 4DFOF,JUͬͯԿʁ ✖ 4DFOF,JUͱ6*,JUͷ਌࿨ੑ

Slide 9

Slide 9 text

© ZOZO Technologies, Inc. 9 ݸਓ։ൃ͕޷͖͕ͩݸਓ։ൃͷΫΦϦςΟ͔Βൈ͚ग़͢͜ͱ͕ Ͱ͖ͣʹ೰ΜͰ͍ͨ ͍Δ Ϟνϕʔγϣϯ

Slide 10

Slide 10 text

© ZOZO Technologies, Inc. 10 Ұͭͷख๏ͱͯ͠4DFOF,JU͕༗༻ͳͷͰ ಉ͡Α͏ʹ೰ΜͰ͍Δਓͷ͖͔͚ͬʹͳΕ͹خ͍͠ɻ Ϟνϕʔγϣϯ

Slide 11

Slide 11 text

© ZOZO Technologies, Inc. 11 4DFOF,JUͬͯԿʁ $ ) " 1 5 & 3 c

Slide 12

Slide 12 text

© ZOZO Technologies, Inc. $SFBUF%HBNFTBOEBEE%DPOUFOUUPBQQTVTJOHIJHIMFWFM TDFOFEFTDSJQUJPOT&BTJMZBEEBOJNBUJPOT QIZTJDTTJNVMBUJPO QBSUJDMFFGGFDUT BOESFBMJTUJDQIZTJDBMMZCBTFESFOEFSJOH 12 Ҿ༻IUUQTEFWFMPQFSBQQMFDPNEPDVNFOUBUJPOTDFOFLJU "QQMF%PDVNFOUBUJPO4DFOF,JU

Slide 13

Slide 13 text

© ZOZO Technologies, Inc. ϋΠϨϕϧͳγʔϯهड़Λ༻͍ͯɺ%ήʔϜΛ࡞੒ͨ͠ΓɺΞϓϦʹ %ίϯςϯπΛ௥Ճ͢Δ͜ͱ͕Ͱ͖·͢ɻΞχϝʔγϣϯɺ෺ཧγ ϛϡϨʔγϣϯɺύʔςΟΫϧΤϑΣΫτɺϦΞϧͳ෺ཧϕʔεͷϨ ϯμϦϯάΛ؆୯ʹ௥ՃͰ͖·͢ɻ 13 Ҿ༻IUUQTEFWFMPQFSBQQMFDPNEPDVNFOUBUJPOTDFOFLJU "QQMF%PDVNFOUBUJPO4DFOF,JU

Slide 14

Slide 14 text

© ZOZO Technologies, Inc. 4DFOF,JUDPNCJOFTBIJHIQFSGPSNBODFSFOEFSJOHFOHJOFXJUIBEFTDSJQUJWF"1*GPSJNQPSU NBOJQVMBUJPO BOESFOEFSJOHPG%BTTFUT6OMJLFMPXFSMFWFM"1*TTVDIBT.FUBMBOE 0QFO(-UIBUSFRVJSFZPVUPJNQMFNFOUJOQSFDJTFEFUBJMUIFSFOEFSJOHBMHPSJUINTUIBU EJTQMBZBTDFOF 4DFOF,JUSFRVJSFTPOMZEFTDSJQUJPOTPGZPVSTDFOF`TDPOUFOUTBOEUIF BDUJPOTPSBOJNBUJPOTZPVXBOUJUUPQFSGPSN 14 Ҿ༻IUUQTEFWFMPQFSBQQMFDPNEPDVNFOUBUJPOTDFOFLJU "QQMF%PDVNFOUBUJPO4DFOF,JU0WFSWJFX

Slide 15

Slide 15 text

© ZOZO Technologies, Inc. 4DFOF,JU͸ɺߴੑೳͳϨϯμϦϯάΤϯδϯͱɺ%ΞηοτͷಡΈࠐΈɺૢ࡞ɺϨϯμϦϯ άͷͨΊͷهड़ࣜ"1*Λ૊Έ߹Θͤͨ΋ͷͰ͢ɻ.FUBM΍0QFO(-ͷΑ͏ͳ௿Ϩϕϧͷ"1*Ͱ ͸ɺγʔϯΛදࣔ͢ΔͨΊͷϨϯμϦϯάΞϧΰϦζϜΛৄࡉʹ࣮૷͢Δඞཁ͕͋Γ·͕͢ɺ 4DFOF,JUͰ͸ɺγʔϯͷίϯςϯπͱ࣮ߦ͍ͤͨ͞ΞΫγϣϯ΍ΞχϝʔγϣϯΛهड़͢Δ ͚ͩͰ0,Ͱ͢ɻ 15 Ҿ༻IUUQTEFWFMPQFSBQQMFDPNEPDVNFOUBUJPOTDFOFLJU "QQMF%PDVNFOUBUJPO4DFOF,JU0WFSWJFX

Slide 16

Slide 16 text

© ZOZO Technologies, Inc. 4DFOF,JU͸ɺߴੑೳͳϨϯμϦϯάΤϯδϯͱɺ%ΞηοτͷಡΈࠐΈɺૢ࡞ɺϨϯμϦϯ άͷͨΊͷهड़ࣜ"1*Λ૊Έ߹Θͤͨ΋ͷͰ͢ɻ.FUBM΍0QFO(-ͷΑ͏ͳ௿Ϩϕϧͷ"1*Ͱ ͸ɺγʔϯΛදࣔ͢ΔͨΊͷϨϯμϦϯάΞϧΰϦζϜΛৄࡉʹ࣮૷͢Δඞཁ͕͋Γ·͕͢ɺ 4DFOF,JUͰ͸ɺγʔϯͷίϯςϯπͱ࣮ߦ͍ͤͨ͞ΞΫγϣϯ΍ΞχϝʔγϣϯΛهड़͢Δ ͚ͩͰ0,Ͱ͢ɻ 16 Ҿ༻IUUQTEFWFMPQFSBQQMFDPNEPDVNFOUBUJPOTDFOFLJU "QQMF%PDVNFOUBUJPO4DFOF,JU0WFSWJFX

Slide 17

Slide 17 text

© ZOZO Technologies, Inc. 17 4DFOF,JUͱ͸ %ͷදݱΛ͢ΔͨΊͷϑϨʔϜϫʔΫ ΞχϝʔγϣϯɺύʔςΟΫϧɺ෺ཧϨϯμϦϯά ͳͲ؆୯ʹ௥ՃՄೳ ίϯςϯπΛ௥Ճͯ͠ɺίʔυΛهड़͢Δ͚ͩͰ0,

Slide 18

Slide 18 text

© ZOZO Technologies, Inc. 18 %ίϯςϯπΛѻ͏ΞϓϦ։ൃ͸͍ͯ͠ͳ͍͠ ࢲʹ͸ؔ܎ͳͦ͞͏ͩͳ"

Slide 19

Slide 19 text

© ZOZO Technologies, Inc. 19 %ίϯςϯπΛѻ͏ΞϓϦ։ൃ͸͍ͯ͠ͳ͍͠ ࢲʹ͸ؔ܎ͳͦ͞͏ͩͳ"

Slide 20

Slide 20 text

© ZOZO Technologies, Inc. 20 4DFOF,JU͸ඇ%ܥͷΞϓϦͰ΋༗༻Ͱ͢#

Slide 21

Slide 21 text

© ZOZO Technologies, Inc. 21 4DFOF,JUͱ6*,JUͷ਌࿨ੑ $ ) " 1 5 & 3 c ✖

Slide 22

Slide 22 text

© ZOZO Technologies, Inc. 22 4DFOFͱ͸Կ͔ʁ

Slide 23

Slide 23 text

© ZOZO Technologies, Inc. 23 4DFOF৔໘ ྫ͑͹ʮөըͷϥετγʔϯʯ

Slide 24

Slide 24 text

© ZOZO Technologies, Inc. 24 4DFOFΛߏ੒͢Δཁૉ ͳͲ ͲΜͳਓɾ෺͕഑ஔ͞Ε͍ͯͨͷ͔ ໌Δ͍ͷ͔ɾ҉͍ͷ͔ ͲΜͳΞϯάϧͰඳࣸ͞Ε͍ͯΔ͔ ͲͷΑ͏มԽɾҠಈ͕͋Δ͔

Slide 25

Slide 25 text

© ZOZO Technologies, Inc. 25 4DFOFΛߏ੒͢Δཁૉ 4$/(FPNFUSZ 4$/-JHIU 4$/$BNFSB SCNActionɾSCNTransaction ͳͲ ͲΜͳਓɾ෺͕഑ஔ͞Ε͍ͯͨͷ͔ ໌Δ͍ͷ͔ɾ҉͍ͷ͔ ͲΜͳΞϯάϧͰඳࣸ͞Ε͍ͯΔ͔ ͲͷΑ͏มԽɾҠಈ͕͋Δ͔

Slide 26

Slide 26 text

© ZOZO Technologies, Inc. 26 4DFOF,JUͰදݱՄೳ

Slide 27

Slide 27 text

© ZOZO Technologies, Inc. 4$/7JFX 27 4DFOFΛߏ੒͢Δཁૉ ɾɾɾ 4$/(FPNFUSZ 4$/-JHIU 4$/$BNFSB SCNActionɾSCNTransaction 4DFOFΛߏ੒͢Δཁૉ͸ 4$/7JFXͱ͍͏6*7JFXͷαϒΫϥε ্ͰऔΓѻ͏ 1 0 * / 5

Slide 28

Slide 28 text

© ZOZO Technologies, Inc. 28 Ҿ༻IUUQTEFWFMPQFSBQQMFDPNEPDVNFOUBUJPOTDFOFLJUTDOWJFX

Slide 29

Slide 29 text

© ZOZO Technologies, Inc. 30 4$/7JFXͱ͸ 4DFOF,JUͰͭ͘Δʮγʔϯʯ͸4$/7JFX্ʹදࣔ 4$/7JFX͸6*7JFXͷαϒΫϥε 6*7JFXΛܧঝ͍ͯ͠ΔͷͰࢲͨͪʹೃછΈͷ͋Δૢ࡞΍ ѻ͍͕Մೳ

Slide 30

Slide 30 text

© ZOZO Technologies, Inc. 30 4DFOF,JU͸6*,JUͱ਌࿨ੑ͕ߴ͍ͷ͔΋͠Εͳ͍$

Slide 31

Slide 31 text

© ZOZO Technologies, Inc. 31 4DFOF,JU͸6*,JUͱ਌࿨ੑ͕ߴ͍ͷ͔΋͠Εͳ͍$

Slide 32

Slide 32 text

© ZOZO Technologies, Inc. 32 4DFOF,JUʷ6*,JUͷදݱͱ࣮૷ྫ 1BSJDMF4ZTUFN $ ) " 1 5 & 3 c ʁ

Slide 33

Slide 33 text

© ZOZO Technologies, Inc. 33 4DFOFͱ͸Կ͔ʁ Ҿ༻IUUQTEFWFMPQFSBQQMFDPNEPDVNFOUBUJPOTDFOFLJUTDOQBSUJDMFTZTUFN

Slide 34

Slide 34 text

© ZOZO Technologies, Inc. 35 4DFOF,JUΛར༻ͨ͠1BSUJDMF4ZTUFN 9DPEF্ͰύʔςΟΫϧͷڍಈΛ೺ѲͰ͖Δ ඇৗʹγϯϓϧʹ࣮૷Ͱ͖Δ ΤϑΣΫτΛ͚ͭΔ͚ͩͰΞϓϦͷදݱ͕ϦονʹͳΔ

Slide 35

Slide 35 text

© ZOZO Technologies, Inc. 36 ࢲ͕ͨͪ೔ʑ։ൃ͢ΔΞϓϦ΁Ͳ͏׆༻Ͱ͖Δͷ͔

Slide 36

Slide 36 text

© ZOZO Technologies, Inc. 36 6*#VUUPOʹύʔςΟΫϧΛ͚ͭΔ 4DFOF,JU1BSUJDMF4ZTUFNͷϢʔεέʔε 6*#VUUPO

Slide 37

Slide 37 text

© ZOZO Technologies, Inc. 37 Ξχϝʔγϣϯͳ͠ 4DFOF,JU1BSUJDMF4ZTUFNͷϢʔεέʔε ֦େॖখΞχϝʔγϣϯ ֦େॖখύʔςΟΫϧ

Slide 38

Slide 38 text

© ZOZO Technologies, Inc. 38 ύʔςΟΫϧͷ࡞੒

Slide 39

Slide 39 text

© ZOZO Technologies, Inc. 39 4DFOF,JU4DFOF'JMFΛ௥Ճ 9DPEFҎ߱4DFOF,JU1BSUJDMF4ZTUFN TDOQϑΝΠϧ ͷςϯϓϨʔτ͸ͳ͍ 4DFOF,JUΛར༻ͨ͠1BSUJDMF4ZTUFNͷ࣮૷ํ๏

Slide 40

Slide 40 text

© ZOZO Technologies, Inc. 40 4DFOF,JUΛར༻ͨ͠1BSUJDMF4ZTUFNͷ࣮૷ํ๏ 1BSUJDMF4ZTUFNΛ௥Ճ

Slide 41

Slide 41 text

© ZOZO Technologies, Inc. 41 4DFOF,JUΛར༻ͨ͠1BSUJDMF4ZTUFNͷ࣮૷ํ๏ 4DFOFʹυϥοάυϩοϓ

Slide 42

Slide 42 text

© ZOZO Technologies, Inc. 42 ४උ׬ྃ%

Slide 43

Slide 43 text

© ZOZO Technologies, Inc. 43 4DFOF,JUΛར༻ͨ͠1BSUJDMF4ZTUFNͷ࣮૷ํ๏ 1BSUJDMFʹؔ͢Δ֤छύϥϝʔλΛઃఆ

Slide 44

Slide 44 text

© ZOZO Technologies, Inc. 44 4DFOF,JUΛར༻ͨ͠1BSUJDMF4ZTUFNͷ࣮૷ํ๏ ΠϯεϖΫλͰͷมߋ͸ଈ࣌൓ө͞ΕΔ

Slide 45

Slide 45 text

© ZOZO Technologies, Inc. 45 ஋Λௐ੔͢Δͱઌ΄ͲͷύʔςΟΫϧ͕(6*Ͱ֬ೝՄೳ 4DFOF,JUΛར༻ͨ͠1BSUJDMF4ZTUFNͷ࣮૷ํ๏

Slide 46

Slide 46 text

© ZOZO Technologies, Inc. 46 ࣮૷ํ๏

Slide 47

Slide 47 text

© ZOZO Technologies, Inc. 47 private var scnView: SCNView? private var favParticle: SCNParticleSystem? override func viewDidLoad() { super.viewDidLoad() guard let scene = SCNScene(named: "fav.scn", inDirectory: "./") else { return } let node: SCNNode = scene.rootNode.childNode(withName: "particles", recursively: true) favParticle = node.particleSystems?.first } private func addFavParticle() { let scene = SCNScene() let cameraNode = SCNNode() cameraNode.camera = SCNCamera() cameraNode.position = SCNVector3(x: 0, y: 0, z: 10) scene.rootNode.addChildNode(cameraNode) scene.rootNode.addParticleSystem(favParticle) scnView = SCNView(frame: view.bounds) view.insertSubview(scnView!, belowSubview: favButton) scnView?.scene = scene } @IBAction private func favButtonTapped() { addFavParticle() UIView.animate(withDuration: 0.6) { [weak self] in self?.scnView!.alpha = 0 } completion: { [weak self] _ in self?.scnView?.removeFromSuperview() self?.scnView = nil } }

Slide 48

Slide 48 text

© ZOZO Technologies, Inc. 48 TDOϑΝΠϧ͔ΒQBSUJDMFTΛಡΈࠐΉ private var scnView: SCNView? private var favParticle: SCNParticleSystem? override func viewDidLoad() { super.viewDidLoad() guard let scene = SCNScene(named: "fav.scn", inDirectory: "./") else { return } let node: SCNNode = scene.rootNode.childNode(withName: "particles", recursively: true) favParticle = node.particleSystems?.first } private func addFavParticle() { let scene = SCNScene() let cameraNode = SCNNode() cameraNode.camera = SCNCamera() cameraNode.position = SCNVector3(x: 0, y: 0, z: 10) scene.rootNode.addChildNode(cameraNode) scene.rootNode.addParticleSystem(favParticle) scnView = SCNView(frame: view.bounds) view.insertSubview(scnView!, belowSubview: favButton) scnView?.scene = scene } @IBAction private func favButtonTapped() { addFavParticle() UIView.animate(withDuration: 0.6) { [weak self] in self?.scnView!.alpha = 0 } completion: { [weak self] _ in self?.scnView?.removeFromSuperview() self?.scnView = nil } }

Slide 49

Slide 49 text

© ZOZO Technologies, Inc. 49 private var scnView: SCNView? private var favParticle: SCNParticleSystem? override func viewDidLoad() { super.viewDidLoad() guard let scene = SCNScene(named: "fav.scn", inDirectory: "./") else { return } let node: SCNNode = scene.rootNode.childNode(withName: "particles", recursively: true) favParticle = node.particleSystems?.first } private func addFavParticle() { let scene = SCNScene() let cameraNode = SCNNode() cameraNode.camera = SCNCamera() cameraNode.position = SCNVector3(x: 0, y: 0, z: 10) scene.rootNode.addChildNode(cameraNode) scene.rootNode.addParticleSystem(favParticle) scnView = SCNView(frame: view.bounds) view.insertSubview(scnView!, belowSubview: favButton) scnView?.scene = scene } @IBAction private func favButtonTapped() { addFavParticle() UIView.animate(withDuration: 0.6) { [weak self] in self?.scnView!.alpha = 0 } completion: { [weak self] _ in self?.scnView?.removeFromSuperview() self?.scnView = nil } } TDFOFΛੜ੒

Slide 50

Slide 50 text

© ZOZO Technologies, Inc. 50 private var scnView: SCNView? private var favParticle: SCNParticleSystem? override func viewDidLoad() { super.viewDidLoad() guard let scene = SCNScene(named: "fav.scn", inDirectory: "./") else { return } let node: SCNNode = scene.rootNode.childNode(withName: "particles", recursively: true) favParticle = node.particleSystems?.first } private func addFavParticle() { let scene = SCNScene() let cameraNode = SCNNode() cameraNode.camera = SCNCamera() cameraNode.position = SCNVector3(x: 0, y: 0, z: 10) scene.rootNode.addChildNode(cameraNode) scene.rootNode.addParticleSystem(favParticle) scnView = SCNView(frame: view.bounds) view.insertSubview(scnView!, belowSubview: favButton) scnView?.scene = scene } @IBAction private func favButtonTapped() { addFavParticle() UIView.animate(withDuration: 0.6) { [weak self] in self?.scnView!.alpha = 0 } completion: { [weak self] _ in self?.scnView?.removeFromSuperview() self?.scnView = nil } } 4$/$BNFSBΛ TDFOFͷSPPU/PEFʹ௥Ճ

Slide 51

Slide 51 text

© ZOZO Technologies, Inc. 51 private var scnView: SCNView? private var favParticle: SCNParticleSystem? override func viewDidLoad() { super.viewDidLoad() guard let scene = SCNScene(named: "fav.scn", inDirectory: "./") else { return } let node: SCNNode = scene.rootNode.childNode(withName: "particles", recursively: true) favParticle = node.particleSystems?.first } private func addFavParticle() { let scene = SCNScene() let cameraNode = SCNNode() cameraNode.camera = SCNCamera() cameraNode.position = SCNVector3(x: 0, y: 0, z: 10) scene.rootNode.addChildNode(cameraNode) scene.rootNode.addParticleSystem(favParticle) scnView = SCNView(frame: view.bounds) view.insertSubview(scnView!, belowSubview: favButton) scnView?.scene = scene } @IBAction private func favButtonTapped() { addFavParticle() UIView.animate(withDuration: 0.6) { [weak self] in self?.scnView!.alpha = 0 } completion: { [weak self] _ in self?.scnView?.removeFromSuperview() self?.scnView = nil } } QBSUJDMFΛ TDFOFͷSPPU/PEFʹ௥Ճ

Slide 52

Slide 52 text

© ZOZO Technologies, Inc. 52 private var scnView: SCNView? private var favParticle: SCNParticleSystem? override func viewDidLoad() { super.viewDidLoad() guard let scene = SCNScene(named: "fav.scn", inDirectory: "./") else { return } let node: SCNNode = scene.rootNode.childNode(withName: "particles", recursively: true) favParticle = node.particleSystems?.first } private func addFavParticle() { let scene = SCNScene() let cameraNode = SCNNode() cameraNode.camera = SCNCamera() cameraNode.position = SCNVector3(x: 0, y: 0, z: 10) scene.rootNode.addChildNode(cameraNode) scene.rootNode.addParticleSystem(favParticle) scnView = SCNView(frame: view.bounds) view.insertSubview(scnView!, belowSubview: favButton) scnView?.scene = scene } @IBAction private func favButtonTapped() { addFavParticle() UIView.animate(withDuration: 0.6) { [weak self] in self?.scnView!.alpha = 0 } completion: { [weak self] _ in self?.scnView?.removeFromSuperview() self?.scnView = nil } } TDO7JFXΛੜ੒͠ GBW#VUUPOʹJOTFSU͢Δ

Slide 53

Slide 53 text

© ZOZO Technologies, Inc. 53 private var scnView: SCNView? private var favParticle: SCNParticleSystem? override func viewDidLoad() { super.viewDidLoad() guard let scene = SCNScene(named: "fav.scn", inDirectory: "./") else { return } let node: SCNNode = scene.rootNode.childNode(withName: "particles", recursively: true) favParticle = node.particleSystems?.first } private func addFavParticle() { let scene = SCNScene() let cameraNode = SCNNode() cameraNode.camera = SCNCamera() cameraNode.position = SCNVector3(x: 0, y: 0, z: 10) scene.rootNode.addChildNode(cameraNode) scene.rootNode.addParticleSystem(favParticle) scnView = SCNView(frame: view.bounds) view.insertSubview(scnView!, belowSubview: favButton) scnView?.scene = scene } @IBAction private func favButtonTapped() { addFavParticle() UIView.animate(withDuration: 0.6) { [weak self] in self?.scnView!.alpha = 0 } completion: { [weak self] _ in self?.scnView?.removeFromSuperview() self?.scnView = nil } } TDO7JFXͷTDFOFʹ ্ड़Ͱ࡞੒ͨ͠TDFOFΛ୅ೖ

Slide 54

Slide 54 text

© ZOZO Technologies, Inc. 54 private var scnView: SCNView? private var favParticle: SCNParticleSystem? override func viewDidLoad() { super.viewDidLoad() guard let scene = SCNScene(named: "fav.scn", inDirectory: "./") else { return } let node: SCNNode = scene.rootNode.childNode(withName: "particles", recursively: true) favParticle = node.particleSystems?.first } private func addFavParticle() { let scene = SCNScene() let cameraNode = SCNNode() cameraNode.camera = SCNCamera() cameraNode.position = SCNVector3(x: 0, y: 0, z: 10) scene.rootNode.addChildNode(cameraNode) scene.rootNode.addParticleSystem(favParticle) scnView = SCNView(frame: view.bounds) view.insertSubview(scnView!, belowSubview: favButton) scnView?.scene = scene } @IBAction private func favButtonTapped() { addFavParticle() UIView.animate(withDuration: 0.6) { [weak self] in self?.scnView!.alpha = 0 } completion: { [weak self] _ in self?.scnView?.removeFromSuperview() self?.scnView = nil } } Ϙλϯλοϓ࣌ʹύʔςΟΫϧΛੜ੒

Slide 55

Slide 55 text

© ZOZO Technologies, Inc. 55 Ωϟϯϖʔϯ౰બ࣌ͷԋग़ͳͲͰ࢖͑Δࢴਧઇ΋ύʔςΟΫϧͰ؆୯ʹ࣮૷Մೳ 4DFOF,JU1BSUJDMF4ZTUFNͷϢʔεέʔε

Slide 56

Slide 56 text

© ZOZO Technologies, Inc. 56 ݸਓ։ൃ͍ͯ͠ΔͳͧͳͧΞϓϦͰ΋ಋೖ 4DFOF,JU1BSUJDMF4ZTUFNͷݸਓ։ൃΞϓϦͰͷ࢖༻ྫ

Slide 57

Slide 57 text

© ZOZO Technologies, Inc. 57 4DFOF,JUʷ6*,JUͷදݱͱ࣮૷ྫ γΣʔμʔͱෳ਺Ξχϝʔγϣϯ $ ) " 1 5 & 3 c ʁ

Slide 58

Slide 58 text

© ZOZO Technologies, Inc. 58 4DFOF,JUΛར༻ͨ͠දݱ ը૾Λը໘தԝʹදࣔ ը૾ʹޫͷ൓ࣹΞχϝʔγϣϯΛ௥Ճ

Slide 59

Slide 59 text

© ZOZO Technologies, Inc. 59 Ҿ༻IUUQTEFWFMPQFSBQQMFDPNEPDVNFOUBUJPOTDFOFLJUTDOTIBEBCMFTIBEFSNPEJGJFST

Slide 60

Slide 60 text

© ZOZO Technologies, Inc. 60 4DFOF,JU͸(-4-γΣʔμʔϓϩάϥϛϯάΛαϙʔτ͓ͯ͠Γ 4IBEFS.PEJGJFSͰ؆қతʹ(-4-ͷεχϖοτΛదԠͤ͞Δ͜ͱ ͕Մೳɻ

Slide 61

Slide 61 text

© ZOZO Technologies, Inc. 61 TIBEFS.PEJGJFST δΦϝτϦͷද໘ΛύϥϝτϦοΫʹมܗ ෳࡶͳࡐྉಛੑΛ࣋ͭΦϒδΣΫτͷද໘ΛγϛϡϨʔτ ඒ͍͠র໌ޮՌͳͲΛ௥ՃՄೳ 4DFOF,JUͷγΣʔσΟϯά͕׬ྃͨ͠ޙʹϐΫηϧΛ ޙॲཧͯ͠ಛघޮՌΛ࡞੒ Ҿ༻IUUQTEFWFMPQFSBQQMFDPNEPDVNFOUBUJPOTDFOFLJUTDOTIBEBCMF

Slide 62

Slide 62 text

© ZOZO Technologies, Inc. 62 TIBEFS.PEJGJFST "QQMFͷެࣜυΩϡϝϯτ͕ॆ࣮͍ͯͯ͠෼͔Γ΍͍͢ IUUQTEFWFMPQFSBQQMFDPNEPDVNFOUBUJPOTDFOFLJUTDOTIBEBCMF

Slide 63

Slide 63 text

© ZOZO Technologies, Inc. 63 TIBEFS.PEJGJFST Ҿ༻IUUQTEFWFMPQFSBQQMFDPNEPDVNFOUBUJPOTDFOFLJUTDOTIBEBCMF

Slide 64

Slide 64 text

© ZOZO Technologies, Inc. 64 ޫͷ൓ࣹͷ࣮૷

Slide 65

Slide 65 text

© ZOZO Technologies, Inc. 65 public class GlitterView: SCNView { let glitter = SCNNode() public override func awakeFromNib() { super.awakeFromNib() let scene = SCNScene() self.scene = scene glitter.geometry = SCNPlane(width: frame.size.width, height: frame.size.height) glitter.geometry?.firstMaterial?.diffuse.contents = UIImage(named: "iosdc") glitter.geometry?.firstMaterial?.shaderModifiers = [ .surface: surfaceShaderModifier ] glitter.geometry?.firstMaterial?.setValue(0.0, forKey: "glitter") scene.rootNode.addChildNode(glitter) } public func playAnimation() { let animation = CABasicAnimation(keyPath: "geometry.firstMaterial.glitter") animation.fromValue = 0.0 animation.toValue = 1.0 animation.duration = 0.8 glitter.addAnimation(animation, forKey: nil) } }

Slide 66

Slide 66 text

© ZOZO Technologies, Inc. 66 public class GlitterView: SCNView { let glitter = SCNNode() public override func awakeFromNib() { super.awakeFromNib() let scene = SCNScene() self.scene = scene glitter.geometry = SCNPlane(width: frame.size.width, height: frame.size.height) glitter.geometry?.firstMaterial?.diffuse.contents = UIImage(named: "iosdc") glitter.geometry?.firstMaterial?.shaderModifiers = [ .surface: surfaceShaderModifier ] glitter.geometry?.firstMaterial?.setValue(0.0, forKey: "glitter") scene.rootNode.addChildNode(glitter) } public func playAnimation() { let animation = CABasicAnimation(keyPath: "geometry.firstMaterial.glitter") animation.fromValue = 0.0 animation.toValue = 1.0 animation.duration = 0.8 glitter.addAnimation(animation, forKey: nil) } } 4$/7JFXΛαϒΫϥεʹ ΋ͭ7JFXΛ࡞੒ 7$ͳͲʹBEE4VC7JFX ͯ͠1MBZ"OJNBUJPOΛݺͿ

Slide 67

Slide 67 text

© ZOZO Technologies, Inc. 67 public class GlitterView: SCNView { let glitter = SCNNode() public override func awakeFromNib() { super.awakeFromNib() let scene = SCNScene() self.scene = scene glitter.geometry = SCNPlane(width: frame.size.width, height: frame.size.height) glitter.geometry?.firstMaterial?.diffuse.contents = UIImage(named: "iosdc") glitter.geometry?.firstMaterial?.shaderModifiers = [ .surface: surfaceShaderModifier ] glitter.geometry?.firstMaterial?.setValue(0.0, forKey: "glitter") scene.rootNode.addChildNode(glitter) } public func playAnimation() { let animation = CABasicAnimation(keyPath: "geometry.firstMaterial.glitter") animation.fromValue = 0.0 animation.toValue = 1.0 animation.duration = 0.8 glitter.addAnimation(animation, forKey: nil) } } ฏ໘ͷδΦϝτϦʹ ը૾Λදࣔ

Slide 68

Slide 68 text

© ZOZO Technologies, Inc. 68 public class GlitterView: SCNView { let glitter = SCNNode() public override func awakeFromNib() { super.awakeFromNib() let scene = SCNScene() self.scene = scene glitter.geometry = SCNPlane(width: frame.size.width, height: frame.size.height) glitter.geometry?.firstMaterial?.diffuse.contents = UIImage(named: "iosdc") glitter.geometry?.firstMaterial?.shaderModifiers = [ .surface: surfaceShaderModifier ] glitter.geometry?.firstMaterial?.setValue(0.0, forKey: "glitter") scene.rootNode.addChildNode(glitter) } public func playAnimation() { let animation = CABasicAnimation(keyPath: "geometry.firstMaterial.glitter") animation.fromValue = 0.0 animation.toValue = 1.0 animation.duration = 0.8 glitter.addAnimation(animation, forKey: nil) } } (-4-ͷεχϖοτΛ 4USJOHͰ౉͢

Slide 69

Slide 69 text

© ZOZO Technologies, Inc. 69 public class GlitterView: SCNView { let glitter = SCNNode() public override func awakeFromNib() { super.awakeFromNib() let scene = SCNScene() self.scene = scene glitter.geometry = SCNPlane(width: frame.size.width, height: frame.size.height) glitter.geometry?.firstMaterial?.diffuse.contents = UIImage(named: "iosdc") glitter.geometry?.firstMaterial?.shaderModifiers = [ .surface: surfaceShaderModifier ] glitter.geometry?.firstMaterial?.setValue(0.0, forKey: "glitter") scene.rootNode.addChildNode(glitter) } public func playAnimation() { let animation = CABasicAnimation(keyPath: "geometry.firstMaterial.glitter") animation.fromValue = 0.0 animation.toValue = 1.0 animation.duration = 0.8 glitter.addAnimation(animation, forKey: nil) } } surfaceShaderModifier

Slide 70

Slide 70 text

© ZOZO Technologies, Inc. 70 let surfaceShaderModifier = """ #pragma arguments float glitter; #pragma transparent #pragma body float t = 2 * clamp(glitter - _surface.diffuseTexcoord.y / 2, 0.0, 0.5); _surface.diffuse.rgb += float3(pow(sin(3.14159 * t), 12) / 6.0); """ (-4-εχϖοτޫͷ൓ࣹ (-4-4BOECPY IUUQTHMTMTBOECPYDPN ͔ΒҠ২ (-4-4BOECPYʹ͸ૉ੖Β͍͠γΣʔμʔͷαϯϓϧ͕ଟ਺

Slide 71

Slide 71 text

© ZOZO Technologies, Inc. 71 public class GlitterView: SCNView { let glitter = SCNNode() public override func awakeFromNib() { super.awakeFromNib() let scene = SCNScene() self.scene = scene glitter.geometry = SCNPlane(width: frame.size.width, height: frame.size.height) glitter.geometry?.firstMaterial?.diffuse.contents = UIImage(named: "iosdc") glitter.geometry?.firstMaterial?.shaderModifiers = [ .surface: surfaceShaderModifier ] glitter.geometry?.firstMaterial?.setValue(0.0, forKey: "glitter") scene.rootNode.addChildNode(glitter) } public func playAnimation() { let animation = CABasicAnimation(keyPath: "geometry.firstMaterial.glitter") animation.fromValue = 0.0 animation.toValue = 1.0 animation.duration = 0.8 glitter.addAnimation(animation, forKey: nil) } } OPEFʹ$""OJNBUJPOΛ Ճ͑ͯ׬੒

Slide 72

Slide 72 text

© ZOZO Technologies, Inc. 72 ଞʹ΋ʂ

Slide 73

Slide 73 text

© ZOZO Technologies, Inc. 73 4DFOF,JUΛར༻ͨ͠දݱ TIBEFS.PEJGJFSTΛ࢖ཱͬͯମతʹ֦େɾॖখ͢ΔΞχϝʔγϣϯ

Slide 74

Slide 74 text

© ZOZO Technologies, Inc. 74 ͜ΕΒෳ਺ΞχϝʔγϣϯΛ૊Έ߹ΘͤΔͱʜ

Slide 75

Slide 75 text

© ZOZO Technologies, Inc. 75 ෳ਺ͷγΣʔμʔ΍ΞχϝʔγϣϯΛ૊Έ߹ΘͤΔ "QQMFެࣜͷ.FNPKJεςοΧʔ 4DFOF,JUΛ࢖ͬͨ.FNPKJεςοΧʔ ͬΆ͍Ξχϝʔγϣϯ

Slide 76

Slide 76 text

© ZOZO Technologies, Inc. 77 ຊ೔ൃදͨ͠಺༰ͷαϯϓϧιʔείʔυ͸(JUʹ͋Γ·͢ IUUQTHJUIVCDPNOBUPSJOH4DFOF,JU6*4BNQMF

Slide 77

Slide 77 text

© ZOZO Technologies, Inc. 78 ·ͱΊ

Slide 78

Slide 78 text

© ZOZO Technologies, Inc. 79 4DFOF,JU͸%Λදݱ͢ΔͨΊͷϑϨʔϜϫʔΫͰ͋Γɺ ΞχϝʔγϣϯɺύʔςΟΫϧɺ෺ཧϨϯμϦϯάͳͲΛ ؆୯ʹ࣮૷Ͱ͖Δɻ

Slide 79

Slide 79 text

© ZOZO Technologies, Inc. 80 4DFOF,JUͱ6*,JUͷ਌࿨ੑ͸ߴ͘ɺ %ίϯςϯπΛѻΘͳ͍ΞϓϦͰ΋࢖༻༻్͸ଟʑ͋Δɻ

Slide 80

Slide 80 text

© ZOZO Technologies, Inc. 81 4DFOF,JUΛ࢖༻͢Δ͜ͱͰ6*,JU͚ͩͰ͸࣮ݱ͕೉͍͠දݱ͕ ՄೳͱͳΓɺΞϓϦͷΫΦϦςΟ දݱͷ࣭ ͕άοͱߴ͘ͳΔɻ

Slide 81

Slide 81 text

© ZOZO Technologies, Inc. 82 ຊ೔͝঺հͨ͠4DFOF,JUͷ࿩͸ɺ΄ΜͷҰ෦ʹա͗·ͤΜɻ 4DFOF,JUͷ͓΋͠Ζ͍࢖͍ํ͕͋Γ·ͨ͠Βڭ͍͑ͯͩ͘͞ʂ

Slide 82

Slide 82 text

© ZOZO Technologies, Inc. 83 IUUQTEFWFMPQFSBQQMFDPNEPDVNFOUBUJPOTDFOFLJU IUUQTEFWFMPQFSBQQMFDPNEPDVNFOUBUJPOTDFOFLJUTDOTIBEBCMF IUUQTHMTMTBOECPYDPN IUUQTHJUIVCDPNNBYYGSB[FS4$/4IBEFS.PEJGJFS&YBNQMFT IUUQTNBYYGSB[FSNFEJVNDPNBSLJUTDFOFLJUTIBEFSTJOUSPEG IUUQTHJUIVCDPNEFVSFMM4IBEFS.PEJGJFS-BC IUUQTEFVSFMMHJUIVCJPQPTUTTDFOFLJUTFUVQ 4XJGUJ1IPOF94ϛχήʔϜΞϓϦ։ൃೖ໳cதࢁໜ ࢀߟจݙ

Slide 83

Slide 83 text

© ZOZO Technologies, Inc. 84 ࠷ޙʹʂ

Slide 84

Slide 84 text

© ZOZO Technologies, Inc. 85

Slide 85

Slide 85 text

No content