Slide 1

Slide 1 text

(PPHMF/FTU)VCͰ ͪΐ·Ͳ͞Μͷ׈ઉεΩϧΛ࡞ͬͯΈͨ

Slide 2

Slide 2 text

ࣗݾ঺հʢ͕͓·Δʣ ॴଐɿגࣜձࣾΞΠΤϯλʔɹେࡕࢧళ ɹɹɹ3%ɹ೥ೖࣾ ɹɹɹεϚʔτεϐʔΧʔΤόϯδΣϦετ ɹɹɹ-*/&"1*&YQFSU ۀ຿ɿ"5-BCPɾ͕͓·Δक़ओ࠵ ɹɹɹεϚʔτεϐʔΧʔݚڀ։ൃ ɹɹɹ"84ݚڀ։ൃ ߴഅɹ޺య !HBPNBS ޷͖ͳݴ༿ɿͶ͐$MPWB ͔ͨ͏·ɹͻΖͷΓ

Slide 3

Slide 3 text

εϚʔτεϐʔΧʔΞϓϦ։ൃೖ໳ େ޷ධൃചதʂ

Slide 4

Slide 4 text

άϧʔϓਃ੥͓ئ͍͠·͢ɹN @@ N

Slide 5

Slide 5 text

ຊ୊

Slide 6

Slide 6 text

݄೔ ͕͓·Δ Ԭຊ͞Μ ۚ୩͞Μ Έͦ͞Μ τʔϧ͞Μ ༸Ұ࿠͞Μ Ճ઒͞Μ ͪΐ·Ͳ͞Μ খ৓͞Μ ΋ͬͪʔ

Slide 7

Slide 7 text

େࡕձ৔ ౦ژձ৔ ྆ձ৔͋Θ໊͍ͤͯۙࢀՃऀʂ

Slide 8

Slide 8 text

ͪΐ·Ͳ͞Μ͕׈ઉνΣοΫεΩϧΛ൸࿐

Slide 9

Slide 9 text

$MPWB%FTLΛ࢖ͬͯσϞΛ൸࿐

Slide 10

Slide 10 text

