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
APL使ってみた
Search
gaomar
December 17, 2018
Technology
1.3k
1
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
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
250
よくあるご質問をノーコードで試してみた / enebular-210210
gaomar
0
270
enebularで湯婆婆をノーコードで実装してみた / enebular-201201
gaomar
0
1.2k
CLOVA OCRをenebularで連携してみた / yurufuwaml-201104
gaomar
0
440
会社の受付システムをenebularでやってみる / 0yenRPA-201006
gaomar
0
280
ゆるふわマシンラーニング vol.4 / yurufuwaml-200702
gaomar
0
320
Makecode Arcadeハンズオン資料 / makecodearcade-0625
gaomar
2
580
M5StickCをLINE Beacon化してみた / m5stack-200207
gaomar
0
820
スマートスピーカーミーティング 20200130 / ssmtg-200130
gaomar
0
560
Other Decks in Technology
See All in Technology
Sigmaユーザーのための有用リソース一挙公開 & Sigmaで使えるMCP #sigma_ucj /useful-resources-for-sigma-computing-users-and-mcps-with-sigma
shinyaa31
0
220
安心して変更できるWebフロントエンドの作り方
pirosikick
4
2.1k
Deployment の 先にある AI Agent 基盤 - kagent vNext、Agent Substrate、Hermes から読み解く Agent Runtime の現在地 / k8s-matsuri-2-ai-agent-platform-amsy810
masayaaoyama
3
460
Snowflakeのコスト最適化を支えるアーキテクチャ設計
ktatsuya
1
1.5k
AIエージェントの自己改善をどう設計するか / How to Design Self-Improvement for AI Agents
22mi
23
13k
Amazon Quick on DesktopがIAM Identity Centerで動かない理由
yukiogawa
0
180
事業課題から技術的負債に向き合う
sansantech
PRO
2
1.1k
AIを活用するために決めた "やらないこと" - 価値に注目する / Not betting on AI
soudai
PRO
1
490
Podは生きているのにGoだけが落ちる:GOGCとGOMEMLIMITで追うInvisible OOM Killの謎
tkc66buzz
1
700
2026-09-10 【Snowflake World Tour Tokyo 2026】dbt Core と Snowflake で実現する多層的なデータガバナンス / Multi-Layered Data Governance Powered by dbt Core and Snowflake
civitaspo
0
380
山手線を徒歩で一周してわかった、 位置情報アプリは「足」が最強のデバッガー
hinakko
0
140
Claude Code本って、 読む必要あるの?
oikon48
2
440
Featured
See All Featured
Claude Code どこまでも/ Claude Code Everywhere
nwiizo
67
58k
Unlocking the hidden potential of vector embeddings in international SEO
frankvandijk
0
930
Dealing with People You Can't Stand - Big Design 2015
cassininazir
367
27k
Code Reviewing Like a Champion
maltzj
528
40k
Producing Creativity
orderedlist
PRO
348
41k
JAMstack: Web Apps at Ludicrous Speed - All Things Open 2022
reverentgeek
1
600
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
162
16k
A better future with KSS
kneath
240
18k
ピンチをチャンスに:未来をつくるプロダクトロードマップ #pmconf2020
aki_iinuma
128
56k
Building Experiences: Design Systems, User Experience, and Full Site Editing
marktimemedia
0
600
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
16
2.2k
Measuring Dark Social's Impact On Conversion and Attribution
stephenakadiri
2
270
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