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
ゆるWeb勉強会@札幌 紹介 2026年9月版 #seb_sapporo #ゆるWeb札幌
tacck
PRO
0
30
AWS Blocks の紹介 #AWSAmplifyJP
tacck
PRO
0
69
AWS Blocks が楽しい #ゆるWeb札幌
tacck
PRO
0
340
ゆるWeb勉強会@札幌 #31 #ゆるWeb札幌
tacck
PRO
0
98
Amplify でも Auth0 をいい感じに使いたい! - Cognito Identity Pool を使った認証情報の連携 #auth0
tacck
PRO
0
140
雑食エンジニアの生きる道〜AI時代のこれから #seb_summit
tacck
PRO
1
260
それでは聞いてください「Impeller導入に失敗しました」 #FlutterKaigi #skia
tacck
PRO
0
670
5年目から始める Vue3 サイト改善 #frontendo
tacck
PRO
3
760
Amazon Q Developer CLI でゲームと Amplify アプリを作ってみた #ゆるWeb札幌
tacck
PRO
0
91
Other Decks in Technology
See All in Technology
その Lambda、8分で 管理者権限まで奪われます
k1nakayama
7
3.7k
2026-09-18 gotanda.sre Terraformで複数環境作ったり、複数Stateに分割したりそれとTerragrunt / Terraform multi envs and multi states
masasuzu
4
740
Hermes Agentで、AIが調べて記事を書くブログを作った話
blueb
0
110
AWS FinOps Agent 結局何が得意なの?
siromi
0
170
Cloudflare Workers 向けアプリを C# で構築する ~WASM Native AOT への道~
nenonaninu
1
1.6k
Argo CDとAtlantisで実現するインフラ管理のセルフサービス化──小規模SREチームで支えるプラットフォーム
cassius7
0
160
AI 時代のスタートアップエコシステ厶から考究する技術的負債との向き合い方
m3m0r7
PRO
3
2.7k
Kiro Meetup #8 Kiro アップデート (2026/3/21〜2026/9/24)
katzueno
1
230
C#未経験の僕がAIに読めるコードを書かせるまで
maguroalternative
0
300
品質と信頼性を地続きにする
grimoh
2
1k
技術的負債から考える、AI時代のエンジニアリング投資 — ビズリーチの技術的負債と向き合った経験から、変更し続けられるソフトウェアを考える/ technical-debt-con2026
visional_engineering_and_design
4
3.8k
JSONataとAWS Step Functionsで目指すRuntimelessな世界
mu7889yoon
1
500
Featured
See All Featured
Evolving SEO for Evolving Search Engines
ryanjones
0
300
The browser strikes back
jonoalderson
0
1.7k
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
234
18k
Art, The Web, and Tiny UX
lynnandtonic
304
22k
Navigating the Design Leadership Dip - Product Design Week Design Leaders+ Conference 2024
apolaine
2
450
Crafting Experiences
bethany
1
350
Groundhog Day: Seeking Process in Gaming for Health
codingconduct
0
370
Fashionably flexible responsive web design (full day workshop)
malarkey
409
67k
エンジニアに許された特別な時間の終わり
watany
109
250k
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
56
3.5k
Product Roadmaps are Hard
iamctodd
55
13k
Site-Speed That Sticks
csswizardry
13
1.5k
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 ͓ࢠ͞Μͷษڧʹ • Ωϟϓςϯ(ΫοΫ)Λ։͍ͯɻ