IUUQTZPVUVCF[*;45H'" σϞಈը

Slide 11

Slide 11 text

େࡕձ৔ όΧ΢έ

Slide 12

Slide 12 text

ͦͯ͠ࠓ೔ (PPHMF/FTU)VC൛Λ࡞ͬͯΈͨʂ

Slide 13

Slide 13 text

(PPHMF͔ࣾΒൃച͞ΕͨεϚʔτσΟεϓϨΠ (PPHMF/FTU)VC

Slide 14

Slide 14 text

λονૢ࡞͸Ͱ͖Δ͕ جຊ͸76*

Slide 15

Slide 15 text

*OUFSBDUJWF$BOWBTΛ࢖ͬͯ Ϧονͳදݱ͕Ͱ͖Δ

Slide 16

Slide 16 text

*OUFSBDUJWF$BOWBT͸ 7VFKTΛ͔ͭ͏͜ͱ͕Ͱ͖Δ

Slide 17

Slide 17 text

ˡ͜ͷ෦෼

Slide 18

Slide 18 text

࣮૷ํ๏ ʢ7VFKTʣ

Slide 19

Slide 19 text

JOUFSBDUJWF@DBOWBTNJOKTΛJOEFYIUNMͰݺͼग़͢ // লུ We're sorry but nesthub-demo doesn't work properly without JavaScript enabled. Please enable it to continue.

Slide 20

Slide 20 text

export default { methods: { start () { // Google Assistantʹ ʮελʔτʯ ͱ͍͏จࣈྻΛૹΔ interactiveCanvas.sendTextQuery('ελʔτ'); } } } JOUFSBDUJWF$BOWBTTFOE5FYU2VFSZͰ (PPHMF"TTJTUBOUʹૹΔ

Slide 21

Slide 21 text

export default { data () { return { seikai: '', yomi: '' } }, created () { var me = this const callbacks = { onUpdate(state) { // ໰୊ͷ஋͕ඈΜͰ͖ͨΒऔಘ͢Δ if ('katsuzetsu' in state) { me.seikai = data.katsuzetsu.seikai, me.yomi = data.katsuzetsu.yomi } }, } interactiveCanvas.ready(callbacks) } } JOUFSBDUJWF$BOWBTSFBEZͰ (PPHMF"TTJTUBOU͔ΒͷԠ౴Λ଴ͭ

Slide 22

Slide 22 text

࣮૷ํ๏ ʢ(PPHMF"TTJTUBOUʣ

Slide 23

Slide 23 text

)UNM3FTQPOTFʹද͍ࣔͤͨ͞63-Λࢦఆ͢Δ // ىಈ࣌Intent app.intent('welcome', (conv) => { conv.ask('͜Μʹͪ͸ɻ׈ઉνΣοΫΛ͠·͠ΐ͏ɻελʔτϘλϯΛԡͯͩ͘͠ ͍͞ɻ'); conv.ask(new HtmlResponse({ url: `https://{ද͍ࣔͤͨ͞ϗʔϜϖʔδͷURL}`, suppress: true })); });

Slide 24

Slide 24 text

)UNM3FTQPOTFͷEBUBʹ7VFKTʹ౉͢஋Λઃఆ͢Δ // ׈ઉνΣοΫ app.intent('MainIntent', (conv, {word}) => { const context = conv.contexts.get('game'); if (context.parameters.seikai === word) { conv.contexts.delete('game'); conv.ask(`͓ΊͰͱ͏ʂʂੌ͘׈ઉΑ͔ͬͨͰ͢Αɻɹ${context.parameters.yomi}ɹͱݴ͍ͬͯΔͷ͕͸͖ͬΓฉ ͖औΕ·ͨ͠ɻଓ͚ͯ׈ઉνΣοΫΛ͠·͔͢ʁ`); } else { conv.ask(`͍͢·ͤΜɻ׈ઉ͕ѱͯ͘ฉ͖औΕ·ͤΜͰͨ͠ɻ΋͏Ұ౓ࢼͯ͠Έ·͠ΐ͏ɻ`); conv.ask(new HtmlResponse({ url: `https://katsuzetsu-app.netlify.com/katsuzetsu`, data: { katsuzetsu: context.parameters } })); } });

Slide 25

Slide 25 text

"[VSF'VODUJPOTͰ࣮૷͠·ͨ͠

Slide 26

Slide 26 text

$ mkdir katsuzetsu-app-functions $ cd katsuzetsu-app-functions $ func init # બ୒ࢶ͕ग़ͯ͘ΔͷͰnodeͱjavascriptΛબͿ $ func new # Http triggerΛબ୒͠ɺkatsuzetsu-appͱ͍͏໊લͰ࡞੒͢Δ $ npm init -y $ npm i -s [email protected] # 2.10.0ΛೖΕΔ $ npm i -s azure-function-express # azure-function-expressΛೖΕΔ $ npm i -s express $ npm i -s firebase-admin "[VSFͷ؀ڥΛߏங

Slide 27

Slide 27 text

$ mkdir katsuzetsu-app-functions $ cd katsuzetsu-app-functions $ func init # બ୒ࢶ͕ग़ͯ͘ΔͷͰnodeͱjavascriptΛબͿ $ func new # Http triggerΛબ୒͠ɺkatsuzetsu-appͱ͍͏໊લͰ࡞੒͢Δ $ npm init -y $ npm i -s [email protected] # 2.10.0ΛೖΕΔ $ npm i -s azure-function-express # azure-function-expressΛೖΕΔ $ npm i -s express $ npm i -s firebase-admin ݄೔ʹਖ਼ࣜϦϦʔε

Slide 28

Slide 28 text

"[VSFʹσϓϩΠ

Slide 29

Slide 29 text

׬੒ͨ͠΋ͷ͕ ͪ͜Β

Slide 30

Slide 30 text

IUUQTZPVUVCFD66"JB#)G42

Slide 31

Slide 31 text

No content

Slide 32

Slide 32 text

஫ҙ఺

Slide 33

Slide 33 text

ɾ࢖͑Δ+BWBTDSJQUʹ੍ݶ͕͋ΔʢBMFSU͕࢖͑ͳ͍ʣ ɾήʔϜΧςΰϦʔʹ͠ͳ͍ͱ*OUFSBDUJWF$BOWBTػೳ͕࢖͑ͳ͍

Slide 34

Slide 34 text

IUUQTRJJUBDPNIUBLBVNBJUFNTFCDDGDBBD 2JJUBʹৄࡉهࣄΛॻ͖·ͨ͠

Slide 35

Slide 35 text

·ͱΊ

Slide 36

Slide 36 text

ɾ*OUFSBDUJWF$BOWBT࢖͏ͱϦονͳදݱ͕Ͱ͖Δ ɾ)UNM3FTQPOTFͰදࣔαΠτͷࢦఆ΍σʔλΛ౉ͤΔ ɾطଘαΠτ΋76*Խ͢Δ͜ͱ͕Մೳʂ ɾήʔϜΧςΰϦͰ͔͠*OUFSBDUJWF$BOWBT͕࢖͑ͳ͍ ɾ"[VSF'VODUJPOT͸͍͍ͧʂ

Slide 37

Slide 37 text

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