Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
フロントエンドの人に勧めるスマートスピーカースキル作成のハナシ #sacss
Search
Kihara, Takuya
PRO
October 16, 2019
Technology
650
1
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
フロントエンドの人に勧めるスマートスピーカースキル作成のハナシ #sacss
SaCSS vol.107 の発表資料。
https://connpass.com/event/147812/
Kihara, Takuya
PRO
October 16, 2019
More Decks by Kihara, Takuya
See All by Kihara, Takuya
AWS Blocks の紹介 #AWSAmplifyJP
tacck
PRO
0
62
AWS Blocks が楽しい #ゆるWeb札幌
tacck
PRO
0
190
ゆるWeb勉強会@札幌 #31 #ゆるWeb札幌
tacck
PRO
0
89
Amplify でも Auth0 をいい感じに使いたい! - Cognito Identity Pool を使った認証情報の連携 #auth0
tacck
PRO
0
130
雑食エンジニアの生きる道〜AI時代のこれから #seb_summit
tacck
PRO
1
240
それでは聞いてください「Impeller導入に失敗しました」 #FlutterKaigi #skia
tacck
PRO
0
650
5年目から始める Vue3 サイト改善 #frontendo
tacck
PRO
3
750
Amazon Q Developer CLI でゲームと Amplify アプリを作ってみた #ゆるWeb札幌
tacck
PRO
0
90
ゆるWeb勉強会@札幌 #30 #ゆるWeb札幌
tacck
PRO
0
64
Other Decks in Technology
See All in Technology
2026_devsumi_ozono.pdf
o3
3
410
AI 駆動 Terraform 開発/SRE_BizReach_MIXI_2
visional_engineering_and_design
4
2.1k
Deploying a Full-Stack Bun-Native Framework on Cloudflare Workers
7nohe
0
140
SQL文一行も書けない人事がCortexもろもろを使って人事業務を楽にしてみる
ponponmikankan
1
220
Podは生きているのにGoだけが落ちる:GOGCとGOMEMLIMITで追うInvisible OOM Killの謎
tkc66buzz
1
580
アプリログインとWeb認証基盤をつなぐ ASWebAuthenticationSession 作法
shimastripe
1
200
クロスボーダーM&AのValue Upを支えるプロダクト開発。日米チームのハブになったプロダクトエンジニアの実践 / Product Engineering Conference 2026
genda
0
120
薬剤師(ドメインエキスパート)と一緒に育てる薬局向けAIアシスタント
kakehashi
PRO
2
150
コーディングエージェントでM5Stack系の開発を少し試した時の話 / M5 Japan Tour 2026 Autumn 東京
you
PRO
0
170
KPIだけでは評価できないプロダクトが考えるべき Evalsという第二の評価系 / Beyond KPIs: Evals as a Second Evaluation Framework for Products #PdEConf
aki_iinuma
4
3.9k
コスト最適化の「めんどくさい」を AWS FinOps Agent でチョット楽にする
classmethod_kaz
0
320
Amazon Quick on DesktopがIAM Identity Centerで動かない理由
yukiogawa
0
170
Featured
See All Featured
First, design no harm
axbom
PRO
2
1.3k
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
287
14k
Stop Working from a Prison Cell
hatefulcrawdad
274
21k
State of Search Keynote: SEO is Dead Long Live SEO
ryanjones
0
270
How to build an LLM SEO readiness audit: a practical framework
nmsamuel
1
890
GraphQLの誤解/rethinking-graphql
sonatard
75
12k
SERP Conf. Vienna - Web Accessibility: Optimizing for Inclusivity and SEO
sarafernandez
2
1.6k
RailsConf 2023
tenderlove
30
1.5k
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
31
2.9k
How Fast Is Fast Enough? [PerfNow 2025]
tammyeverts
3
880
Paper Plane
katiecoart
PRO
3
53k
Bootstrapping a Software Product
garrettdimon
PRO
306
120k
Transcript
4B$44WPM !UBDDL ϑϩϯτΤϯυͷਓʹקΊΔ εϚʔτεϐʔΧʔεΩϧ࡞ͷ ϋφγ ݄
!UBDDL 4B$44WPMTBDTT ୭ • ໊લ tacck / ݪ •
ॴଐ גࣜձࣾϊʔεσΟςʔϧ • ओ࠵ • ΏΔWebษڧձ@ࡳຈ • εϚʔτεϐʔΧʔͰ༡΅͏ձ@ࡳຈ • ͖ͳϑΟΪϡΞεέʔτͷٕ εϓϨουɾΠʔάϧ
!UBDDL 4B$44WPMTBDTT εϚʔτεϐʔΧʔ
!UBDDL 4B$44WPMTBDTT εϚʔτεϐʔΧʔ • Έͳ͞Μ͍࣋ͬͯ·͔͢?
!UBDDL 4B$44WPMTBDTT ͬ͘͟ΓΈ
!UBDDL 4B$44WPMTBDTT εϚʔτεϐʔΧʔ Τϯδϯ ௨৴ ϚΠΫ εϐʔΧʔ Իೝࣝ จষղੳ Իೝࣝ
ର࡞ Ի߹
!UBDDL 4B$44WPMTBDTT εϚʔτεϐʔΧʔ Τϯδϯ ௨৴ ϚΠΫ εϐʔΧʔ Իೝࣝ จষղੳ Իೝࣝ
ର࡞ Ի߹ "MFYB ࠓͷ࣌ؒ
!UBDDL 4B$44WPMTBDTT εϚʔτεϐʔΧʔ Τϯδϯ ௨৴ ϚΠΫ εϐʔΧʔ Իೝࣝ จষղੳ Իೝࣝ
ର࡞ Ի߹ "MFYB ࠓͷ࣌ؒ ʮ"MFYBʯͱ ݺͼ͔͚ΒΕͨ ͜ͱΛೝࣝ
!UBDDL 4B$44WPMTBDTT εϚʔτεϐʔΧʔ Τϯδϯ ௨৴ ϚΠΫ εϐʔΧʔ Իೝࣝ จষղੳ Իೝࣝ
ର࡞ Ի߹ "MFYB ࠓͷ࣌ؒ ʮࠓͷ࣌ؒʯ ԻΛૹ৴
!UBDDL 4B$44WPMTBDTT εϚʔτεϐʔΧʔ Τϯδϯ ௨৴ ϚΠΫ εϐʔΧʔ Իೝࣝ จষղੳ Իೝࣝ
ର࡞ Ի߹ "MFYB ࠓͷ࣌ؒ Ի͔Β ςΩετʹม
!UBDDL 4B$44WPMTBDTT εϚʔτεϐʔΧʔ Τϯδϯ ௨৴ ϚΠΫ εϐʔΧʔ Իೝࣝ จষղੳ Իೝࣝ
ର࡞ Ի߹ "MFYB ࠓͷ࣌ؒ ʮࠓʯͷʮ࣌ؒʯ ˠݱࡏ࣌ࠁΛਘͶΒΕ͍ͯΔ ͱཧղ
!UBDDL 4B$44WPMTBDTT εϚʔτεϐʔΧʔ Τϯδϯ ௨৴ ϚΠΫ εϐʔΧʔ Իೝࣝ จষղੳ Իೝࣝ
ର࡞ Ի߹ "MFYB ࠓͷ࣌ؒ ݱࡏ࣌ࠁͷճจΛ ࡞
!UBDDL 4B$44WPMTBDTT εϚʔτεϐʔΧʔ Τϯδϯ ௨৴ ϚΠΫ εϐʔΧʔ Իೝࣝ จষղੳ Իೝࣝ
ର࡞ Ի߹ "MFYB ࠓͷ࣌ؒ ճจΛ Իʹม
!UBDDL 4B$44WPMTBDTT εϚʔτεϐʔΧʔ Τϯδϯ ௨৴ ϚΠΫ εϐʔΧʔ Իೝࣝ จষղੳ Իೝࣝ
ର࡞ Ի߹ "MFYB ࠓͷ࣌ؒ ԻΛड৴ͯ͠ ൃ ޕޙ࣌ Ͱ͢
!UBDDL 4B$44WPMTBDTT εΩϧͷ࡞Γํ
!UBDDL 4B$44WPMTBDTT εϚʔτεϐʔΧʔ Τϯδϯ ௨৴ ϚΠΫ εϐʔΧʔ Իೝࣝ จষղੳ Իೝࣝ
ର࡞ Ի߹ "MFYB ࠓͷ࣌ؒ ݱࡏ࣌ࠁͷճจΛ ࡞
!UBDDL 4B$44WPMTBDTT εϚʔτεϐʔΧʔ Τϯδϯ ௨৴ ϚΠΫ εϐʔΧʔ Իೝࣝ จষղੳ Իೝࣝ
ର࡞ Ի߹ "MFYB ࠓͷ࣌ؒ ݱࡏ࣌ࠁͷճจΛ ࡞ εΩϧ࡞ ͜͜ͷ࡞ΓࠐΈ
!UBDDL 4B$44WPMTBDTT جຊతͳߟ͑ํ • ϢʔβʔεϚʔτεϐʔΧʔʮݺͼ͔͚ʯʮ࣭ʯΛߦͳ͏ • εϚʔτεϐʔΧʔͦΕʹԠͨ͡ʮ͑ʯΛฦ͢ • ݺͼ͔͚࣌ͷݴ༿͔ΒʮҙਤʯΛͲΕ͚ͩर͑Δ͔͕ΧΪ •
Intent (ରҙਤ) • ʮͲ͏͍͏ҙਤΛ࣋ͬͨݺͼ͔͚͔ʯͱ͍͏ɺ ରͷछྨΛද͢ͷɻ • Slot (ύϥϝʔλ) • ݺͼ͔͚ͷதͷʮʯʮྔʯͱ͍ͬͨɺ มԽ͢ΔॴΛද͢ͷɻ
!UBDDL 4B$44WPMTBDTT ఱؾ༧ใͷ߹ • ʮ10݄17ʯ͕࣌Λද͢ Slot • ʮ౦ژʯ͕ॴΛද͢ Slot •
ʮఱؾΛڭ͑ͯʯ͕ձͷྲྀΕΛܾΊΔ Intent Ϣʔβʔ 10݄17ͷ౦ژͷఱؾΛڭ͑ͯɻ ໌ͷ౦ژͷఱؾಶΓͷ༧ใͰ͢ɻ εϚʔτ εϐʔΧʔ
!UBDDL 4B$44WPMTBDTT ఱؾ༧ใͷ߹ • ʮ10݄17ʯ͕࣌Λද͢ Slot • ʮ౦ژʯ͕ॴΛද͢ Slot •
ʮ࠷ߴؾԹΛڭ͑ͯʯ͕ձͷྲྀΕΛܾΊΔ Intent Ϣʔβʔ 10݄17ͷ౦ژͷ࠷ߴؾԹΛڭ͑ͯɻ ໌ͷ౦ژͷ༧࠷ߴؾԹ20℃Ͱ͢ɻ εϚʔτ εϐʔΧʔ
!UBDDL 4B$44WPMTBDTT ఱؾ༧ใͷ߹ • ʮࠓʯ͕࣌Λද͢ Slot • ʮఱؾΛڭ͑ͯʯ͕ձͷྲྀΕΛܾΊΔ Intent Ϣʔβʔ
ࠓͷఱؾΛڭ͑ͯɻ (ݱࡏҐஔࡳຈͰొࡁΈ) ࠓͷࡳຈͷఱؾΕͰ͢ɻ εϚʔτ εϐʔΧʔ
!UBDDL 4B$44WPMTBDTT Ͳ͏͍͏ड͚͑ʹ͢Δ͔ • ϢʔβʔͷΓ͍ͨ͜ͱʹର͠ɺձͷྲྀΕΛߟ͑Δɻ • ձͷྲྀΕͷத͔Β Intent (ҙਤ) Λݟ͚ͭΔɻ
• Intent ͝ͱʹɺ۩ମతͳฦͷϓϩάϥϜΛॻ͍͍ͯ͘ɻ ࠓͷఱؾ? ࡳຈͷࠓͷఱؾɺ ͘Γ ͷͪ Ε Ͱ͢ɻ
!UBDDL 4B$44WPMTBDTT ը໘͖εϚʔτεϐʔΧʔ
!UBDDL 4B$44WPMTBDTT ը໘͖σόΠε ը໘දࣔͷΈ ɹɹɹɹɹɹɹAmazon Echo Show Echo Show 5
Echo Spot APL ɹɹɹɹɹɹɹGoogle Google Nest Hub Interactive Canvas (Web) ɹɹɹɹɹɹɹLINE Clova Desk ඇެ։
!UBDDL 4B$44WPMTBDTT ϑϩϯτΤϯυΤϯδχΞͷ օ༷ʹ࿕ใ
!UBDDL 4B$44WPMTBDTT "DUJPOTPO(PPHMF *OUFSBDUJWF$BOWBT
!UBDDL 4B$44WPMTBDTT ͱλονͰૢ࡞Ͱ͖Δ 8FCΞϓϦέʔγϣϯ Ά͍ײ͡ͰεΩϧΛ࡞ΕΔ ˠීஈ࡞͍ͬͯΔͷʹʮʯΛՃ͢Δ
!UBDDL 4B$44WPMTBDTT ྫ λεΫ֬ೝΞϓϦ ɹɾ5SFMMPͷΧʔυΛݺͼग़͠ ɹɾλονͰྃ
!UBDDL 4B$44WPMTBDTT දࣔίϯςϯπ 7VFKT
!UBDDL 4B$44WPMTBDTT import axios from "axios"; export default { props:
["listId", "apiKey", "apiToken"], data: function() { return { itemsPerPageOptions: [], itemsPerPage: 5, lists: [] }; }, mounted: async function() { const response = await axios.get( `https://api.trello.com/1/lists/${this.listId}/cards? fields=all&key=${this.apiKey}&token=${this.apiToken}` ); this.lists = response.data; }, methods: { finish: function(id) { window.interactiveCanvas.sendTextQuery(`finishedTask-${id}`); } } };
!UBDDL 4B$44WPMTBDTT import axios from "axios"; export default { props:
["listId", "apiKey", "apiToken"], data: function() { return { itemsPerPageOptions: [], itemsPerPage: 5, lists: [] }; }, mounted: async function() { const response = await axios.get( `https://api.trello.com/1/lists/${this.listId}/cards? fields=all&key=${this.apiKey}&token=${this.apiToken}` ); this.lists = response.data; }, methods: { finish: function(id) { window.interactiveCanvas.sendTextQuery(`finishedTask-${id}`); } } }; TrelloͷಛఆͷList͔Β CardҰཡΛऔಘ Card ͕λοϓ͞ΕͨΒ Intent ૹ৴
!UBDDL 4B$44WPMTBDTT όοΫΤϯυ "DUJPOTPO(PPHMF
!UBDDL 4B$44WPMTBDTT 'use strict'; const axios = require('axios'); const {
dialogflow, HtmlResponse } = require('actions-on-google'); const app = dialogflow({ debug: false }); const tasksUrl = 'https://show-today-tasks.netlify.com' const currentListId = process.env.CURRENT_LIST_ID const finishedListId = process.env.FINISHED_LIST_ID const apiKey = process.env.API_KEY const apiToken = process.env.API_TOKEN // ىಈ࣌Intent app.intent('welcome', (conv) => { conv.ask('ࠓͷλεΫҰཡͰ͢ɻ֬ೝ͠·͠ΐ͏ɻ'); conv.ask(new HtmlResponse({ url: `${tasksUrl}/?listId=${currentListId}&apiKey=${apiKey} &apiToken=${apiToken}`, suppress: true }));
!UBDDL 4B$44WPMTBDTT 'use strict'; const axios = require('axios'); const {
dialogflow, HtmlResponse } = require('actions-on-google'); const app = dialogflow({ debug: false }); const tasksUrl = 'https://show-today-tasks.netlify.com' const currentListId = process.env.CURRENT_LIST_ID const finishedListId = process.env.FINISHED_LIST_ID const apiKey = process.env.API_KEY const apiToken = process.env.API_TOKEN // ىಈ࣌Intent app.intent('welcome', (conv) => { conv.ask('ࠓͷλεΫҰཡͰ͢ɻ֬ೝ͠·͠ΐ͏ɻ'); conv.ask(new HtmlResponse({ url: `${tasksUrl}/?listId=${currentListId}&apiKey=${apiKey} &apiToken=${apiToken}`, suppress: true })); දࣔίϯςϯπ͕ ը໘ʹग़ΔΑ͏ʹࢦఆ
!UBDDL 4B$44WPMTBDTT app.intent('finishedTask', async (conv, { cardId }) => {
// TrelloͷΧʔυΛྃʹҠ͢ const response = await axios.put(`https://api.trello.com/1/cards/$ {cardId}?idList=${finishedListId}&key=${apiKey}&token=${apiToken} &pos=bottom`) const now = Date.now() conv.ask('ΧʔυΛྃʹ͠·ͨ͠ɻ') conv.ask(new HtmlResponse({ url: `${tasksUrl}/?listId=${currentListId}&apiKey=${apiKey} &apiToken=${apiToken}&d=${now}`, suppress: true })); }); module.exports.fulfillment = app;
!UBDDL 4B$44WPMTBDTT app.intent('finishedTask', async (conv, { cardId }) => {
// TrelloͷΧʔυΛྃʹҠ͢ const response = await axios.put(`https://api.trello.com/1/cards/$ {cardId}?idList=${finishedListId}&key=${apiKey}&token=${apiToken} &pos=bottom`) const now = Date.now() conv.ask('ΧʔυΛྃʹ͠·ͨ͠ɻ') conv.ask(new HtmlResponse({ url: `${tasksUrl}/?listId=${currentListId}&apiKey=${apiKey} &apiToken=${apiToken}&d=${now}`, suppress: true })); }); module.exports.fulfillment = app; λοϓ͞ΕͨΧʔυΛ ྃࡁΈϦετҠಈ ࠶ɺදࣔίϯςπ͕ ը໘ʹදࣔ͞ΕΔ
!UBDDL 4B$44WPMTBDTT σϞ λεΫ֬ೝΞϓϦ ɹɾ5SFMMPͷΧʔυΛݺͼग़͠ ɹɾλονͰྃ
!UBDDL 4B$44WPMTBDTT ·ͱΊ
!UBDDL 4B$44WPMTBDTT (PPHMF/FTU)VC͍͍Α • εΩϧ։ൃʹɺطଘͷWebΞϓϦ։ൃͷ͕ࣝɺ ͔ͳΓ׆͔ͤΔɻ • ը໘͕ಈ͘ͷָ͍͠ɻ • ࣮ɺInteractive
Canvas ɺ Android ͷ Google Assistant Ͱ͑Δ! → AndroidϢʔβʔͳΒɺ͙͢ʹࢼͤΔͶ!
!UBDDL 4B$44WPMTBDTT ͦΕͧΕͷಛ • Echo • γϦʔζల։͕๛ɾຊؾग़͢ͱʮεϚʔτϗʔϜʯԽՄೳ • ը໘͖ͷ “Echo
Show 5” ͕͓खࠒ (¥9,980) • Google Home • Android ؚΊͨڧΈ • ը໘͖ͷ “Google Nest Hub” Λ࣠ʹࠓޙల։͞ΕΔͦ͏ • LINE Clova • LINE LINE Bot ͱͷ࿈ܞ͕ڧ͍(ϝοηʔδ͏ͳΒ͜Ε) • ࠓޙͷల։ɾɾɾΧʔφϏ?
!UBDDL 4B$44WPMTBDTT εϚʔτεϐʔΧʔ • Έͳ͞Μങ͍·͠ΐ͏!
!UBDDL 4B$44WPMTBDTT ମݧձΓ·͢ • 201910݄26 () • 12:00ʙ12:30 • 12:30ʙ13:00
• 13:00ʙ13:30 • 13:30ʙ14:00 • ֤ճগਓͰ࣮ࢪ༧ఆ https://play-smaspi-sap.connpass.com/event/138571/
!UBDDL 4B$44WPMTBDTT FOE
!UBDDL 4B$44WPMTBDTT ެ։༻Ճใ
!UBDDL 4B$44WPMTBDTT ΦεεϝεΩϧΛগ͠
!UBDDL 4B$44WPMTBDTT ඪ४ػೳ
!UBDDL 4B$44WPMTBDTT ֮·͕͠ΘΓʹ • ໌ͷே7࣌ʹىͯ͜͠ɻ
!UBDDL 4B$44WPMTBDTT Χοϓϥʔϝϯ࡞Γʹ • λΠϚʔ3ɻ
!UBDDL 4B$44WPMTBDTT #(.ʹ • J-POPΛ͔͚ͯɻ ※ԻָετϦʔϛϯάαʔϏεͱͷ࿈ܞ͕ผ్ඞཁ
!UBDDL 4B$44WPMTBDTT ͳΜͱͳ͘ • ໘ന͍͜ͱΛݴͬͯɻ
!UBDDL 4B$44WPMTBDTT αʔυύʔςΟεΩϧ
!UBDDL 4B$44WPMTBDTT ΰϛͷ֬ೝ • ΞϨΫαɺࡳຈ͝Έͳ͛ΧϨϯμʔΛ։͍ͯɻ
!UBDDL 4B$44WPMTBDTT ϨγϐΛௐͨΓ • ΫοΫύουΛ։͍ͯɻ
!UBDDL 4B$44WPMTBDTT ήʔϜ • κϯϏͷ·ͪΛ։͍ͯɻ
!UBDDL 4B$44WPMTBDTT ͓ࢠ͞Μͷษڧʹ • Ωϟϓςϯ(ΫοΫ)Λ։͍ͯɻ