Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
APL使ってみた
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
gaomar
December 17, 2018
Technology
1.2k
1
Share
APL使ってみた
APL(Alexa Presentation Language)使ってみた。
スマートスピーカーを遊びたおす会 vol.4の登壇資料です。
gaomar
December 17, 2018
More Decks by gaomar
See All by gaomar
PAD・enebular・Lexで 交通費を確認してみた / enebular-200902
gaomar
0
240
よくあるご質問をノーコードで試してみた / enebular-210210
gaomar
0
250
enebularで湯婆婆をノーコードで実装してみた / enebular-201201
gaomar
0
1.1k
CLOVA OCRをenebularで連携してみた / yurufuwaml-201104
gaomar
0
420
会社の受付システムをenebularでやってみる / 0yenRPA-201006
gaomar
0
270
ゆるふわマシンラーニング vol.4 / yurufuwaml-200702
gaomar
0
310
Makecode Arcadeハンズオン資料 / makecodearcade-0625
gaomar
2
570
M5StickCをLINE Beacon化してみた / m5stack-200207
gaomar
0
800
スマートスピーカーミーティング 20200130 / ssmtg-200130
gaomar
0
540
Other Decks in Technology
See All in Technology
GitHub Copilot CLIでWebアクセシビリティを改善した話
tomokusaba
0
140
20260528_生成AIを専属DSに_Howの次にすべきことを考える
doradora09
PRO
0
270
最低限これだけ押さえれ大丈夫_Claude Enterprise/Team企業展開ガバナンス入門
tkikuchi
1
580
Terraformモジュールは、なぜ「魔境」化するのか
hayama17
1
130
個人の発見を、組織の知恵に 〜生成AI活用を"探索"から"組織の仕組み"へ〜
kintotechdev
2
350
AI Adaptable なテストを整える工夫 / Ways to Make Your Tests AI-Adaptable
bitkey
PRO
2
190
OpenClawとHermesAgentでAI新入社員を作った話
takanoriyanada
0
150
Platform engineering for developers, architects & the rest of us (AI agents)
danielbryantuk
0
160
AIが変えた"品質の守り方"
kkakizaki
13
5.5k
食べログのサーキットブレーカー導入を振り返って
atpons
1
160
オンコールの負荷軽減のためのBits Assistant 活用方法 / How to Use Bits Assistant to Reduce the Workload on On-Call Staff
sms_tech
1
360
Generative UI × A2UI で AI エージェントを作った話 AI-DLC も使ってみた!
kmiya84377
1
300
Featured
See All Featured
Public Speaking Without Barfing On Your Shoes - THAT 2023
reverentgeek
1
410
Odyssey Design
rkendrick25
PRO
2
650
A Soul's Torment
seathinner
6
2.9k
Ten Tips & Tricks for a 🌱 transition
stuffmc
0
120
Ethics towards AI in product and experience design
skipperchong
2
290
Put a Button on it: Removing Barriers to Going Fast.
kastner
60
4.3k
The AI Revolution Will Not Be Monopolized: How open-source beats economies of scale, even for LLMs
inesmontani
PRO
3
3.5k
Believing is Seeing
oripsolob
1
140
技術選定の審美眼(2025年版) / Understanding the Spiral of Technologies 2025 edition
twada
PRO
118
120k
What's in a price? How to price your products and services
michaelherold
247
13k
Optimising Largest Contentful Paint
csswizardry
37
3.7k
A Modern Web Designer's Workflow
chriscoyier
698
190k
Transcript
"1-ͬͯΈͨ
ࣗݾհ ॴଐɿגࣜձࣾΞΠΤϯλʔɹେࡕࢧళ ɹɹɹ3%ɹೖࣾ ɹɹɹςΫχΧϧνʔϑظؒ.71 ɹɹɹεϚʔτεϐʔΧʔΤόϯδΣϦετ ۀɿΧʔϦϯάࢧԉπʔϧ։ൃ ɹɹɹεϚʔτεϐʔΧʔݚڀ։ൃ ɹɹɹ)PMP-FOTݚڀ։ൃ ߴഅɹయ !HBPNBS
͖ͳݴ༿ɿͶ͐$MPWB ͔ͨ͏·ɹͻΖͷΓ
ࣗݾհ εϚʔτεϐʔΧʔΞϓϦ։ൃೖ େධൃചதʂ
"1-ͱ
"1- "MFYB1SFTFOUBUJPO-BOHVBHF "1-ͱ &DIP4IPX&DIP4QPUͳͲͷը໘͖σόΠεͰ ը໘ͷϨΠΞτΛ։ൃऀ͕ࣗ༝ʹσβΠϯͰ͖Δ৽͍͠σβΠϯݴޠ
"1-Λ༗ޮԽ
"1-Λ༗ޮԽ "1-Λ༗ޮԽ
"1-σβΠϯπʔϧ
"1-ͷσβΠϯϨΠΞτը໘ "1-σβΠϯπʔϧ ը໘දࣔʢϕʔλʣΛΫϦοΫ
"1-ͷσβΠϯϨΠΞτը໘ "1-σβΠϯπʔϧ छྨͷςϯϓϨʔτ͕͋Δ
"1-σβΠϯπʔϧ ϨΠΞτฤूϞʔυͱ+40/ฤूϞʔυ͕͋Δ ͜͜ͰΓସ͑Δ
දࣔϋϒ
දࣔϋϒΓସ͑ දࣔϋϒ খܕϋϒ &DIP4QPU େܕϋϒ &DIP4IPXOE தܕϋϒ &DIP4IPXTU େܕϋϒ 'JSF57
දࣔϋϒ BMFYBWJFXQPSUQSPpMFTΛΠϯϙʔτ͢Δ "import":[ { "name": "alexa-viewport-profiles", "version" : "1.0.0" }
]
දࣔϋϒ ֤ը໘ͷผ ϏϡʔϙʔτϓϩϑΝΠϧͰߦ͏ "when": "${@viewportProfile == @hubRoundSmall}" IUUQTEFWFMPQFSBNB[PODPNKBEPDTBMFYBQSFTFOUBUJPOMBOHVBHFBQMBMFYBWJFXQPSUQSPpMFTQBDLBHFIUNM @hubRoundSmallɿEcho Spot
@hubLandscapeMediumɿEcho Show (1st) @hubLandscapeLargɿEcho Show (2nd) @tvLandscapeXLargeɿFire TV
λονॲཧ
λονॲཧ ը૾λονʹԠͤ͞Δ߹ λον͢Δͱݩͷը໘ʹΓ͍ͨ
λονॲཧ 5PVDI8SBQQFS λονϥούʔ Λ͏ { "type": "TouchWrapper", "onPress": { "type":
"SendEvent", "arguments": [ "top" ] }, "item": { "type": "AlexaHeader", "headerTitle": "@skillName", "headerAttributionImage": "@skillIcon" } } ɾUZQF5PVDI8SBQQFSΛࢦఆ ɾPO1SFTTͰԠͤ͞Δ ɾBSHVNFOUTͰ͍ͨ͠ύϥϝʔλʔΛࢦఆ ɾJUFN͕Ԡ͢Δର IUUQTEFWFMPQFSBNB[PODPNKBEPDTBMFYBQSFTFOUBUJPOMBOHVBHFBQMUPVDIXSBQQFSIUNM
λονॲཧ "4, "MFYB4LJMMT,JU Ͱͷड͚औΓํ // ը໘λονॲཧ const TouchEventHandler = {
canHandle(handlerInput) { return ((handlerInput.requestEnvelope.request.type === 'Alexa.Presentation.APL.UserEvent' && (handlerInput.requestEnvelope.request.source.handler === 'Press' || handlerInput.requestEnvelope.request.source.handler === 'onPress'))); }, handle(handlerInput) { let choice = handlerInput.requestEnvelope.request.arguments[0]; var speechText = “”; if (choice === 'top') { // λΠτϧΔ speechText = “λΠτϧΔΑ”; } else if (choice === 'game_word') { // ΧʔϦϯά༻ޠදࣔ speechText = “ΧʔϦϯά༻ޠը໘ߦ͘Α”; } else { // ͦͷଞ speechText = “ͦͷଞͩΑ”; } return handlerInput.responseBuilder .speak(speechText) .getResponse(); } }; ɾUZQF"MFYB1SFTFOUBUJPO"1-6TFS&WFOU ɾIBOEMFSʹʮ1SFTTʯ͔ʮPO1SFTTʯ͕ೖΔ ɾBSHVNFOUTͷྻΛऔಘ
Ϧετॲཧ
Ϧετॲཧ ϦετΛදࣔͤ͞Δ߹
Ϧετॲཧ 4FRVFODF γʔΫΤϯε Λ͏ { "type": "Sequence", "scrollDirection": "horizontal", "data":
"${listData}", "height": "100%", "width": "100%", "numbered": true, "item": [ { … } ] } ɾUZQF4FRVFODFΛࢦఆ ɾTDSPMM%JSFDUJPOͰํΛࢦఆ IPSJ[POUBMԣ͖WFSUJDBMॎ͖ ɾEBUBͰϦετදࣔ͢ΔݩσʔλΛ͢ ɾOVNCFSFE͕USVFͳΒࣗಈ࠾൪͢Δ \PSEJOBM^ʹ࠾൪͞Ε͕ͨೖΔ IUUQTEFWFMPQFSBNB[PODPNKBEPDTBMFYBQSFTFOUBUJPOMBOHVBHFBQMTFRVFODFIUNM
"1-ద༻ํ๏
"1-ద༻ํ๏ "1-͔ΒίʔυΛॻ͖ग़͠
"1-ద༻ํ๏ EPDVNFOU෦ͱEBUB4PVSDFT෦Λ͚Δ { “document”: { … }, “dataSouces”: { …
} } return handlerInput.responseBuilder .speak(speechText) .addDirective({ type : 'Alexa.Presentation.APL.RenderDocument', version: '1.0', document: require('./document/apl_top.json'), datasources: require('./data/apl_top.json') }) .getResponse(); μϯϩʔυͨ͠KTPOϑΝΠϧ "4,Ͱͷॲཧ BEE%JSFDUJWFʹࢦఆ͢Δ
"1-ҋͷ
"1-ҋͷ ϨΠΞτΤσΟλͰฤू͍ͯ͠Δͱ ͍ͭͷؒʹ͔த͕উखʹมΘΔ
"1-ҋͷ খܕϋϒͷϨΠΞτΛฤूͯ͠ө͞Εͳ͍ͬͯࢥͬͨΒ தܕϋϒଆͷϨΠΞτΛฤू͍ͯͨ͠X
"1-ҋͷ EBUBTPVSDFT͜͏͠ͳ͍ͱΤϥʔʹͳΔ ʢ-BNCEB4VDDFTTͰฦ͖͔ͬͯͨΒ༨ܭϋϚͬͨʜʣ { "listPage": { "listData": [ { "text":
"1ͭΊ" }, { "text": "2ͭΊ" }, { "text": "3ͭΊ" } ] } } { "listData": [ { "text": "1ͭΊ" }, { "text": "2ͭΊ" }, { "text": "3ͭΊ" } ] } 0,ύλʔϯ /(ύλʔϯ
"1-ҋͷ λονॲཧ͕γϛϡϨʔλʔͱ࣮ػͰ ҧ͏IBOEMFS͕"4,ʹདྷΔ handlerInput.requestEnvelope.request.source.handler === 'Press' ࣮ػͷ߹ύλʔϯ handlerInput.requestEnvelope.request.source.handler === 'onPress'
γϛϡϨʔλʔͷ߹ύλʔϯ
"1-ҋͷ ը໘͖ͷ߹SFQSPNQU ແ͍΄͏͕͍͍ SFQSPNQU͕͋Δͱɺ੨͍όʔ͕ޫͬͯΛड͚͚Δঢ়ଶʹͳΔ XJUI4IPVME&OE4FTTJPOͰ໌ࣔతʹऴྃͤ͞ΒΕΔͷͰɺ ձΛऴྃͤ͞Δ߹ͦͪΒΛ͏
·ͱΊ
·ͱΊ ɾίϯιʔϧͷΠϯλʔϑΣʔε͔Β"1-Λ༗ޮʹ͢Δ ɾछྨͷදࣔϋϒ͕͋Δ খܕதܕେܕେܕ ɾදࣔϋϒͷผϏϡʔϙʔτϓϩϑΝΠϧΛ͏ ɾλονॲཧ5PVDI8SBQQFSΛ͏ ɾϦετॲཧ4FRVFODFΛ͏ ɾ"1-KTPOͷੜσʔλΛฤू͢͠ ɾ࣮ػͷ֬ೝඞͣߦ͏ʂ
·ͱΊ ৄࡉ2JJUBʹ·ͱΊ͍ͯ·͢ IUUQTRJJUBDPNIUBLBVNBJUFNTGEFCBE
ࠂ
ܰҪࠃࡍΧʔϦϯάબखݖେձ ʹͯలࣔ͠·͢ʂ
͝ਗ਼ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠ I — APL