Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Alexa Audio Player @Deep Diving

Alexa Audio Player @Deep Diving

haruharuharuby

October 21, 2020
Tweet

More Decks by haruharuharuby

Other Decks in Technology

Transcript

  1. View Slide

  2. 神戸

    宮古島

    オランダ


    View Slide

  3. Alexa Audio Player
    @Deep Diving

    View Slide

  4. はじめに

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


    m(_ _)m


    View Slide

  5. fmfm...

    作ってみよっかな

    おもろかったな

    Goal


    View Slide

  6. 本日持って帰ってほしいもの

    Alexa Audio Player(の仕様) 

    1インテント / 一殺 アーキテクチャ

    ノスタルジー


    View Slide

  7. 本日持って帰ってほしいもの

    Alexa Audio Player(の仕様) 

    1インテント / 一殺 アーキテクチャ

    ノスタルジー


    View Slide

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


    View Slide

  9. Alexa AudioPlayer interface

    Echo で作る音楽再生機能つきの 

    アレクサスキル を作るときに実装する 

    インターフェース。


    再生、停止、一時停止、プレイリストなど、 

    一般の音楽再生プレイヤーが持つ機能は 

    ひととおり実装が必要。 


    View Slide

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

    スキル
 モノ


    View Slide

  11. Alexa Audio Player スキル

    スキル
 モノ

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

    View Slide

  12. Alexa Audio Player のしくみ

    スキル
    Alexa Skill Kit
    モノ
    Alexa Voice
    Service
    (Amazon Echo な
    ど)
    Event
    Directive

    View Slide

  13. Alexa Audio Player のしくみ

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

    紅蓮華
    Started:
    紅蓮華
    紅蓮華を
    再生して
    再生中:
    「紅蓮華」

    View Slide

  14. Keyword

    何を再生中なのか

    スキルの中で

    覚えておかないと!


    View Slide

  15. 曲を管理する上で覚えておく

    必要があるもの

    - 状態

    - 今どの曲を再生しているか 

    - 曲の経過時間(いまどのあたりを再生しているか) 

    - 再生中の曲があるか 

    - 次に曲を自動でかけるか(プレイリスト) 

    - 曲は再生中か一時停止中かシャッフル再生中か 


    - ユーザー操作

    - 再生して

    - 止めて

    - シャッフルして

    - 次の曲

    - 前の曲

    - 二つ先


    View Slide

  16. Audio Player requests(=Event)

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

    View Slide

  17. 状態管理にはDynamoDBがオススメ

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

    View Slide

  18. Request 
 Request 

    Reference

    Reference

    Architecture 

    audio files. (s3 bucket: public)
    state management

    View Slide

  19. まとめ

    - 再生中の状態はスキル側で覚える 


    - 状態管理はDynamoDBがいいぞ 


    - 管理しないといけない状態は、Audio Player Requests をトリガーに更新 


    View Slide

  20. 本日持って帰ってほしいもの

    Alexa Audio Player(の仕様) 

    1インテント / 一殺 アーキテクチャ

    ノスタルジー


    View Slide

  21. 別に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 は、スキルの中で、インテント
    とイベントを両方管理しないといけないの
    で、必須のコード量と実装しないといけない
    ハンドラの量は多くなっちゃいます。
    一つのファイルにダーッと書いてあると
    ちょっと
    ちょっと読みづらいです。
    (※ 個人の感想です)

    View Slide

  22. Talkyjs


    View Slide

  23. Talkyjs

    Alexa Champion で AWS Samurai な 

    hide okamoto 謹製の Alexa Skill のためのフレームワーク。 


    railsライクな設計思想+CLIあり。 

    ハンドラのRouting、豊富なUtility、SSMLをJ(or T)SX で書けたり。 


    https://talkyjs.dev/ 


    View Slide

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

    View Slide

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

    View Slide

  26. まとめ

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


    View Slide

  27. 本日持って帰ってほしいもの

    Alexa Audio Player(の仕様) 

    1インテント / 一殺 アーキテクチャ

    ノスタルジー


    View Slide

  28. 夏暑いのに、人混みにいけない。山だ、海だ、キャンプだ、BBQだ、お盆
    だ、祭りだ、花火大会だー、、、今年は軒並み中止。


    ふと、目をつぶって町の音を聞くと妙に想像力が掻き立てられて、

    ちょっと別の町に行った感覚になったのを思い出した。


    そうだ。「音だけ」聞いて、他の感覚を遮断したら、ちょっとそこに(もっと)
    行った気分になれるんじゃないか?

    夏の思い出(完全版)


    View Slide

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


    View Slide

  30. 敢えて言おう!


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


    View Slide

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

    View Slide

  32. CODE & DEMO

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

    View Slide

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

    View Slide