Slide 1

Slide 1 text

No content

Slide 2

Slide 2 text

神戸
 宮古島
 オランダ


Slide 3

Slide 3 text

Alexa Audio Player @Deep Diving

Slide 4

Slide 4 text

はじめに
 本日のプレゼンテーションは、JAWS SONIC 2020 で行った JAWS-UG KOBE のセッショ ンと重複する部分があります。JAWS SONIC で セッションに参加されたかたには被る内 容がありますがご了承ください。
 
 m(_ _)m


Slide 5

Slide 5 text

fmfm...
 作ってみよっかな
 おもろかったな
 Goal


Slide 6

Slide 6 text

本日持って帰ってほしいもの
 Alexa Audio Player(の仕様) 
 1インテント / 一殺 アーキテクチャ
 ノスタルジー


Slide 7

Slide 7 text

本日持って帰ってほしいもの
 Alexa Audio Player(の仕様) 
 1インテント / 一殺 アーキテクチャ
 ノスタルジー


Slide 8

Slide 8 text

https://developer.amazon.com/en-US/d ocs/alexa/custom-skills/audioplayer-inte rface-reference.html 読んでください。


Slide 9

Slide 9 text

Alexa AudioPlayer interface
 Echo で作る音楽再生機能つきの 
 アレクサスキル を作るときに実装する 
 インターフェース。
 
 再生、停止、一時停止、プレイリストなど、 
 一般の音楽再生プレイヤーが持つ機能は 
 ひととおり実装が必要。 


Slide 10

Slide 10 text

モノとのやりとりを全部声 でやっちゃおうぜ! という世界を実現するための エコシステム。 復習:Alexa て何よ?
 スキル
 モノ


Slide 11

Slide 11 text

Alexa Audio Player スキル
 スキル
 モノ
 Audio Player のスキルは、 スキルとモノ(スマートスピー カー)の両方に 作用します。

Slide 12

Slide 12 text

Alexa Audio Player のしくみ
 スキル Alexa Skill Kit モノ Alexa Voice Service (Amazon Echo な ど) Event Directive

Slide 13

Slide 13 text

Alexa Audio Player のしくみ
 スキル Alexa Skill Kit モノ Alexa Voice Service (Amazon Echo な ど) Event Directive 何を再生中なのかは覚えておかないと。。 Play: 紅蓮華 ♫ 紅蓮華 Started: 紅蓮華 紅蓮華を 再生して 再生中: 「紅蓮華」

Slide 14

Slide 14 text

Keyword
 何を再生中なのか
 スキルの中で
 覚えておかないと!


Slide 15

Slide 15 text

曲を管理する上で覚えておく
 必要があるもの
 - 状態
 - 今どの曲を再生しているか 
 - 曲の経過時間(いまどのあたりを再生しているか) 
 - 再生中の曲があるか 
 - 次に曲を自動でかけるか(プレイリスト) 
 - 曲は再生中か一時停止中かシャッフル再生中か 
 
 - ユーザー操作
 - 再生して
 - 止めて
 - シャッフルして
 - 次の曲
 - 前の曲
 - 二つ先
 


Slide 16

Slide 16 text

Audio Player requests(=Event)
 https://developer.amazon.com/e n-US/docs/alexa/custom-skills/a udioplayer-interface-reference.ht ml#requests 「これらのイベントをスキルが受け取ったら、 スキル内で曲の再生状態を更新する」 という流れ。

Slide 17

Slide 17 text

状態管理にはDynamoDBがオススメ
 S3だと検索性が低いので、管理面で少々やりづらいです。 例えば、Alexa Skill のリクエストには、UserIdが付いているの で、それをキーにして、、 上のような感じで管理してあげると、 query しやすくてよいです。

Slide 18

Slide 18 text

Request 
 Request 
 Reference
 Reference
 Architecture 
 audio files. (s3 bucket: public) state management

Slide 19

Slide 19 text

まとめ
 - 再生中の状態はスキル側で覚える 
 
 - 状態管理はDynamoDBがいいぞ 
 
 - 管理しないといけない状態は、Audio Player Requests をトリガーに更新 


Slide 20

Slide 20 text

本日持って帰ってほしいもの
 Alexa Audio Player(の仕様) 
 1インテント / 一殺 アーキテクチャ
 ノスタルジー


Slide 21

Slide 21 text

別にDisりたいわけではないですが、、
 https://github.com/alexa/skill-samp le-nodejs-audio-player https://github.com/alexa/skill-samp le-nodejs-audio-player/blob/mainli ne/multiple-streams/lambda/src/in dex.js Audio Player は、スキルの中で、インテント とイベントを両方管理しないといけないの で、必須のコード量と実装しないといけない ハンドラの量は多くなっちゃいます。 一つのファイルにダーッと書いてあると ちょっと ちょっと読みづらいです。 (※ 個人の感想です)

Slide 22

Slide 22 text

Talkyjs


Slide 23

Slide 23 text

Talkyjs
 Alexa Champion で AWS Samurai な 
 hide okamoto 謹製の Alexa Skill のためのフレームワーク。 
 
 railsライクな設計思想+CLIあり。 
 ハンドラのRouting、豊富なUtility、SSMLをJ(or T)SX で書けたり。 
 
 https://talkyjs.dev/ 


Slide 24

Slide 24 text

インテント、イベントハンドラーがフォルダごとに別れ て、結合度が下がります。 インテント、ハンドラー単位で着脱も楽です。 ちなみに、テストのテンプレートもついてくる。

Slide 25

Slide 25 text

インテント、イベントハンドラーがフォルダごとに別れ て、結合度が下がります。 インテント、ハンドラー単位で着脱も楽です。 ちなみに、テストのテンプレートもついてくる。 ASK-SDK でやらないといけない canHandle メソッドは talkyjs がよしなにやってくれ る。 必要なのは、handlerメソッド(インテントの実行ロジッ クのみ) ※ カスタムの canHandle を実行する場合は別途必 要です。

Slide 26

Slide 26 text

まとめ
 - 1インテント(ハンドラー)/ 一殺 形式。どうでしょう? 


Slide 27

Slide 27 text

本日持って帰ってほしいもの
 Alexa Audio Player(の仕様) 
 1インテント / 一殺 アーキテクチャ
 ノスタルジー


Slide 28

Slide 28 text

夏暑いのに、人混みにいけない。山だ、海だ、キャンプだ、BBQだ、お盆 だ、祭りだ、花火大会だー、、、今年は軒並み中止。
 
 ふと、目をつぶって町の音を聞くと妙に想像力が掻き立てられて、
 ちょっと別の町に行った感覚になったのを思い出した。
 
 そうだ。「音だけ」聞いて、他の感覚を遮断したら、ちょっとそこに(もっと) 行った気分になれるんじゃないか?
 夏の思い出(完全版)


Slide 29

Slide 29 text

Audio Player をこうやって使いたい!


Slide 30

Slide 30 text

敢えて言おう!
 
 (このスキルに関しては) 画面なんて必要無いと!!!


Slide 31

Slide 31 text

10月30日(金) voicelunchjp ご都合よろしければ! https://voicelunchjp.connpass.com/event/191516/

Slide 32

Slide 32 text

CODE & DEMO
 https://github.com/jaws-ug-kobe/alexa-summer-memory

Slide 33

Slide 33 text

ありがとうございました! See you next meetup!